BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 列指向データベース向けライブラリ Google Supersonic

列指向データベース向けライブラリ Google Supersonic

原文(投稿日:2012/10/16)へのリンク

 

Supersonicは列指向データベース用のクエリエンジンライブラリで、データ転送プリミティブ型を提供する。Googleによれば、このライブラリは“キャッシュを上手く使うアルゴリズム、SIMD、ベクトル化処理を利用して、高度にパイプライン化されたCPUを活用する”ために“超高速”で動作する。特徴は、

  • キャッシュの利用
  • SIMD(Single Instruction Multiple Data)の利用
  • カスタムのデータ構造
  • 障害のハンドリング
  • 標準的な列指向処理のサポート
  • 特殊な式

Supersonicは多くの操作をサポートする。操作はテーブル全体に適用される。また、操作木を構成することもできる。

  • 集約: SUM、MIN、MAX、COUNT、CONCAT、FIRST、LAST
  • 計算 – 式を操作に変換する
  • フィルタ – 行をフィルタする
  • 生成 – 一定数のゼロ列の行を生成する
  • 制限 – 前の操作の結果の行数を制限する
  • 並べ替え – 前の操作の結果を並び替える

操作とは違い、は行レベルに適用して列の値の計算を実行できる。また、式木を構成することも出来る。次のような式がある。

  • 終端 – ConstInt32、ConstBool、ConstDataType、RandInt32などのプリミティブな型を持つノード
  • 演算 – Plus、Minus、Multiplyなど
  • 比較演算 – Equal、Less、Greater、IsOdd
  • 日付/時間 – Now、Day、Month、Year、Hour、Minute、Second、AddDaysなど
  • 論理演算 – And、Or、AndNot、Xor、Not
  • 制御フロー – If、IsNull、IfNull、Case
  • 数値計算 – Exp、Sin、Cos、Abs、Round、Floor、Trunk、Sqrt、Powerなど
  • 文字列 – ToString、Concat、Length、Trimなど

SupersonicはC++で書かれており、組み込みのデータストレージフォーマットを持っていないが、“ぜひ作成したい”と考えている。現時点ではデータはメモリ上に保持される。

Supersonic Query EngineのライセンスはApache License 2.0Google Codeからダウンロード可能。ソースには操作と式の使い方を示したたくさんのが含まれている。

画像はSupersonicチームが作成した投稿したもので、操作木のベンチマーク結果を表している。100万行を含むひとつのテーブルを処理した場合は、表示に60マイクロ秒で167億/秒、フィルタに1.03ミリ秒で100行/秒、次の計算処理が25マイクロ秒で4120万行/秒、他のフィルタと結合処理をして、全体でかかった時間が22.1ミリ秒だ。

 

この記事に星をつける

おすすめ度
スタイル

BT