Más contenido relacionado La actualidad más candente (20) Similar a CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets (20) Más de Naoyuki Yamada (6) CAジャーナルクラブ Dremel: Interactive Analysis of Web-Scale Datasets2. 今回とりあげる論文・資料
Dremel: Interactive Analysis of Web-Scale Datasets
http://research.google.com/pubs/pub36632.html
2010年発表。それまでGoogle社内で使われてきた理論と実装を論文
にまとめて公開したもの。オープンソースの世界にデータ分析フレーム
ワークの新しいコンセプトを提示した
参考:
An Inside Look at Google BigQuery
https://cloud.google.com/files/BigQueryTechnicalWP.pdf
3. 目次
- 要約(+自分なりの要点)
- 1. Introduction
- 2. Background
- 3. Data Model
- 4. Nested Columnar Storage
- 5. Query Language
- 6. Query Executio
- 7. Experiments
- 8. Observations
- 9. Related Work
- 10. Conclusions
- MapReduceとの違い:
An Inside Look at Google BigQuery より
6. Dremelと周辺技術
Dremelの実装
Apache Drill - オープンソース実装
Google BigQuery - by Google社
一部実装しているもの、参考にしているもの
Impala, Parquet, Prestoなど
MapReduce(2004年)
http://research.google.com/archive/mapreduce.html
列指向データベース(Columnar Database) 10年以上前から商用化はされている
http://en.wikipedia.org/wiki/Column-oriented_DBMS
BigTable(2006年)
BigTableはGoogleの開発したデータストレージの名前。HBaseなどと同等のレイヤー
(HBaseはBigTableをモデルとする)。
DremelはMapReduce等と同列の、データ処理フレームワークを指す
11. 3. Data Model
ここで説明するデータモデルはProtocol Buffersで、Google社内
だけでなくオープンソースで公開されている
強く定型化されたネスト型データとして表現される
τ(タウ): データ型またはレコード型
dom: document object model
*: 繰り返し出現するフィールドであることを示す
?: オプショナルなフィールドであることを示す
13. 4. Nested Columnar Storage
私たちにとっての目的は、検索効率を改善するため、あるフィールドの
全てのデータをできるだけ隣接して保存すること
その取り組みは下記3点に集約される:
カラム型形式における無劣化の(可逆な)レコード形式
(4.1 Repetition and Definition Level)
高速なエンコーディング
(4.2 Splitting Records into Columns)
効率的なレコードの組み立て
(4.3 Record Assembly)
14. 4.1 Repetition and Definition Level
単一の値は、それ自体ではデータ構造を表現できない。レコード間の境
界や、繰り返しフィールドやオプショナルフィールドを表現する要素が
必要
Repetition Levels(繰り返しレベル)
どのフィールドパスにある繰り返しフィールドの値が繰り返しされて
いるのか、をnull値の付与および0以上の整数のレベルで表す
Definition Levels(定義レベル)
あるパスにあるどれだけの(未定義になりうる)フィールドが実際
に存在するのか、をnull値の付与および0以上の整数のレベルで表す
16. 4.2 Splitting Records into Columns
あるレコードのデータを、どう効率的に各カラムに格納していくかにつ
いて
Googleで扱うデータの多くは非常に疎(sparse)であるため、出現す
る頻度が未定なフィールドを全て走査するのは効率が悪い
field writer を木構造で持ち、親子間でレベルを同期して必要なと
きにだけ更新をかけるようにする
35. MapReduceとの違い:
An Inside Look at Google BigQuery より
!
BigQueryはインタラクティブな、数秒で終わる処理
アドホックでTry-and-errorを繰り返すような処理
MapReduceはバッチ処理、時間のかかる処理
大規模データの変換や集計で多くの時間がかかるもの
複雑なデータ処理やロジックの適用が可能
非構造化されたデータの処理が可能
多量の結果を返すケース
大きいテーブル同士JOINする場合
既存のデータの更新