나의 잡다한 노트 및 메모

Nested Data 란? 본문

DB

Nested Data 란?

peanutwalnut 2025. 3. 2. 20:50

 

Nested Data (중첩 데이터)란?

Nested Data(중첩 데이터)란, 하나의 데이터 필드(컬럼) 내에 리스트(List), 맵(Map), 또는 다른 구조체(객체)가 포함된 데이터를 의미합니다.
즉, 테이블처럼 평평(flat)한 데이터 구조가 아니라, 여러 계층을 가지는 데이터 구조입니다.

 

1. Nested Data 예시

✅ JSON 형태의 Nested Data

{
  "id": 1,
  "name": "Alice",
  "address": {
    "city": "New York",
    "zipcode": "10001"
  },
  "phones": ["123-456-7890", "987-654-3210"]
}
 
 
  • address 필드는 객체(Object) 타입이며, 내부에 city와 zipcode 필드가 있음.
  • phones 필드는 리스트(List) 타입이며, 여러 개의 전화번호를 포함.

2. Nested Data와 Flat Data 차이

구분Nested Data (중첩 데이터)Flat Data (평평한 데이터)

데이터 구조 계층적(Hierarchical), 중첩된 필드 포함 모든 필드가 개별적인 행/열로 분리됨
예시 { "user": { "name": "Alice", "age": 25 } } name="Alice", age=25
저장 방식 JSON, Avro, Parquet 같은 형식에서 사용됨 일반적인 SQL 테이블 형식
장점 데이터 표현이 유연하고 직관적임 검색 및 인덱싱이 빠름
단점 일반적인 SQL에서 다루기 어려움 데이터 관계를 명확히 표현하기 어려움

 

 

3. Nested Data를 다룰 때 고려할 점

  1. SQL에서 직접 사용하기 어려움
    • 일반적인 관계형 데이터베이스(PostgreSQL, MySQL 등)에서는 중첩 데이터를 직접 저장하기 어렵기 때문에, JSON 또는 배열 타입을 사용해야 합니다.
    • 예: PostgreSQL의 JSONB 타입을 사용하면 일부 중첩 데이터를 처리 가능.
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name TEXT,
    address JSONB
);

 

INSERT INTO users (name, address)
VALUES ('Alice', '{"city": "New York", "zipcode": "10001"}');

 

 

 

  • **Nested Data(중첩 데이터)**는 JSON, Avro, Parquet 같은 비정형 데이터 저장 형식에서 자주 사용됨.
  • SQL 기반 시스템에서는 JSON 타입 또는 별도 컬럼 분해(Flattening) 방식으로 저장해야 함.
  • Druid에서는 flattenSpec을 활용하여 자동으로 중첩 데이터 처리 가능.
  • Parquet과 같은 컬럼 저장 형식은 Nested Data를 자연스럽게 지원하지만, Druid에 적재할 때는 Flattening이 필요할 수 있음.

 

 

 

'DB' 카테고리의 다른 글

MOLAP와 ROLAP  (0) 2025.03.10
비정규화(denormalization)  (0) 2025.03.07
DB Connection  (0) 2025.02.17
DB 관련 직업들과 역할  (0) 2025.02.13
OLTP DB vs OLAP DB ( 예시 쿼리 )  (0) 2025.02.11