PostgreSQL, Columnar Store 그리고 In-Memory

1.
데이타가 전략의 기본인 때입니다. 데이타분석이 알고리즘트레이딩시스템의 주요기능입니다. 데이타분석을 하기 위해 데이타분석을 위한 통계학적 라이브러리가 필요합니다. 통계라이브러리를 위한 데이타소스도 필요합니다. Shared memory를 이용한 데이타관리는 속도는 빠르지만 비용이 큽니다. 개발과 시험에 따른 시간과 노력이 많이 들어갑니다.

오래전부터 HDF5를 이용한 방법을 고민했습니다.

Market Data와 HDF5

그러다가 MongoDB도 관심을 가져보았습니다.

Python을 이용한 마켓데이타 플랫폼 구축방법

그렇지만 여러가지 이유로 실행에 옮기지 못한 채 시간이 흘렀습니다. 그리고 PostgreSQL에 관심을 가질 계기가 있었습니다. 일본 Japannext가 도입한 사례이었습니다.

Oracle vs PostgreSQL

짬을 내서 PostgreSQL을 살펴보았습니다. 일반적인 DBMS외 다른 기능이 눈에 들어오더군요. 일반 상용DBMS가 아닌 오픈소스때문이지 플러그인으로 사용할 수 있는 부가기능이 무척이나 많았습니다.

Additional Supplied Modules

Mysql이나 Oracle이 제공하는 dblink을 PostgreSQL은 플러그인을 통하여 제공하더군요.

dblink

2.
PostgreSQL을 좀더 자세히 살펴본 계기는 Colummn DB기능이었습니다. FDW를 이해하지 못한 때에 PostgrSQL이 Column DB기능을 지원하는 줄 알았습니다. 계기였던 프로젝트입니다. Citusdata가 만든 제품입니다.

Fast columnar store for analytics with PostgreSQL

일반적인 RDBMS의 데이타저장과 Column Storage가 어떻게 다른지 아마존이 소개한 Amazon Redshift Columnar storage를 보도록 하죠. 아래가 Column 방식의 저장입니다. 자세한 것은 Column-Stores vs. Row-Stores: How Different Are They Really?을 참조하세요.

03a-Rows-vs-Columns

03b-Rows-vs-Columns

Column Storage방식을 채택한 Cstore_fdw와 PostgreSQL을 비교한 도표입니다.

cstore

흥미로운 결과입니다. 물론 시험을 아직 해보지 않았습니다. 글을 읽으면서 궁금한 부분이 FDW입니다.

In 2003, a new specification called SQL/MED (“SQL Management of External Data”) was added to the SQL standard. It is a standardized way of handling access to remote objects from SQL databases. In 2011, PostgreSQL 9.1 was released with read-only support of this standard, and in 2013 write support was added with PostgreSQL 9.3.
There are now a variety of Foreign Data Wrappers (FDW) available which enable PostgreSQL Server to different remote data stores, ranging from other SQL databases through to flat file. This page list some of the wrappers currently available. Another fdw list can be found at the PGXN website.
Please keep in mind that most of these wrappers are not officially supported by the PostgreSQL Global Development Group (PGDG) and that some of these projects are still in Beta version. Use carefully!
Foreign data wrappers중에서

위의 글에서 보면 SQL/MED가 나옵니다. PostgreSQL이 정리한 SQL/MED외에 SQL/MED — A Status Report을 보면 Datalink와 Wrapper Interface 모두 SQL/MED라고 합니다. 다만 기술적인 방향이 다를 뿐입니다.

Download (PDF, 55KB)

cstore_fdw외에 흥미로운 FDW도 찾았습니다. PGcon2014에서 In-Memory Columnar Store extension for PostgreSQL로 발표한 프로젝트입니다.

IMCS (In-Memory Columnar Store)

그런데 개발자가 친숙합니다. 2004년 Memory DB를 연구(?)할 때 자주 찾았던 Fast DB를 만들었던 러시아 개발자입니다. 아마도 메모리DB에 노하우를 바탕으로 FDW를 개발한 듯 합니다. In-Memory Columnar Store extension for PostgreSQL에서 소스를 확인하실 수 있고 사용설명서는 Guide에서 확인하실 수 있습니다.

Download (PDF, 567KB)

혹 MySQL vs PostgreSQL이 궁금하면 아래를 참고로 하세요. 그런데 PostgreSQL,Cstore_FDW와 IMCS를 이용하여 마켓데이타플랫폼을 만들 수 있을까요?

MySQL vs PostgreSQL

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.