オンメモリデータ処理製品 Aktblitz、DAYDA,LabooU、ザ・ターボシリーズを取り扱うターボデータラボラトリーのテクノロジー紹介 Furusho Method LFMのご紹介
Turbo Data Lab ロゴ  
   
 
ENGLISH
サイトマップ  お問い合わせ
 
 
 
HOME > テクノロジー
LFM(Linear Filtering Method)
 (成分分解法)の概要
イメージ
お問い合わせはこちら
お問い合わせ窓口
 
 
§1.解決すべき課題
 データベースシステムや表計算に蓄えられたデータが大規模になったとき、 ジョイン・データ変換・更新・検索・集計などのデータベース処理は現実的な時間で実行できなくなります。 どのような問題が発生するのか検討してみましょう。

1)データアクセス量の巨大化
 データが大規模になったとき、ジョインでもソートでもデータへのアクセス量が巨大になります。 事情は集計でも同じです。
 ただし特定用途向けの専用システムならば、このような制約を回避することができる場合があります。 たとえば検索オンリーのシステムならインデックスを用いてデータアクセス量の巨大化を免れることはできます。 その場合でもインデックスの特性上、ヒット数が少ない場合に限られます。 ジョイン・集計などの幅広いデータベース処理全般に対してデータアクセス量の巨大化を免れることは難しいといえます。

2)データ量の増大に伴う処理効率の低下
 ジョイン・集計などを実行する際、多くの場合、内部的にはソート処理を必要とします。 このソート処理は n をレコード数として O(n*log(n)) という n に比例するより大きい処理ステップ数が必要です。 データが大規模になるほど処理効率が低下するのです。
 ジョインキーや集計の次元にB-treeなどのインデックスを張っている場合でも、Tree の深さがデータ量の増大にしたがって log(n) と深くなりこの効率低下は回避できません。(ハッシュの場合でもハッシュキーの衝突などで同様に効率が低下します。)

3)多段階処理での処理時間の増大
 これまでの方式はデータに高速にアクセスするためにインデックスが不可欠です。 このインデックスはデータの構築後に別途作成されるものです。 したがって事前にインデックスを設定可能な処理開始時に存在するデータを除き、処理を進める際に インデックスを作成または更新するコストがかかります。
 多段階処理では中間結果を複数生成しますが、中間結果に対してインデックスを張る場合はその構築時間がかかることにより、 インデックスを張らない場合はデータへのアクセス速度の低下により処理時間が増大します。
 これまでの方式では例えばジョインによってテーブルを生成し、 それを集計するなどの多段階処理(この例では二段階処理)では処理時間がかかります。

▲PageTopへ
§2.ゴルディアスの結び目
 問題の構造がよく分からないまま、場当たり的な対応をして行くと、 一つの問題を押さえ込むことが他の問題を悪化させます。 データベース処理の例では検索高速化のためにインデックスを追加する ことはメモリ量の増大と更新速度の低下を招きます。この状態のままで、検索・集計・ジョイン・ 更新などの多様な処理を効果的に実行できるシステムを設計することはできません。
 複雑に絡み合い誰にも解けなくなったゴルディアスの結び目を、 アレキサンダー大王は剣で断ち切ることで一撃で解いたと言う伝承があります。 逐次のアプローチは困難であるが、一気に解決することならば可能だという故事です。
 当社が提唱するLFM(成分分解法)はこの剣です。上記の問題を一挙に解決し、 さらにこれまで考えられなかった機能を可能にします。ここではその概要を説明しましょう。

