본문 바로가기
T./Database General

[데이터베이스 분류법1]Wide Column vs. Column Oriented

by IT Journeyman 2023. 12. 31.

 

카산드라 한국 지사(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 입니다.

  1. Online - Operational, OLTP(Online transaction processing) 
  2. Analytic - DW(Datawarehouse), OLAP(Online Analytical Processing)

(Operational이라고 하는게 더 맞지만, Online이 보다 일반에 통용되는 것이라 생각하여 Online이라고 하겠습니다)

 

두번째는 Data Model에 따른 분류로 RDB vs. NoSQL이 있습니다.

  1. RDB - Relational Database, 관계형 데이터베이스
  2. NoSQL - Not Only SQL, 주로 "노~시퀄"로 발음합니다.

(그 이후에 등장한 NewSQL은 "둘 다 된다"인데, 이게 "둘 다 제대로 안된다"일 수 있습니다.)

 

마지막 세번째 분류는 DB에 Data를 Store하고 Access하는 Architecture에 따른 분류입니다.

Column Oriented는 주로  Analytic에서 사용하는 것으로 Online용 DB로는 잘 사용하지 않습니다만, 
Analytic에서는 용량을 절감하고 성능을 개선하는 획기적인 Architecture입니다.
(또 이 두 개 다 지원한다는 DB도 있습니다, Really?)

  1. Row oriented
  2. 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는

  1. 용도(Purpsose)는 주로 Online(OLTP)로 사용되고,
  2. Data Model은 Wide Column Stores(정확히는 Multi Model)이고,
  3. Data Store Architecture는 Row Oriented라고 해야 맞습니다.

그럼 Vertica는

  1. 용도는 주로 Analytic(DW/OLAP),
  2. Data Model은 RDB(관계형)이고,
  3. 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