
SingleStore Universal Storageは、分析ワークロードとトランザクションワークロードの両方をサポートできる単一のテーブルです。長年にわたり、分析ワークロードとトランザクションワークロードにはそれぞれ専用のデータベースとテクノロジーが必要だと多くの人が考えていました。SingleStoreは、その考えが誤りであることを証明しました。7.5リリースでは、Universal Storageテクノロジーの第4弾として、複数列キーのサポートと、新規インストール時のデフォルトのテーブルタイプとして列ストアを追加しました。Universal Storageの主要な機能はすべて完成したことを誇りに思います。
これは、SingleStore独自の特許取得済みUniversal Storage機能について説明する4部構成の記事の最終回です。全容をご理解いただくには、パート1、パート2、パート3をお読みください。
Universal Storageの主な利点は次のとおりです。
(1) 総所有コスト(TCO)の削減。UPSERTやユニークキーの強制を必要とする一般的な操作では、データ全体をRAMに収める必要がないためです。これにより、高額になりがちな大容量のRAMを搭載したサーバーが不要になり、コスト削減につながります。
(2) 複雑さが軽減されます。行ストアで操作を実行してからデータを列ストアに移動する必要がなくなり、これまで不可能だった速度とパフォーマンスが実現します。
(3) UPSERT、一意キーの適用、高速ルックアップ、その他のOLTPスタイルの操作と組み合わせることで、大規模テーブルでの分析パフォーマンスが向上します 。これは、列ストアテーブルでは分析クエリが1コアで毎秒数億行を処理できるのに対し、行ストアではコアあたりのピークパフォーマンスが毎秒約2,000万行であるためです。
Universal Storage 7.5 の新機能
7.0、7.1、7.3リリースでは、OLTPスタイルのストレージ構造でのみ可能とされていた機能を実現するために、列ストアテーブル型を進化させました。具体的には以下の機能が含まれます。
- サブセグメント アクセス (位置がわかっている場合に 1 つまたは少数のレコードを取得するための列ストア* への高速シーク)
- 単一列ハッシュインデックス
- 単一列の一意のインデックス、制約、および主キー
- UPSERTサポート
- 列ストアをデフォルトのテーブルタイプとして設定するオプション
*この新しい列ストアテーブルタイプは、Universal Storageと呼ばれています。ただし、構文では引き続き「columnstore」と呼ばれます。
7.5 では以下がサポートされるようになりました:
- 複数列ハッシュインデックス
- 複数列の一意性
- 複数列の一意のキーを持つテーブルへのUPSERT
- 新しいクラスターのデフォルトのテーブルタイプとして列ストアをデフォルトで使用
機能面では、Universal Storageはこれで完成です。今後、表面積を増やす予定はありません。パフォーマンスは優れていますが、さらに向上させる余地がありますので、今後のリリースでの進捗にご期待ください。
例
この記事で取り上げる例は次のとおりです。
- TPC-Hの行項目テーブルに2,800万行のデータをロードする
- そのデータを、2つの列を持つ一意のキーを持つテーブルに移動する
- この一意のキーが強制されていることを示す
- このユニークなキーを検索して、それがどれだけ速いかを示します
lineitem テーブルは現実的なテーブルであり、トランザクション、分析、またはその両方を実行する eコマースアプリケーションをサポートするために使用されるテーブルに似ています。一意性の強制は、あらゆる種類のアプリケーションに共通する要件です。データベースが自動的に一意性を強制することは、データの整合性を自動的に保証し、アプリケーション開発者がアプリケーションコードで一意性を強制する必要がなくなるため、当然ながらメリットがあります。
