같은 row key, 다른 column set

Column-Family DB는 행을 먼저 묶고, 자주 함께 읽는 컬럼만 family 단위로 나눠 저장합니다.

모든 행이 같은 컬럼을 가질 필요는 없습니다. 그래서 sparse한 데이터도 자연스럽게 담을 수 있고, 조회할 때는 필요한 family만 골라 읽어 불필요한 I/O를 줄이기 쉽습니다.

저장 관점: 행마다 컬럼이 달라도 된다

row key는 같아도 각 family 안의 컬럼 수와 종류는 행마다 다를 수 있습니다. 값이 없는 속성을 억지로 채우지 않아도 됩니다.

조회 관점: family만 선택해서 읽는다

프로필 조회는 기본정보 family만, 주문 분석은 주문 family만 읽는 식으로 접근합니다. 필요한 묶음만 읽는 것이 핵심입니다.

같은 사용자 집합
프로필 조회 기본정보 family만 읽어도 충분함
주문 분석 주문 family만 스캔해 집계 가능
기본정보 family 프로필처럼 자주 함께 읽는 컬럼
주문 family 주문 내역처럼 별도 패턴으로 읽는 컬럼
user:101
name: "김민수" email: "kim@shop.io"
last_order: "A103" item_count: 3
user:102
name: "이서연" phone: "010-12**-****"
last_order: "B871"
user:103
name: "박준호"
주문 family 없음 이 행은 주문 관련 컬럼이 아직 없어도 그대로 유효합니다.

왜 분석 쿼리에 유리할까

필요한 family만 읽으면 되므로 넓은 행 전체를 스캔하지 않아도 됩니다. 자주 함께 쓰는 컬럼을 묶어 두는 설계가 조회 비용을 줄입니다.

어떤 데이터에 잘 맞을까

IoT 로그, 시계열, 대용량 쓰기처럼 행마다 속성이 들쭉날쭉하고 특정 컬럼 묶음만 반복해서 읽는 workload에 잘 맞습니다.