데이터의 종류: Structured, Semi-Structured, Unstructured Data
|
구조화 정도에 따른 데이터의 종류: Structured / Semi-Structured / Unstructured
빅 데이터의 특징 중 하나인 Variety는 처리하는 데이터의 종류가 많아졌다는 것을 의미한다. 특히 구조화 정도에 따라서 데이터를 Structured, Semi-Structured, Unstructured Data로 구분한다. 과거에는 Structured Data를 중심으로 데이터를 처리하였다면, 빅 데이터 환경에서는 Unstructured Data를 처리할 필요성이 증가하였다.
Structured Data는 구조화된 데이터로 스키마를 가진 데이터베이스 테이블이 대표적이다. 테이블 스키마는 데이터가 저장되기 전에 설계한다. 따라서 실제 저장된 데이터를 직접 보지 않아도 어떠한 데이터가 저장되는지 파악할 수 있다. 이러한 방식으로 데이터가 저장되기 전에 스키마를 정의하는 방식을 Schema-on-Write라고 한다.
Semi-Structured Data는 좁은 의미와 넓은 의미로 나눌 수 있다. 좁은 의미의 Semi-Structured Data는 라벨은 있지만 고정된 스키마는 없는 데이터로 JSON, XML, CSV 형식의 파일을 의미한다. Semi-Structured Data는 일정한 구조는 있지만 라벨 또는 스키마가 없는 데이터로 확장되기도 하며, 대표적으로 로그 데이터가 있다. 로그 데이터는 자체적인 라벨과 스키마는 없지만 일정 하 형식을 가지고 있다는 점에서 Semi-Structured Data이다.
Unstructured Data는 구조나 형식이 없는 데이터로 텍스트 데이터나 미디어 데이터가 대표적이다. 관계형 데이터베이스에서 이를 저장하기 위한 BLOB, CLOB 데이터 타입이 있지만, 해당 데이터 타입으로 저장된 데이터는 검색이나 분석을 위해서 사용되지 못한다.
SQL을 사용한 데이터 처리
SQL은 기본적으로 Structured Data를 위한 질의 언어이다. 따라서 Structured Data에 대해서는 Numerical, Categorical Data를 처리하기 위한 명령이 있다. Foreign Key로 관계를 맺고 있는 테이블에 대해서는 JOIN 연산을 통해 복잡한 분석도 가능하다.
Semi-Structured Data를 SQL로 처리하기 위해서는 Schema-on-Read가 필요하다. 이는 데이터를 저장할 때 스키마가 정의되어야 하는 Schema-on-Write와 다르게 데이터를 읽을 때 스키마를 정의한다. 일정한 구조(혹은 라벨)가 있는 데이터라면 일단 저장된 이후에 해당 데이터를 읽을 때 내재한 구조를 가지고 데이터를 관리한다.
Unstructured Data를 처리하는 SQL은 기본적으로 존재하지 않는다. BLOB, CLOB 모두 데이터를 저장하고 가져오는 것만을 허용한다. 따라서 Unstructured Data는 메타데이터와 같이 Structured (or Semi-Structured) Data를 같이 저장해야 한다. NLP와 패턴 인식과 같은 기술이 Unstructured Data를 구조화를 위해 사용된다.