1.
요즘 해외 데이타베이스 스타트업들이 내놓는 제품을 보면 놀랍습니다. 전통적인 강자인 오라클이나 MySQL 혹은 PostgreSQL와 경쟁할 수 있는 DBMS로 성장할지 알 수 없지만 최소한 변화하는 하드웨어 성능을 수용하는 모습이 인상적입니다.
소프트웨어의 성능을 높히기 위한 하드웨어는 여러가지가 있습니다. 대표적인 것이 멀티코어 CPU입니다. 메모리도 중요합니다. In-Memory Computing도 하드웨어의 변화가 가져온 결과입니다. SSD와 같은 저장장치도 변화를 가져옵니다.예를 들어 SSD에 최적화한 DBMS로 소개하였던 Aerospike가 한 예입니다.
RDMA나 TOE도 영향을 줍니다. 이런 변화를 적극적으로 비즈니스에 적용한 것이 HFT입니다. 지난 몇 년동안 큰 흐름이었습니다. 이상에서 다루어지지 않는 분야가 있습니다 GPU입니다.
GPU와 DBMS가 만날 수 없을까요? 저는 상상이지만 어떤 이들은 이를 현실의 문제로 고민을 하였습니다. 성당 레지오야유회를 다녀와서 읽었던 GPGPU.org에 올라왔던 기사의 주인공이 그들입니다.
DeepCloud Whirlwind GPU database라는 제품입니다. 이들이 가진 장점은 아래와 같습니다.
- column based storage
- vector processing
- SSD optimized
- smart compression – Ultra fast compression and decompression on the GPU
- MySQL like API – works with many MySQL client tools
- Oracle subset dialect
- data skipping
- zone maps
- fast schema-light data loading
회사가 제공하는 자료가 적어서 GPU를 DBMS에 어떻게 적용했는지를 정확히 알 수 없습니다. 다만 베타 프로그램으로 시험을 해볼 수 있습니다.
2.
이상을 적어놓고 혹시나 해서 SQL와 GPU를 검색어로 해서 조사를 했습니다. 역시나 저는 DB의 문외한이네요. 2010년부터 Deepcloud와 비슷한 시도를 했던 경우가 있었습니다. 2010년 SQLite를 GPU에 구현하여 SQL 성능을 측정한 시도입니다.
Accelerating SQL Database Operations on a GPU with CUDA
아래는 측정한 결과를 발표한 논문입니다. 위에서 관련한 소스들을 제공합니다.
Accelerating SQL Database Operations on a GPU with CUDA: Extended Results
2012년 MIT에 재학중인 Todd Mostak이 만든 MapD가 있습니다.
Fast Database Emerges from MIT Class, GPUs and Student’s Invention
MapD의 개념입니다.
2014년 초 SQream이 만든 데이타베이스가 있었습니다. 블로그를 보니까 SQream은 Haskell을 개발언어로 많이 사용하였다고 합니다.