BT

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

| 作者: Abel Avram フォローする 7 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2012年10月18日. 推定読書時間: 2 分 |

原文(投稿日: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ミリ秒だ。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT