SingleStoreとは

SingleStoreは、インメモリの行ストアとディスク上の分析指向の列ストアを組み合わせた、拡張性に非常に優れた分散型SQLデータベースです。行ストアと列ストアが同時に機能し、ロックしないデータ構造、複数バージョンの並列処理コントロール、ロックすることのないスキップリストと組み合わせることで、SingleStoreによる従来の分析とリアルタイム分析をサポートし、データウェアハウスとETLプロセスを追加する必要性がなくなります。

SingleStoreを使う理由と用例

トランザクションデータベースと分析データウェアハウスの両方

SingleStoreは、トランザクショナル(行ストア)データベースと分析(列ストア)データウェアハウスの両方として機能するよう設計されています。この独自のテクノロジーにより、組織は行レベルの書き込みのためにトランザクショナルデータベースを、履歴分析のために分析データウェアハウスを別々に構築する必要がなくなり、ANSI SQLを使用して同じ分散型システムから書き込みと読み取りを同時に行うことができます。

リアルタイム分析

運用データをリレーショナル形式にストリーミングしながら、同時にデータを読み込む機能を利用して、SingleStoreは最新のイベントに関する洞察を見出したり、その洞察を過去のデータと比較できることになります。このアプローチにより、単一の統合データベースを使用して財務レポートをリアルタイムで入手したり、顧客と進行中のやりとりに関して洞察を得ることができます。統合されたアーキテクチャは、トランザクショナルデータベースやデータレイクから分析のために専用のデータウェアハウスにデータをコピーしなければならない、より複雑なシステムを置き換えることができます。ほとんどのリレーショナルデータベース管理システム(RDBMS)では、読み取りと書き込みを同時に行うことはできません。イベントを予測したり、戦略的な意思決定を行うために過去のリファレンスストアを提供しながら、ビジネスの継続性を分析したい組織にとって、この独自のアーキテクチャを提供するSingle Storeは魅力的なテクノロジーと言えます。

拡張性

SingleStoreは、特殊なハードウェアを必要としないことからHadoopアーキテクチャと同様の拡張が可能です。SingleStoreは、コモディティハードウェア上で直線的に拡張することができます。これにより、SingleStoreをオンプレミス、クラウド、またはマネージドサービスとして運用できます。また、SingleStoreのインスタンスはクラスタをオフラインにしなくても拡張できます。つまり、SingleStoreは、新たにパフォーマンスやストレージが必要になった時に必要なタイミングで簡単に拡張できるということです。

SingleStoreが実際に役立つ事例

運用分析またはリアルタイム分析を必要とする事例

SingleStoreは、リアルタイム分析をサポートしています。Kafka、Spark、AWS S3、またはHDFSデータパイプラインをネイティブにサブスクライブし、大規模な処理に対応します。SingleStoreにデータが取り込まれると、その分析に標準のSQLを使用できます。 このことから、不正検知システム監視Eコマースソーシャルネットワークをはじめとする、最小限のレイテンシがビジネスにとって優れた価値をもたらす事例において、SingleStoreは素晴らしいテクノロジーでしょう。

SingleStoreのコストは?

SingleStoreは、最大128GBの無料枠RAMと無制限のディスク容量、またはクラスタ内のRAM 1GBごとに課金されるエンタープライズサブスクリプションを提供しています。このサブスクリプションでは専用サポートが利用可能です。詳細については SingleStoreチームまでお問い合わせください。

コミュニティ版

SingleStoreには本番環境で使用できる無料枠が用意されており、最大128GBのRAMと無制限のディスク容量を利用できます。

SigleStoreの仕組み

SingleStoreのアーキテクチャには、速度と二重の機能性に貢献する3つの特筆すべきコンポーネントがあります。これら3つのコンポ-ネントは以下のとおりです。

  • コモディティハードウェア上の分散型、シェアード・ナッシング・アーキテクチャ
  • ハイブリッドOLTPおよびOLAPアーキテクチャ
  • ロックフリーのデータ構造

分散型のシェアード・ナッシング・アーキテクチャ

Single Storeのアーキテクチャは、多くの個別のマシン全体に分散されており、各マシンには独自のCPU、メモリ、ディスクがあります。これは、ストレージとコンピューティングリソースがシステム間で共有されていないため、一般的に「シェアード・ナッシング・アーキテクチャ」として知られています。

またSingleStoreは、コモディティハードウェア上で実行するように設計されています。つまり、SingleStoreシステムの実行には専門のハードウェアは必要ないため、SingleStoreは比較的低価格で利用できます。このアーキテクチャにより、SingleStoreの管理者は、インスタンスを安価かつ容易に拡張することができます。

SingleStore内の各ノードは、以下の2つのタイプのいずれかに分類されます。

  • アグリゲーターノードは、システム全体のインデックスなどのメタデータを保存し、ストレージノード(リーフ)のクエリ実行、結果の集約、クライアントへの結果の返信を行います。
  • リーフノードは、それぞれがより大規模なテーブルの一部を含んでいます。このノードの役割は、そのノードに配置されたデータの保存とコンピューティングです。