▲PageTopへ
§3.これまでのデータは未整理だった!
 今までデータベースシステムや表計算に蓄えられたデータが未整理であるという認識はありませんでした。 しかし LFM(成分分解法)はその認識が根底にあります。 LFM(成分分解法)は、まず複数の側面が混在した未整理のデータを整理し位置の情報・値の情報に分解し、 次にアルゴリズムがデータベース処理の結果を効率的に記述するための順序集合を操作し、 ジョイン・データ変換・更新・検索・集計などのデータベース処理を実行します。
 旧来の方法では位置と値という二種の情報の混合物であった元データをそのままの形で保持しアクセスしていたので、 データベース処理に際しては不要な情報を除去しながら処理を進めなければなりませんでした。 例えば、旧来の方法ではソート処理は n をレコード数として O(n*log(n)) の処理ステップ数がかかっていましたが、 大雑把な言い方ですが、このうち O(log(n)) の部分は不要な情報の除去作業によるペナルティです。
 もしデータが位置の情報と値の情報に分離され整理されていれば、 ソートに際して値リストを参照する必要が無くなり(=不要な情報の除去が不要)、 ソートの処理ステップ数は O(n) に低下します。 大規模なデータになると O(n*log(n)) と O(n) は雲泥の差となります。

▲PageTopへ
§4.パフォーマンスの例
   そのパフォーマンスは、2009年現在、普通に入手できる4CPUのサーバを用いて最高2億件/秒
  の更新性能(数値のカテゴライズの例)を達成しています。

   また第3章ベンチマークをご覧ください。

▲PageTopへ
§5.LFM (成分分解法)の離れ業
1)成分の転送
 成分に分離されていない旧来のデータ構造で成分を転送することは不可能ですが、 LFM (成分分解法)ならば、 成分を転送するという処理が可能になります。
 当社製品では、以下の処理機能があります。
  1)ジョインにマッチした集合・しなかった順序集合をジョイン元のテーブルに転送する。
  2)ジョインキーを辿って項目を他のテーブルに転送する。

2)仮想ジョインの実現
 ジョインの結果が非常に大きくなったとしても(例えば20億レコード)、 インメモリで20億レコードのジョインテーブルを保持でき、 そのジョインテーブルに対して検索も集計もソートも可能です。

3)高度な並列性
 ソート一つを取ってみてもこれまでの手法では並列化は複雑で大変でした。 そのため検索・集計・ジョイン・更新などをまとめて並列化することはちょっと考えられませんでした。 LFM (成分分解法)ならそれを実現できます。

4)木構造データ、分散メモリシステムへの発展
 旧来の技術ではデータ形式をテーブルから木構造へ変更したり、 共有メモリシステムをブレードサーバやグリッドコンピューティングに対応した分散メモリシステムへ変更するのは大変困難でしたので、 変更ではなく、最初から全てを作り直す必要がありました。それらは実質上、相互に無関係だったのです。
 これまでの LFM(成分分解法)の説明はデータはテーブル構造、 メモリは共有メモリを仮定して説明してきました。 (その場合、後述する順序集合・値番号・値リストという3つの成分が必要で、 うち1つの昇順成分によりデータを記述しますから、1/3構造と呼ぶ構造を持っています。)
 LFM(成分分解法)では成分を追加することにより、木構造に対応した2/4構造(もしくは1/4構造)、分散メモリに対応した3/5構造を作ることができ、かつそれらは1/3構造での成分やアルゴリズムを引き継ぎ、付け加えることで実現できます。 このような拡張性は非常にすばらしいことであることは言うまでもありません。

▲PageTopへ
§6.まとめ
 LFM(成分分解法)は、データを整理し、成分に分解することで、
  @データアクセス量の巨大化、
  Aデータ量の増大に伴う処理効率の低下、
  B多段階処理での処理時間の増大
と言った問題を解決しました。

 加えて、
  C最高2億件/秒(数値のカテゴライズの例)の更新性能、
  D成分転送、
  E仮想ジョインの実現、
  F木構造データへの発展、
  G分散メモリシステムへの発展が可能
になりました。

 このような新しい記述方法が科学技術を大きく推し進めた例は珍しくはありません。 有名な例では「 0 の発見」、「虚数の発見」・・・などです。 IT業界ではリレーショナルデータベースの理論などがあります。 これらに比肩するなどと主張するつもりは有りませんが、 上記のような特性を持つLFM(成分分解法)はデータベース処理を一新する革新的なアプローチと言えるでしょう。

▲PageTopへ
▼ 次の章(表形式データの成分分解)へ
 
  個人情報のお取り扱い
Copyright