タグ別アーカイブ: 行指向

カラム型データベースでトランザクション処理を実現するカラクリとは? インメモリとカラム型データベースの可能性を調べる(その5) - Publickey

データベースに対する追加、更新、削除が行われると、その操作はすべてL1デルタに書き込まれます。L1デルタは行指向のデータベースと同じ構造になっており、圧縮もされず、変更内容はすべて追記されるだけなので、この書き込み処理はきわめて高速に実行されます。

そしてL1デルタに書き込んだ時点で(そしてその操作をログに書き込みが終了した時点で)、アプリケーションからは見た処理は完了します。これにより、HANAはきわめて高速にデータの追加削除更新の処理を行ったように見えます。

L1デルタに書き込まれた内容は、バックグラウンドでL2デルタに変換されます。L2デルタはカラム型データベースの形式になっており、辞書による圧縮(重複する情報の圧縮)が行われます。

L2デルタでカラム型に変換されたデータは、次にメインストアにマージされます。メインストアではさらに高度な圧縮や高速アクセスのための辞書のソート配置、列の中の特定データの位置をすぐに指し示すための転置インデックスの配置などが行われます。

L1デルタにはおおむね1万から10万件のデータが保持されることが想定され、L2デルタにはおおむね最大1000万件のデータが保持されることが想定されています。メインストアには、それ以上の全データを保存することが想定されます。L1デルタからL2デルタ、L2デルタからメインストアへの変換は、すべてマルチコアを活用したバックグラウンド処理で行われます。

これが、カラム型データストアで高速にデータの追加削除更新を行うHANAの仕組みです。

カラム型データベースに対して直接、追加削除更新などを行うのではなく、その手前に従来のデータベースと同じ行指向のデータベースを置き、そこでとりあえず高速に処理を済ませてしまう。その後バックグラウンドでカラム型データベースへ変換する。

引用元: カラム型データベースでトランザクション処理を実現するカラクリとは? インメモリとカラム型データベースの可能性を調べる(その5) - Publickey.