SlideShare uma empresa Scribd logo
1 de 108
Google Dremel
maruyama097
丸山不二夫
Dremelが利用されている領域
 クロールされたWebドキュメントの解析
 Androidマーケットで、インスロールされたアプリの
追跡
 Google製品のクラッシュ報告
 Google BooksのOCRの結果.
 スパムの解析
 Google Mapのmapタイルのデバッグ
 BigtableインスタンスのTabletマイグレーションの
管理
 Googleの分散ビルドシステム上での実行テスト結果
 数十万のディスクのDisk I/O 統計
 Googleデータセンターで実行されているジョブの、
Dremelのアイデア
 第一。分散検索エンジンで利用されている、木構造の
アーキテクチャー。Web検索と同様に、検索は、木
構造をたどって行われ、それを書き換える。検索結果
は、下位の木構造から得られる答えを集約することで
行われる。
 第二。Dremelは、SQL-likeな検索言語をサポートす
る。それは、HiveやPigとはことなり、Map-Reduce
には変換されずに、ネーティブに検索を実行する。
 第三。Dremelは、カラム単位で分割されたデータ構
造を利用する。カラム型のストレージは、読み込む
データを少なくして、圧縮が簡単に出来るので、CPU
のコストを削減する。カラム型のデータ・ストアは、
リレーショナルなデータの解析には採用されてきたが、
Google Dremel
この論文が明らかにすること
 ネストしたデータの為の、カラム型ストレージの
フォーマット。ネストしたデータのカラム型への変
換、逆に、カラム型からもとのデータの復元のアルゴ
リズムを与える。
 Dremelの検索言語とその実行の概要。カラム型のネ
スト・データ上で効率的に実行され、ネストされた
データの再構成を必要としない。
 Web検索システムの実行木が、データベース処理に
も利用出来ることを示す。集約検索が効率的に行われ
ることを示して、そのメリットを明らかにする。
 1000~4000ノードで稼働する、一兆個のレコード、
数テラバイトのデータセット上での実験の報告。
Dremelの背景
 インタラクティブな検索処理が、広い範囲のデータ管理システ
ム環境に、適合することを、まず示そう。
 シナリオ










