Cassandra 데이터 모델링: 개념적 데이터 모델
Cassandra 데이터 모델링: 개념적 데이터 모델 (Conceptual data modeling)
먼저 관계형 세계에서 이해하기 쉬운 간단한 도메인 모델을 만들고, 그 모델을 관계형 모델에서 Cassandra의 분산 해시테이블 모델로 어떻게 매핑할 수 있는지 살펴볼 거예요.
본문
다양한 데이터 구조와 설계 패턴을 보여줄 만큼은 복잡하지만, 세부사항에 파묻히지 않을 정도의 예제를 사용할게요. 모두에게 익숙한 도메인을 고르면 애플리케이션 도메인이 무엇인지 파악하는 데 시간을 쓰지 않고, Cassandra를 어떻게 다루는지에 집중할 수 있어요.
예를 들어 모두가 쉽게 이해하고 공감할 수 있는 도메인인 호텔 예약(hotel reservations) 을 사용할게요.
개념적 도메인에는 다음이 포함돼요.
- 호텔(hotels)
- 호텔에 묵는 손님(guests)
- 각 호텔의 객실(rooms) 모음
- 그 객실들의 요금(rates)과 가용성(availability)
- 손님을 위해 예약된 예약(reservations) 기록
호텔은 일반적으로 "관심 지점(points of interest)" 모음도 유지하는데, 이는 손님이 체류 중 방문하고 싶어 할 만한 공원, 박물관, 쇼핑 갤러리, 기념물 등의 장소를 말해요. 호텔과 관심 지점 모두 지리 위치(geolocation) 데이터를 유지해서, 매시업(mashup) 지도에서 찾을 수 있게 하고 거리를 계산할 수 있게 해요.
아래 그림은 Peter Chen이 대중화한 개체-관계(entity-relationship) 모델을 사용해 개념적 도메인을 나타낸 것이에요.
- 직사각형은 도메인의 개체(entity)를 나타내요.
- 타원은 그 개체의 속성(attribute)을 나타내요.
- 항목의 고유 식별자를 나타내는 속성에는 밑줄을 그어요.
- 개체 간 관계는 마름모로 나타내며, 관계와 각 개체를 연결하는 선은 관계의 다중도(multiplicity)를 보여줘요.

물론 실제 세계에서는 훨씬 더 많은 고려 사항과 복잡함이 있을 거예요. 예를 들어 호텔 요금은 악명 높을 정도로 동적이고, 이를 계산하려면 매우 다양한 요인이 필요해요. 여기에서는 흥미로울 만큼 충분히 복잡하면서도, Cassandra 학습에 집중을 유지할 수 있을 만큼 단순하게 정의하고 있어요.
이 자료는 Cassandra, The Definitive Guide에서 각색한 내용이에요. O'Reilly Media, Inc. 발행. Copyright © 2020 Jeff Carpenter, Eben Hewitt. All rights reserved. 허가를 받아 사용했어요.