アプリケーションのワークロードは、アグリゲーター間で分割することができます。一つのアグリゲーターがアプリケーションAを、もう一方がアプリケーションBをそれぞれ担当します。

ハイブリッドOLTPおよびOLAPアーキテクチャ

SingleStoreには、高速かつ高可用性のクエリのためのインメモリ行ストアと、データ集約などの分析ワークロード向け、またはテーブルのサイズがメモリ制限を超えた場合のために、ディスク上の列ストアの両方が含まれています。

SingleStoreは、行ストアと列ストアの間で結合することができます。つまり、SingleStoreデータベースにクエリを実行するユーザーは、一つのクエリでリアルタイムデータと履歴データの両方を照会できます。

ロックフリーのデータ構造

多くのリレーショナルデータベースは、データ書き込みの際に格納されたテーブルを強制的に「ロック」します。これは、テーブルにデータが書き込まれているときに読み取りが同時に行われると、データ出力にばらつきが出やすいためです。たとえば、UPDATE文がSELECT文と同時にテーブルに実行されると、書き込まれたデータの半分しか読み取れないことがあります。

テーブルロックは、データ読み取りや分析用クエリの実行のためだけに専用データベースあるいはデータウェアハウスを必要とするため、データベースシステムのレイテンシを増大させます。そうなると、データは専用のETL間隔でデータベースにバッチ単位で移行されます。

SingleStoreは、ロックフリーのデータ構造、スキップリストとマルチバージョン並列処理制御(MVCC)を実装し、テーブルの更新時にデータベースをロックする必要性を排除します。こうすることで、書き込みを高スループットで行いながら、高水準の同時読み取りを維持できます。

データの種類

SingleStoreは、テーブルDDL*に基づいてデータを行あるいは列形式で保存します。また、テキスト(区切り)ファイル、JSON、Avro、地理空間データから得られる表形式データ構造とネストされたデータ構造の両方を取り込むことができます。

行の範囲(量)

SingleStoreは、十分なコンピューティング機能とストレージがあれば、10億行、ペタバイト規模のテーブルに対応できます。ただし、SingleStoreのインメモリ行ストアに相当量のスペースが必要な場合は、コストが高くなる点に注意してください。

SingleStoreの使用方法

SingleStoreの実装

SingleStoreは、オンプレミスとさまざまなクラウドプラットフォームで実装できる柔軟性を備えています。SingleStoreの実装プロセスに関する資料は、SingleStoreの開発者向けドキュメンテーションをご覧ください。

SingleStoreはODBCデータベースであり、MySQLとワイヤ互換性があるため、MySQLと互換性のあるソフトウェアならどれでもSingleStoreに接続できます。このため、MySQLからSingleStoreへの移行は非常に簡単です。MySQLからデータをSingleStoreに移行した後は、必要なステップは既存のアプリケーションでSingleStoreデータベースを指定するだけです。

新規データの処理

SingleStoreは、データを環境に取り込むためSQL標準のLOAD DATAコマンドをサポートしています。SingleStoreはMySQLに準じているため、MySQLのCLIコマンドのほか、mysqldumpといったオープンソースツールを活用してデータをSingleStoreに取り込むこともできます。さらに、SingleStoreにはパイプラインというGUIベースの読み込みツールもあるため、Amazon S3、Kafka、その他のソースからデータの取り込みも可能です。

SingleStoreは、リーフノード間にデータを均等に分散するためにシャーディングを利用しています。シャーディングとは、データベーステーブルを均等に水平分割し、分割されたデータを複数のノードに均等に分散させるプロセスのことを指します。他のデーターべースではシャーディングを手動で構成しなければならないため、データベースのリバランスが必要となります。これに対し、SingleStoreはテーブルを自動的に分割します。

メンテナンス

SingleStoreは、「ジャストインタイム」スケーリング方式で直線的に拡張できます。クラスタの稼働を停止する必要はありません。リーフノードを増やすと、クエリの応答時間が短縮され、並行処理も向上します。

注意事項

SingleStoreは比較的新しいデータベースであり、ANSI SQLとの完全な互換性はありません(現時点で、ANSI SQL-92にのみ対応。MySQLやPostgresは少なくともSQL:2003に対応しています)。

SingleStoreは、データベース最適化ツールの開発に尽力していますが、テクノロジーに関して言えば、データベースの新しい技術につきものの短所があります。また、必要なパフォーマンス水準を達成するには、リライトが必要なクエリもあります。このプロセスに関するサポートは、SingleStoreのサポートチームから受けられます。

SingleStoreの基本情報

アナリティクスを快適に

ビジネスインテリジェンス、ビッグデータ分析、顧客の360°ビュー。
Lookerはお客様のどんなニーズにもお応えします。当社のデータエキスパートにご相談ください。

デモをリクエスト