반정형 데이터는 어느 정도 구조를 가지고 있지만 표 형식으로 깔끔하게 정리되지는 않습니다. JSON, XML, YAML, 이메일 헤더 등이 이 범주에 속합니다. 데이터에는 구조를 설명하는 태그나 키가 있지만, 구조는 레코드마다 다를 수 있습니다. 예를 들어, 어떤 JSON 객체에는 특정 필드가 있지만 다른 객체에는 없을 수 있습니다. XML 문서마다 요소 중첩 방식이 다를 수도 있습니다. 스키마는 유연하며, 이를 '읽기 시 스키마 적용'이라고도 합니다. 데이터를 저장할 때가 아니라 쿼리할 때 구조를 적용합니다.
반정형 데이터는 현대 애플리케이션에서 흔히 볼 수 있습니다. API는 JSON을 반환하고, 로그 파일은 키-값 쌍을 사용하며, 설정 파일은 YAML을 사용합니다. NoSQL 문서 데이터베이스는 JSON을 기본적으로 저장합니다. 이러한 유연성은 데이터 모델이 진화하거나 변경될 때 유용하지만, 분석에는 어려움을 초래하기도 합니다. 반정형 데이터를 쿼리하려면 테이블을 쿼리하는 것과는 다른 도구와 기술이 필요합니다. 중첩된 구조를 탐색하고, 누락된 필드를 처리하고, 배열을 평탄화해야 합니다. SQL 엔진은 이러한 요구에 맞춰 발전해 왔습니다. PostgreSQL, MySQL, Snowflake는 모두 JSON 함수를 지원합니다. JSON 문서를 추출하지 않고도 문서 내부를 쿼리할 수 있습니다. 정형 데이터와 반정형 데이터의 경계가 모호해지면서 그 구분 자체가 덜 중요해지고 있습니다. 중요한 질문은 데이터가 반정형인지 여부가 아니라, 데이터를 효과적으로 쿼리할 수 있는지 여부입니다.
반구조화된 형식
- JSON — 키-값 쌍, 배열, 중첩 객체
- XML — 태그된 요소, 계층 구조
- YAML — 사람이 읽기 쉬운 구성 파일
- CSV — 구분 기호는 있지만 데이터 유형 정보는 없음
- 로그 파일 — 타임스탬프가 포함된 이벤트 및 가변 필드
반정형 데이터는 중간 단계입니다. 유용하게 사용될 만큼 충분한 구조를 가지고 있으면서도, 다소 무질서해도 괜찮을 만큼 유연성을 지니고 있습니다.
Comments (2)
Leave a comment