HTAPデータベースの代表的製品で、OLTPとOLAPを単一のテーブルで処理できる革新的なアーキテクチャのSingleStore。
前回の記事では、SingleStoreがAIアプリケーション用データベースとして最適な理由について、SingleStoreの投資家が語った内容を紹介しました。
では、AI向け以外では、SingleStoreはどのような用途に適しているのでしょうか。
AI向け以外でSingleStoreが最も適した用途
AI向け以外でSingleStoreが最も適した用途は、リアルタイム取り込み・リアルタイム分析が必要な用途になります。
すなわち、フレッシュなデータをガンガン取り込み、取り込んだ最新データを元にその場で分析するような用途です。前回の記事でも紹介しましたが、以下がその例の一部になります。
- 不正検出
- ダイナミックな価格設定
- オファーのパーソナライゼーション
- 運用テレメトリ
- 物流最適化
- 運用ダッシュボード
- IoT分析
- etc
実際にSingleStoreのユースケースサイトでは、上記用途を含めた様々な顧客事例が紹介されています。
データは生魚と同じで時間が経って鮮度が落ちると価値が低下します。いかに高い価値を保持している状態で分析できるかが企業の命運を分ける時代に突入しているといえます。
なぜ従来のデータウェアハウスでは実現できないのか
では、なぜ従来のデータウェアハウスではリアルタイム取り込み・リアルタイム分析ができないのでしょうか。
クラウド型のデータウェアハウス製品では、メインのストレージとしてオブジェクトストレージを使用しています。そして、データの書き込みはオブジェクトストレージに書き終わって初めて書き込み完了となります。つまり、どうしても書き込みの遅延が高くなります。
これでは、リアルタイムにストリーミング的にデータを取り込むのが困難であることが容易に想像できるでしょう。そして、リアルタイムに取り込めなければリアルタイムに分析することも不可能なのです。
なぜSingleStoreは実現できるのか
では、なぜSingleStoreはリアルタイム取り込み・リアルタイム分析を実現できるのでしょうか。その理由について説明していきましょう。
まず前提として、SingleStoeは分散データベースになります。クエリを受け付けるアグリゲーターノードと、実際にクエリを処理してデータを格納するリーフノードの2種類のノードで構成されています(画像はSingleStoreのドキュメントサイトから拝借)。
この分散データベースのSingleStoreがリアルタイム取り込み・リアルタイム分析を実現できる理由は、SingleStoreの特許でもある革新的な3層アーキテクチャのUniversal Storageにあります。
1. メモリ
まず、データは高速なメモリ上にOLTP(トランザクション)に適した行ストアとして格納されます。そして、コミットするとメモリ上にトランザクションログが書き込まれますが、トランザクションログは即座にペアとなっているリーフノードのメモリにコピーされ、この時点で書き込み完了となります。つまり、メモリ上だけで書き込みが完了しているので超高速なのです!その後に非同期で(といっても数ミリ秒後)ディスクにトランザクションログが書き込まれます。
トランザクションログはペアとなっているリーフノードにコピーされているので、ディスク書き込み前に片方のリーフノード障害が発生してもデータは保護されます。
2. 永続キャッシュ(ディスク)
メモリ上にデータがある程度たまった時点で、今度はディスク上にOLAP(分析)に適した列ストアとして、ディスクが得意なシーケンシャルI/Oで高速に書き出されます。これよって高速な分析が可能となります。
3. 無制限ストレージ(オブジェクトストレージ)
最後にディスク上に書き出されたファイルは非同期で容量無制限のオブジェクトストレージにコピーされます。リーフノードのディスク容量(永続キャッシュ)がいっぱいになると、アクセス頻度の低いデータ(コールドデータ)はディスクから削除され、オブジェクトストレージにのみ存在する状態となります。
つまり、データの鮮度が高いものから メモリ > ディスク > オブジェクトストレージ と階層的、かつ、それぞれの処理に最適な形式で保持されるという非常に合理的な仕組みになっているのです。
他のHTAPデータベースと何が違うのか?
世の中には、OTLPとOLAPをひとつのデータベースで処理できるHTAP(Hybrid Transactional/Analytical Processing)を謳うデータベースが他にも存在します。そういったデータベースとSingleStoreは何が違うのでしょうか?
ほとんどのHTAPデータベースは、OLTPに適した行ストア形式のテーブルとOLAPに適した列ストア形式のテーブルを2つ持ち、両者の間でデータをコピーして同期しています。つまり、データを重複して持つので容量が2倍必要になります。これは、特にインメモリでテーブルを保持するタイプのHTAPデータベースの場合には高価なメモリが大量に必要になり多大なコストに直結します。
SingleStoreは違います。上記のアーキテクチャで説明したように、SingleStoreは1つのテーブルでデータの鮮度に応じて行ストアと列ストアを自動で変換して保持しています。そのため、データを2重に持つという無駄なことをしていませんし、データの鮮度に応じて最適なコストのストレージ媒体に保持しています(しかも圧縮して)。非常に合理的かつ革新的ですよね!
その他にも、列ストアなのに行ロックによるアップサートが可能といった革新的な機能がいろいろとあるのですが、詳細はおいおい紹介していきたいと思います。
まとめ
いろいろと小難しい話をしてしまいましたが、この記事では リアルタイム取り込み・リアルタイム分析といえばSingleStore! とだけ覚えていただければ大丈夫です。
他にも、SingleStoreがデータベース統合に最適な理由について紹介した記事を書いています。
SingleStoreを試してみたくなった方は、以下の記事をご参照ください。


