카산드라 한국 지사(Datastax Korea)의 Principal Data Architect로 근무할 때의 일화입니다.
제가 HP도 다녔으니 Vertica도 잘 알 것이라고 생각한 IT업계 지인이 전화로 물었습니다.
"카산드라도 Columnar라면서 이번에 xx은행에 같이 제안하면 어떨까? Vertica[1]랑 경쟁할 수 있게"
NoSQL 데이터베이스들이 난무하면서 2000년대의 NoSQL 분류가 많은 오해를 낳고 있는 듯 합니다.
우선 간단히 대답했습니다.
"카산드라는 Online용이구요, Vertica는 Analytic용으로 둘은 서로 다른 용도의 DB입니다"
(On-Prem 환경이므로 Teradata, Oracle Exadata, VMware Greenplum 같은 것을 검토하시라고 잘 말씀드렸습니다만,
결국 Computing과 Storage를 분리할 수 있는 Eon Mode로 인해 Vertica가 채택된 듯 합니다.)
그래서 "Columnar"로 인터넷을 검색하니, 온갖 혼란스러운 내용들로 어지러웠습니다.
제가 다 아는 것은 아니지만, Cassandra Certification도 두 개나 있고 카산드라 한국지사 DA로
근무했었으니, 용기를 내어 한 번 정리해 보겠습니다.(당근 제가 틀릴 수도 있고, 자주 틀립니다)
데이터베이스는 E. F. Codd[1]가 1970년대에 RDBMS 개념을 정립하면서 발전해 왔습니다.
각 시대에는 각 시대의 IT 환경과 요구사항이 있었고, 새로운 데이터베이스도 많이 생겨났습니다.
대표적인 데이터베이스 분류를 꼽아 보면 다음과 같습니다.
노파심에 또 말씀드리지만, 이 분류가 대한민국 헌법과 법률에 정해진 것이 아닙니다.
"난 Online용 DB로 Analytic 할거야, 누가 뭐래 내 맘이야"라고 하신다면, 네 하셔도 됩니다. 니 맘입니다.
요근래는 Online에서 Analytic을 돌리는 것을 "Online/Real-time Analytic"이라고 하고,
전통적인 Analytic을 Deep Analytic이라고 부르기도 합니다.(이 부분도 나중에 한 꼭지로 다루어 보겠습니다)
첫번째 데이터베이스 분류(Category)는 용도(Purpose)를 기준으로 Online vs. Analytic 입니다.
- Online - Operational, OLTP(Online transaction processing)
- Analytic - DW(Datawarehouse), OLAP(Online Analytical Processing)
(Operational이라고 하는게 더 맞지만, Online이 보다 일반에 통용되는 것이라 생각하여 Online이라고 하겠습니다)
두번째는 Data Model에 따른 분류로 RDB vs. NoSQL이 있습니다.
- RDB - Relational Database, 관계형 데이터베이스
- NoSQL - Not Only SQL, 주로 "노~시퀄"로 발음합니다.
(그 이후에 등장한 NewSQL은 "둘 다 된다"인데, 이게 "둘 다 제대로 안된다"일 수 있습니다.)
마지막 세번째 분류는 DB에 Data를 Store하고 Access하는 Architecture에 따른 분류입니다.
Column Oriented는 주로 Analytic에서 사용하는 것으로 Online용 DB로는 잘 사용하지 않습니다만,
Analytic에서는 용량을 절감하고 성능을 개선하는 획기적인 Architecture입니다.
(또 이 두 개 다 지원한다는 DB도 있습니다, Really?)
- Row oriented
- Column oriented (also known as columnar[3] or C-store)
많이들 사용하는 NoSQL의 4가지 분류는 이게 지금에 와서 무슨 소용이 있나 싶기도 합니다.
왜냐하면, 요새는 대부분 NoSQL이 Multi-model을 지원하기 때문에 Graph DB를 뺀 나머지
Key-value, Wide Column Stores, Document의 분류는 의미를 잃어 가고 있습니다.
우선 기준을 정하기 위해 Data Model은 db-engines.com의 분류[4]를 기준으로 하겠습니다.
서론이 너무 기네요, 여튼 결론을 이야기 하면, Apache Cassandra는
- 용도(Purpsose)는 주로 Online(OLTP)로 사용되고,
- Data Model은 Wide Column Stores(정확히는 Multi Model)이고,
- Data Store Architecture는 Row Oriented라고 해야 맞습니다.
그럼 Vertica는
- 용도는 주로 Analytic(DW/OLAP),
- Data Model은 RDB(관계형)이고,
- Data Store Architecture는 Column Oriented라고 해야 혼동이 적어 집니다.
다음 글에서 Wide Column Stores가 어떤 특성을 가지는 지 그리고 Column Family와 Super Column에
대해서 다뤄 보도록 하겠습니다.
끝으로 아래[5]가 용도와 데이타모델, 2가지 차원으로 데이터베이스 분류를 잘 정리한 그림입니다.

[1] Michael Stonebraker(1943 ~, Turing Award (2014))가 주도적으로 참여한 데이터베이스로 동명으로 2005로 설립되어 2011년 Hewlett Packard에 인수되었고, 다시 2017년 Micro Focus에 매각되었다가 2022년 OpentText가 Micro Focus 인수함으로 OpenText Vertica가 됩니다.
[2] E. F. Codd(Edgar Frank "Ted" Codd, 1923 ~ 2003, Turing Award (1981))
[3] Wide column store도 Columnar라고 부르기도 해서 서로 혼동하는 글들이 아주 많습니다. 참고로 RDB를 tablar라고 부르기도 합니다.(아 이렇게 이야기 하면 또 혼란이 생길 수 있겠네요. 엄밀하게는 전통적인 Table 구조로 Data Modeling하는 것을 tablar라고 부릅니다.)
[4] 왼쪽이 db-engines.com의 Data Model 분류

[5] William Blair Equity Research(https://www.williamblair.com/Equity-Research))에서 발간한 Database Market Update 2021로 여지껏 본 자료 중에서 데이터베이스를 잘 이해하고 쓴 가장 훌륭한 리포트라고 생각합니다. 강추!
Equity Research | William Blair
William Blair analysts seek to cover only companies that have above-average growth prospects and above-average quality. They use multiple factors to identify high-quality companies with attractive growth prospects, including the company’s product line, l
www.williamblair.com