Map Reduce ->billions of records
Dremel SQL
DEFINE TABLE t AS /path/to/data/*
SELECT TOP(signal1, 100), COUNT(*) FROM t
 Dashboard、Catalog

検索処理とデータ管理ツールの相互運用性
共通ストレージ層 GFS
高パフォーマンスストレージ層
共有データフォーマット
message Document {
required int64 DocId;
optional group Links {
repeated int64 Backward;
repeated int64 Forward; }
repeated group Name {
repeated group Language {
required string Code;
optional string Country; }
optional string Url; }}

Protocol Buffer

Document
DocID

Links?
Backward*

Name*
Forward*

サンプルのスキーマ

Language*

Code

Url?

Country?
Document

DocID

Links?

Backward*

Forward*

Names*

Language*

Code

Url?

Country?
Document

DocID

Repetition Level

Names* 1

Links?

Backward* 1 Forward* 1 Language* 2 Url?

Code

Country?
Document

DocID 0

Links? 1

Definition Level

Names* 1

Backward* 2 Forward* 2 Language* 2 Url? 2

Code 2

Country? 3
Document

Repetetion Level
Definition Level

DocID 0

Links? 1

Names* 1 1

Backward* 1 Forward* 1 Language* 2 Url? 2
2
2
2

Code 2

Country? 3
DocId: 10
Links
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL 0,1
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL 0,1
Forward: 20
0,2
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL 0,1
Forward: 20
0,2
Forward: 40
1,2
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2
0,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2
0,2
0,3

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2
0,2
0,3

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

0,1
0,2
1,2
1,2
0,2
0,3
2,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Url: 'http://B'

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2

Name
Language
Code: 'en-gb'
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Url: 'http://B'

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1

Name
Language
Code: 'en-gb'
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B'

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1

Name
Language
Code: 'en-gb'
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb'
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb’
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
0,0
Links
Backward:NULL
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us’
Language
Code: 'en’
Country:NULL
Url: 'http://A’
Name
Language
Code: NULL
Country:NULL
Url: 'http://B’

0,1
0,2
1,2
1,2
0,2
0,3
2,2
2,2
0,2
1,1
1,1
1,2

Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
0,2
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
0,2
1,2
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
0,2
1,2
0,2
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘

0,0
0,2
1,2
0,2
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Language
Url: 'http://C‘

0,0
0,2
1,2
0,2
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Language
Code: NULL
Url: 'http://C‘

0,0
0,2
1,2
0,2
0,1
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
0,0
Links
Backward: 10 0,2
Backward: 30 1,2
Forward: 80
0,2
Name
Language
Code: NULL
0,1
Country: NULL 0,1
Url: 'http://C‘
Name
Language
Code: 'en-gb’ 1,2
Country: 'gb’ 1,3
URI:NULL
1,1
DocId: 20
0,0
Links
Backward: 10 0,2
Backward: 30 1,2
Forward: 80
0,2
Name
Language
Code: NULL
0,1
Country: NULL 0,1
Url: 'http://C‘ 0,2
DocId: 10
Links
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
Links
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
DocId: 10
Links
Forward: 20
Forward: 40
Forward: 60
Name
Language
Code: 'en-us‘
Country: 'us'
Language
Code: 'en'
Url: 'http://A'
Name
Url: 'http://B'
Name
Language
Code: 'en-gb'
Country: 'gb'

DocId: 20
Links
Backward: 10
Backward: 30
Forward: 80
Name
Url: 'http://C‘
Level 0

Document

DocID

Backward*

Links?

Forward*

Names*

Language*

Code

Url?

Country?
Document

DocID

Level 1

Names* 1

Links?

Backward* 1 Forward* 1 Language*

Code

Url?

Country?
Document

DocID

Level 1

Names* 1

Links?

Backward* 1 Forward* 1 Language*

Code

Url?

Country?
Document

DocID

Level 0
Level 1

Names* 1

Links?

Backward* 1 Forward* 1 Language*

Code

Url?

Country?
Document

DocID

Backward*

Level 2

Links?

Forward*

Names*

Language* 2 Url?

Code

Country?
Document

DocID

Backward*

Level 2

Links?

Forward*

Names*

Language* 2 Url?

Code

Country?
Level 0
Level 1
Level 2

Document

DocID

Names* 1

Links?

Backward* 1 Forward* 1 Language* 2 Url?

Code

Country?
Document

DocID

Backward*

Links?

Forward*

Names*

Language*

Code

Url?

Country?
Document

DocID

Backward*

Links?

Forward*

Names*

Language*

Code

Url?

Country?
Level 0

Document

DocID

Backward*

Links?

Forward*

Names*

Language*

Code

Url?

Country?
Level 0
Level 1
Level 2

Document

DocID

Backward*

Links?

Forward*

Names*

Language*

Code

Url?

Country?
Level 0
Level 1
Level 2

Document

DocID

Backward*

Links?

Forward*

Names*

Language*

Code

Url?

Country?
Finite State Machine
CONSTRUCTION ALGORITHM
Finite State Machine
CONSTRUCTION ALGORITHM
 このアルゴリズムは、入力として、スキーマ中に現れ
る順番でレコード中に展開されているフィールドをと
る。
 このアルゴリズムは、「共通繰り返しレベル」という
コンセプトを用いている。それは、共通のもっとも近
い先祖の繰り返しレベルのことである。例えば、
Links.BackwardとLinks.Forwardの「共通繰り返し
レベル」は、1になる。
 第二のコンセプトは、「バリア」である。それは、現
在のフィールドの、順番では次のフィールドのことで
ある。
 直感的には、バリアにあたって、以前にみたフィール
ドにジャンプが必要となるまで、それぞれのフィール
1. procedure ConstructFSM(Field[] fields):
2. フィールズ上のそれぞれのフィールドに対し
て
3. maxLevelを、フィールドの最大繰り返し
レベルに設定する。
4. barrierを、フィールドの次のフィールド
か、
そうでなければ、FSMの最終状態に設定
す
る。
 ステップ1(Lines 6-10)では、「共通繰り返
しレベル」を後ろ向きに走査する。これらは、
増大しないことが保証されている。我々が出
会う、それぞれの繰り返しレベルで、列の
もっとも左のフィールドを選ぶ。
FieldReaderで繰り返しレベルが返された時、
我々が遷移すべきなのは、このフィールドで
ある。
6. フィールドの前の全てのpreFieldについて、
次の処理を繰り返す。ここで、
7. preFieldの繰り返しレベルは、barrierLevel
より大きいものを選ぶ。
8. backLevelを、preFieldとフィールドの
共通繰り返しレベルとする
9. 次のように遷移を設定する。
(field, backLevel) -> preField
10.繰り返し終わり。
 ステップ2では、ギャップを埋める (Lines
11-14)。
このギャップは、全ての繰り返しレベルが、
Line8で計算された共通繰り返しレベルに現
れていないことから生まれる。
11. [barrierLevel+1..maxLevel]の全ての
レベルの
12.フィールドからの遷移を欠いているもの
について、次の処理を繰り返す。
13.
level-1の遷移の終端をコピーする
14.繰り返し、終わり。
 ステップ 3(Lines 15-17)では、
barrierLevel以下の全てのレベルについて、
barrier フィールドへのジャンプをセットす
る。
もしも、FieldReaderが、このようなレベル
を生み出すなら、ネストされたレコードの構
成を続ける必要がある。barrierに、戻る必要
はない。
15.[0..barrierLevel]の全てのレベルについ
て
16.
遷移を次のようにセットする
(field, level) -> barrier
17.繰り返し終わり
COLUMN STRIPING
ALGORITHM
 プロシージャDissectRecord は、RecordDecoderの
インスタンスに渡される。RecordDecoderは、バイ
ナリーにエンコードされたレコードの解析に利用され
る。
 FieldWritersは、入力スキーマの階層構造と同形の木
階層構造を構成している。
 ルートのFieldWriterは、それぞれの新しいレコード
毎に、繰り返しレベルを0にセットして、 このアル
ゴリズムに渡される。
 DissectRecordプロシージャの最初の仕事は、現在の
繰り返しレベルを維持することである。
 現在の定義レベルは、現在のwriterのツリー上の位置
によって、フィールド・パスのオプショナルとリピー
ト・フィールドの数の和として、一意に決定される。
 このアルゴリズムのWhileループ (Line 5)は、与えら
れたレコードに含まれる、全てのアトミックとレコー
ド値を持つフィールド上を繰り返し処理する。
 seenFieldsの集合は、レコード中で、そのフィール
ドが処理されたか否かを追跡する。それは、どの
フィールドが、もっとも最近繰り返されたかを決定す
るのに利用される。
 子供の繰り返しレベルchRepetitionLevelは、もっと
も最近繰り返されたレベルか、あるいは、その親のレ
ベルのデフォールト値がセットされる (Lines 913)。
 このプロシージャは、ネストしたレコードに対して、
リカーシブに呼び出される (Line 18)。
 Section 4.2で、 FieldWriters がどのようにレベル
を蓄積して、低レベルのwriterに、必要に応じてそれ
らを伝播していくのかを見てきた。これらは、次のよ
うに行われる。
 それぞれのnon-leaf writerは、(繰り返しレベル、定
義レベル)の列を保持している。それぞれのwriterは、
それに関連した「バージョン」数を持っている。単純
にいえば、writerのバージョンはレベルが加えられる
時には必ず一つづつ増加される。 子供にとっては、
最後に同期した親のバージョンを知っていれば十分で
ある。
 もし子供のwriterが(non-null)の値を獲得していれ
ば、それは新しいレベルを取得して親と状態を同期す
 入力データは、数千のフィールド、数百万のレコード
を持つことがあり得るので、全てのレベルをメモリー
に置くというのはありそうもない。いくつかのレベル
は、ディスク上のファイルに置かれるだろう。
 空の(サブ)レコードの損失のないエンコードの為に、
(図2のName.Languageのような)non-atomic
フィールドは、自分自身のカラム・ストライプを持つ
必要があるかもしれない。それは、レベルを持つだけ
で、non-NULLな値を持つことはない。
1. procedure DissectRecord(
RecordDecoder decoder,
FieldWriter writer, int 繰り返しレベル):
2. 現在の繰り返しレベルと定義レベルをwriter
に追加する。
3. seenFields = {} // 整数の空集合
4. decoderがフィールドの値を持つ間、繰り返
す
5. FieldWriter chWriter =
decoderによって読まれるフィールドの
子writer
6.
7.

int 子の繰り返しレベル = 繰り返しレベル
if seenFieldsが子writerのIDを含んで
いれば、
子の繰り返しレベル = 子writerの深さ
8. else
9.
子writerのIDをseenFieldsに追加する
10. end if
11. if 子Writerがatomic fieldに対応すれば
12.
子の繰り返しレベルの子writerを使って、
現在のフィールドの値を書き出す
13. else
14.
DissectRecord(ネストしたレコードの
為の
新しいRecordDecoder,
子writer, 子の繰り返しレベル)
15. end if
16.end while
RECORD ASSEMBLY
ALGORITHM
 In their on-the-wire representation, records are
laid out as pairs of a field identifier followed by
a field value. Nested records can be thought of
as having an ‘opening tag’ and a ‘closing
tag’, similar to XML (actual binary encoding
may differ, see [21] for details).
 In the following, writing opening tags is
referred to as ‘starting’ the record, and writing
closing tags is called ’ending’ it.
 AssembleRecord procedure takes as input a set
of FieldReaders and (implicitly) the FSM with
state transitions between the readers.
 Variable reader holds the current FieldReader
in the main routine (Line 4). Variable
lastReader holds the last reader whose value
we appended to the record and is available to
all three procedures shown in Figure 17. The
main while-loop is at Line 5.
 We fetch the next value from the current
reader. If the value is not NULL, which is
determined by looking at its definition level, we
synchronize the record being assembled to the
record structure of the current reader in the
method MoveToLevel, and append the field
value to the record.
 Otherwise, we merely adjust the record
structure without appending any value—which
needs to be done if empty records are present.
 On Line 12, we use a ‘full definition level’.
Recall that the definition level factors out
required fields (only repeated and optional
fields are counted). Full definition level takes
all fields into account.
 Procedure MoveToLevel transitions the record
from the state of the lastReader to that of the
nextReader (see Line 22).
 For example, suppose the lastReader
corresponds to Links.Backward in Figure 2 and
nextReader is Name.Language.Code. The
method ends the nested record Links and
starts new records Name and Language, in that
order. Procedure ReturnsToLevel (Line 30) is a
counterpart of MoveToLevel that only ends
current records without starting any new ones.
SELECT PROJECT AGGREGATE
EVALUATION ALGORITHM
 The algorithm addresses a general case when a
query may reference repeated fields; a simpler
optimized version is used for flat-relational
queries, i.e., those referencing only required
and optional fields. The algorithm has two
implicit inputs: a set of FieldReaders, one for
each field appearing in the query, and a set of
scalar expressions, including aggregate
expressions, present in the query. The
repetition level of a scalar expression (used in
Line 8) is determined as the maximum
repetition level of the fields used in that
expression.
 In essence, the algorithm advances the readers
in lockstep to the next set of values, and, if the
selection conditions are met, emits the
projected values. Selection and projection are
controlled by two variables, fetchLevel and
selectLevel. During execution, only readers
whose next repetition level is no less than
fetchLevel are advanced (see Fetch method at
Line 19). In a similar vein, only expressions
whose current repetition level is no less than
selectLevel are emitted (Lines 7-10).
 The algorithm ensures that expressions at a
higher-level of nesting, i.e., those having a
smaller repetition level, get evaluated and
emitted only once for each deeper nested
expression.
Google Dremel
サンプルの格納状態
Document
DocID

10 0 0
20 0 0

Links?

Backward*

NULL 0 1
10
02
30
12

Name*

Forward*

20
40
60
80

0
1
1
0

2
2
2
2

Language*

Url?

http://A 0 2
Code Country? http://B 1 2
NULL
11
http://C 0 2
en-us 0 2 us
03
en
2 2 NULL 2 2
NULL 1 1 NULL 1 1
en-gb 1 2 gb
13
NULL 0 1 NULL 0 1
Dremelの検索言語
SELECT DocId AS Id,
COUNT(Name.Language.Code) WITHIN Name AS Cnt,
Name.Url + ',' + Name.Language.Code AS Str
FROM t
WHERE REGEXP(Name.Url, '^http') AND DocId < 20;

出力結果
Id: 10
Name
Cnt: 2
Language
Str: 'http://A,en-us'
Str: 'http://A,en'
Name
Cnt: 0

出力のスキーマ
message QueryResult {
required int64 Id;
repeated group Name {
optional uint64 Cnt;
repeated group Language {
optional string Str; }}}
検索の木構造
 SELECT A, COUNT(B) FROM T GROUP BY A

 SELECT A, SUM(c) FROM (R11 UNION ALL ...R1n)
GROUP BY A
R1i = SELECT A, COUNT(B) AS c FROM T1i
GROUP BY A
T1iは、レベル1のサーバーiで処理される、テーブルTの
Tabletの分割
実験で使われたデータセット
カラム型とレコード型の
パフォーマンスの比較

フィールドの数
MapReduceとDremel

numRecs: table sum of int;
numWords: table sum of int;
emit numRecs <- 1;
emit numWords <- CountWords(input.txtField);

Q1: SELECT SUM(CountWords(txtField))
/ COUNT(*) FROM T1

3000 nodes, 85 billion records
木構造の深さとパフォーマンス

Q2: SELECT country, SUM(item.amount) FROM T2
GROUP BY country
Q3: SELECT domain, SUM(item.amount) FROM T2
WHERE domain CONTAINS ’.net’
GROUP BY domain

テーブルT2 24billionレコード 13TB 530フィールドでの検索
システムのノード数とスケーリング

Q5: SELECT TOP(aid, 20), COUNT(*) FROM T4
WHERE bid = {value1} AND cid = {value2}

T4の一兆個のレコード

リーフサーバーの数
毎月の処理の処理時間の分布
結論
 スキャンベースの検索は、一兆個以上のディスク上の
データセットに対して、インタラクティブなスピード
で実行出来る。
 数千ノードを含むシステムで、カラムとサーバーの数
に関して、ほとんどリニアーなスケーラビリティーを
達成出来る。
 DBMSとまったく同様に、MapReduceは、カラム型
のストレージの恩恵を受ける。
 レコードの収集とパージングは、コストがかかる。ソ
フトウェアの層は(検索実行の層を超えて)、直接カ
ラム指向のデータを利用出来るようになる必要があ
る。
結論
 MapReduceと検索処理は、一方の層の出力が、他方
の層の入力を与えるというように、相互補完的なやり
方で、利用出来る。
 マルチ・ユーザーの環境では、大規模システムは、よ
り良いユーザー・エキスペアレンスの質を提供しなが
ら、規模の経済のメリットを享受出来る。
 もしも、正確さよりも、スピードの方が受け入れやす
いなら、検索は、もっと早くすませることが出来る
し、それにもかかわらず、もっと多くのデータを見る
ことが出来る。
 Webスケールの大量のデータセットは、高速にス
キャン出来る。厳しい時間の制限の中で、最後の数
パーセントのデータを得るのは難しい。
COLUMN STRIPING
Algorithm
The algorithm for decomposing a
record into columns
DissectRecord
1. procedure DissectRecord(
RecordDecoder decoder,
FieldWriter writer,
int repetitionLevel):
 RecordDecoder, which is used to traverse
binary-encoded records.
 FieldWriters form a tree hierarchy isomorphic
to that of the input schema.
Primary Job
 The root FieldWriter is passed to the algorithm
for each new record, with repetitionLevel set to
0.
 The primary job of the DissectRecord
procedure is to maintain the current
repetitionLevel.
 The current definitionLevel is uniquely
determined by the tree position of the current
writer, as the sum of the number of optional
and repeated fields in the field’s path.

Mais conteúdo relacionado

Destaque

BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyoBluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyoMasahiro NAKAYAMA
 
Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤
Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤
Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤Yu Yamada
 
Cassandra Explained
Cassandra ExplainedCassandra Explained
Cassandra ExplainedEric Evans
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyoMasahiro NAKAYAMA
 

Destaque (6)

BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyoBluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
 
Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤
Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤
Step functionsとaws batchでオーケストレートするイベントドリブンな機械学習基盤
 
Cassandra Explained
Cassandra ExplainedCassandra Explained
Cassandra Explained
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Growing up serverless
Growing up serverlessGrowing up serverless
Growing up serverless
 
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo
 

Semelhante a Google Dremel

カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomカウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomMakoto Ohnami
 
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence SuiteDBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suitedecode2016
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京Yu Ito
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStromKohei KaiGai
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪Yu Ito
 
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説decode2016
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouchYohei Sasaki
 
私の考えるドキュメント指向
私の考えるドキュメント指向私の考えるドキュメント指向
私の考えるドキュメント指向Yohei Yamamoto
 
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for PerlChiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for PerlHideaki Ohno
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and ProgrammingTaku AMANO
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBmoai kids
 
ナレッジグラフ/LOD利用技術の入門(前編)
ナレッジグラフ/LOD利用技術の入門(前編)ナレッジグラフ/LOD利用技術の入門(前編)
ナレッジグラフ/LOD利用技術の入門(前編)KnowledgeGraph
 

Semelhante a Google Dremel (20)

カウチなやつら CouchDB in the room
カウチなやつら CouchDB in the roomカウチなやつら CouchDB in the room
カウチなやつら CouchDB in the room
 
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence SuiteDBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
DBP-002_データ分析のさらに一歩先へ Cortana Intelligence Suite
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
DOI勉強会@nii
DOI勉強会@niiDOI勉強会@nii
DOI勉強会@nii
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪
 
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
私の考えるドキュメント指向
私の考えるドキュメント指向私の考えるドキュメント指向
私の考えるドキュメント指向
 
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for PerlChiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
 
Mongodb 紹介
Mongodb 紹介Mongodb 紹介
Mongodb 紹介
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo第5回LinkedData勉強会@yayamamo
第5回LinkedData勉強会@yayamamo
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Level dbを試した
Level dbを試したLevel dbを試した
Level dbを試した
 
ナレッジグラフ/LOD利用技術の入門(前編)
ナレッジグラフ/LOD利用技術の入門(前編)ナレッジグラフ/LOD利用技術の入門(前編)
ナレッジグラフ/LOD利用技術の入門(前編)
 

Mais de maruyama097

Convolutionl Neural Network 入門
Convolutionl Neural Network 入門Convolutionl Neural Network 入門
Convolutionl Neural Network 入門maruyama097
 
ContainerとName Space Isolation
ContainerとName Space IsolationContainerとName Space Isolation
ContainerとName Space Isolationmaruyama097
 
ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望maruyama097
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTKmaruyama097
 
Neural Network + Tensorflow 入門講座
Neural Network + Tensorflow 入門講座Neural Network + Tensorflow 入門講座
Neural Network + Tensorflow 入門講座maruyama097
 
機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Paper機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Papermaruyama097
 
Cloud OSの進化を考える
Cloud OSの進化を考えるCloud OSの進化を考える
Cloud OSの進化を考えるmaruyama097
 
機械学習技術の現在
機械学習技術の現在機械学習技術の現在
機械学習技術の現在maruyama097
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twittermaruyama097
 
Facebook Parseの世界
Facebook Parseの世界Facebook Parseの世界
Facebook Parseの世界maruyama097
 
Project Araとものづくりの未来
Project Araとものづくりの未来Project Araとものづくりの未来
Project Araとものづくりの未来maruyama097
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02maruyama097
 
Project Araと新しいものづくりのエコシステム
  Project Araと新しいものづくりのエコシステム  Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムmaruyama097
 
エンタープライズと機械学習技術
エンタープライズと機械学習技術エンタープライズと機械学習技術
エンタープライズと機械学習技術maruyama097
 
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識maruyama097
 
Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?maruyama097
 
Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムProject Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムmaruyama097
 
人間の思考、機械の思考
人間の思考、機械の思考人間の思考、機械の思考
人間の思考、機械の思考maruyama097
 
グローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケットグローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケットmaruyama097
 

Mais de maruyama097 (20)

Convolutionl Neural Network 入門
Convolutionl Neural Network 入門Convolutionl Neural Network 入門
Convolutionl Neural Network 入門
 
ContainerとName Space Isolation
ContainerとName Space IsolationContainerとName Space Isolation
ContainerとName Space Isolation
 
ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望ニューラル・ネットワークと技術革新の展望
ニューラル・ネットワークと技術革新の展望
 
TensorFlowとCNTK
TensorFlowとCNTKTensorFlowとCNTK
TensorFlowとCNTK
 
Neural Network + Tensorflow 入門講座
Neural Network + Tensorflow 入門講座Neural Network + Tensorflow 入門講座
Neural Network + Tensorflow 入門講座
 
機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Paper機械学習技術の現在+TensolFlow White Paper
機械学習技術の現在+TensolFlow White Paper
 
Cloud OSの進化を考える
Cloud OSの進化を考えるCloud OSの進化を考える
Cloud OSの進化を考える
 
機械学習技術の現在
機械学習技術の現在機械学習技術の現在
機械学習技術の現在
 
大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter大規模分散システムの現在 -- Twitter
大規模分散システムの現在 -- Twitter
 
Facebook Parseの世界
Facebook Parseの世界Facebook Parseの世界
Facebook Parseの世界
 
Aurora
AuroraAurora
Aurora
 
Project Araとものづくりの未来
Project Araとものづくりの未来Project Araとものづくりの未来
Project Araとものづくりの未来
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02
 
Project Araと新しいものづくりのエコシステム
  Project Araと新しいものづくりのエコシステム  Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステム
 
エンタープライズと機械学習技術
エンタープライズと機械学習技術エンタープライズと機械学習技術
エンタープライズと機械学習技術
 
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
人間に出来ること --- 人間 vs 機械 Part I 進化と自然認識
 
Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?Cyber-Physical Systems とは何か?
Cyber-Physical Systems とは何か?
 
Project Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステムProject Araと新しいものづくりのエコシステム
Project Araと新しいものづくりのエコシステム
 
人間の思考、機械の思考
人間の思考、機械の思考人間の思考、機械の思考
人間の思考、機械の思考
 
グローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケットグローバル・ネットワークの成立とネットワーク・マーケット
グローバル・ネットワークの成立とネットワーク・マーケット
 

Último

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Último (9)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

Google Dremel