今日も読んだ記事まとめですが、Snowflake Unistore から HTAP の方に手が伸びました。
Unistore -> An evolutionary workload of Snowflake
まだプライベートプレビュー段階のようですが、Snowflake の Unistore についての紹介記事です。OLTPとOLAP(従来のSnowflakeの用途)にどちらも対応できるように Snowflake の列志向テーブルとは別に行志向テーブルを用意し、トランザクションやプライマリキー・外部キーなど、OLTPが備えるべき機能を備えたデータベースです。
Snowflakeの通常のコネクタが利用できるものの、データ量が単純計算で2倍になることや、従来のSnowflakeテーブルとは違って数テラバイトのデータ容量制限があると記載されています。
業務DBに対して分析クエリを投げたい場面はあると思いますが、データベースに負荷をかけてトランザクション処理に影響を及ぼすことは避けたいです。Unistore であれば OLTP 用の業務 DB として利用しながら、Snowflake の仮想 Warehouse 機能で分析クエリを実行できるでしょう。データパイプラインを考えても、Snowflake にすでに元データがあるようなものなので取り扱いがしやすそうです。
OLAP と OLTP のどちらのニーズにも応えると聞くと新しいように思えますが、実は 2014年ごろから HTAP (Hybrid Transactional and Analytical Processing) という概念があります。僕が前職に入ったのが2013年で、その頃社内では論文輪読会が盛んで、その題材になった記憶が薄らあります。。復習がてら HTAP を深掘りしてみます。
HTAP (Hybrid Transactional and Analytical Processing)
HTAP の元となる考え方は SIGMOD 2009年の以下の論文に掲載されていて、ガートナー社によって HTAP (Hybrid Transactional and Analytical Processing) と名づけられたのが2014年ということです。
A Common Database Approach for OLTP and OLAP Using an In-Memory Column Database: http://www.sigmod09.org/images/sigmod1ktp-plattner.pdf
今日はこの論文のイントロだけ読みました。データが小さい時は OLTP, OLAP は分かれておらず、ビジネスが複雑化するにしたがってデータベースは OLTP に特化し、OLAP は OLTP からのデータを複製する形でスタースキーマや列志向DBとして特化して構築されていくようになったという歴史が説明されています。論文ではその後に突然、こう書かれています:
I always believed the introduction of so-called data warehouses was a compromise.
淡々と歴史が語られる中で、突然筆者の思いが投げ込まれてびっくりしてしまいました。そしてこのデータの分離によるデータアーキテクチャの複雑性とか、もっと簡単に言えばデータ利用までのタイムラグをどうにか解消できないか、というテーマで書かれた論文です。技術的には、OLTP のトランザクション処理をインメモリ列志向DBを利用して行えないか、といった研究です。
HTAP 製品: TiDB
HTAP 製品として有名なものに TiDB があり、上記ページではその動作概要について説明されています。行志向と列志向の2つの特性を備えたDBを、Raft アルゴリズムによって複製させます。この処理は非同期的に行われるようですが、Raft アルゴリズムによって最新のデータが読み込めることが保証されています。
ユースケースとして2つ紹介されていて、1つはリアルタイムデータウェアハウジング。他のOLTPデータベースから同期させ、リアルタイムでのデータ活用のためのデータウェアハウスとして利用します。
2つ目はトランザクション処理と分析処理のワンストップデータベース。例えば MySQL (OLTP) と Hadoop (OLAP) の2つのデータベースを日毎にデータ移動するのではなく、TiDB としてまとめることでアーキテクチャをシンプルにすることができます。
Snowflake の Unistore も OLTP, OLAP データベース間でデータを複製するという記載があるため、概念レベルだと Snowflake の Unistore とほぼ同じ製品だと考えられそうです。
TiDB はオープンソース版も存在しますが、HTAP 製品は他にも IBM Db2, Google Cloud の AlloyDB for PostgreSQL などがあります。
Raft アルゴリズム
丁寧に Raft アルゴリズムについて解説されている記事です。論文を読んだ後に読んでみようと思います。