SlideShare a Scribd company logo
1 of 47
Download to read offline
データベースシステム論
2016年度 後期 水曜 1・2時限 情24教室
担当:横山昌平
データベースシステム論 第 回2016 [ 12 ] 1p.
講義計画
• 関係データベースの歴史と基本概念
• SQLの基礎と応用(演習を含めつつ)
• データベースの設計と構成
• SQL問い合わせ処理とそれを支える技術
• 関係データモデル以外のデータベース
データベースシステム論 第 回2016 [ 10 ] 2p.
※現時点での予定です。進捗に応じて変更します。
27Apr.
20Apr.
13Apr.
25May
18May
11May
1June
8June
22June
15June
13July
6July
29July
20July
27July
データベースシステム論
【復習】第11回 データベースの構成 - インデクス
データベースシステム論 第 回2016 [ 12 ] 3p.
インデクス
• インデクスとは?
• 主キーに自動的に付与される
• 明示的に特定のカラムへ付与する事もできる
データベースシステム論 第 回2016 [ 12 ] 4p.
データに付随して格納される情報で最も重要なRDBの機能が
インデックスは、データベースの性能を向上させ
るための一般的な方法です。データベースサーバで
インデックスを使用すると、インデックスを使用し
ない場合に比べてかなり速く、特定の行を検出し抽
出することができます。しかし、インデックスを使
用すると、データベースシステム全体にオーバー
ヘッドを追加することにもなるため、注意して使用
する必要があります。
(出典:PostgreSQL9.3.1公式ドキュメント)
インデクスの種類
• B-tree, B+tree
• ある順番でソート可能なデータに対する等価性や範
囲の問い合わせに対して効果を発揮する。
• Hash
• 単純な等価性比較を行う場合に効果を発揮する。
• 空間インデクス(R-Tree)
• 多次元空間中での範囲検索や近傍検索に効果を発揮
する。
データベースシステム論 第 回2016 [ 12 ] 5p.
インデクス格納方法の分類
• クラスタードインデクス
• インデクスにより順序付けされたカラムの順序に従
いタプルをディスクへ格納する手法
• 「ソート済み」のデータを格納している
• 当然、高速な検索が期待できるが、各テーブルに
1つのみしかクラスタードインデクスは持てない
• B-Treeの葉がタプルであるイメージ
• アンクラスタードインデクス
• インデクスにデータの実態ではなく、タプルのアド
レスへのリンクのみを格納する手法
• B-Treeの葉がアドレスであるイメージ
データベースシステム論 第 回2016 [ 12 ] 6p.
対象カラムによる分類
• ユニークインデクス
• キーの値が重複していないインデクスの事
• 主キーやUNIQUEが指定されたカラムへインデクス
が付与された場合、必然的にユニークインデクスと
なる
• ノンユニークインデクス
• キーの重複が許されているカラムに対するインデク
スの事
データベースシステム論 第 回2016 [ 12 ] 7p.
これらは暗黙的に決定されるので、利用者の立場からは気にす
る必要はありませんが、問い合わせ処理上、ユニークが保障さ
れていない場合の処理とそうでない場合の処理を切り分ける目
的で利用されます。
[まとめ]インデクスの種類
• データ構造による分類
• B+Treeインデクス、Hashインデクス、etc…
• 格納方法による分類
• クラスタードインデクス (値そのものを保持)
• アンクラスタードインデクス (値への参照を保持)
• 格納されたデータによる分類
• ユニークインデクス (値の重複を許さない)
• ノンユニークインデクス
データベースシステム論 第 回2016 [ 12 ] 8p.
B+tree
• d次のB+treeの定義
• 値と中間ノード
• 1~2d個の整列された値を持つ
• 値数+1個のポインタ(最大2d+1)を持つ
• 値xの左にあるポインタはx未満の値を持つノードを指す
• 値xの右にあるポインタはx以上の値を持つノードを指す
• 葉
• d~2d個の整列された値を持つ
• 次の葉へのリンクを持つ(B木に比べ順次アクセスで利点)
• 一般的に葉の値はタプルを指すポインタ
• タプルの値が入って居る場合がクラスタードインデクス
データベースシステム論 第 回2016 [ 12 ] 9p.
35
10 25 65
1 3 10 16 25 30 35 40 65 74
索引部
データ部
X<35 35≦X
X<6510 ≦X<25
次
64≦X
次 次 次
Hash
• 単に等価検索の場合B+treeではノードをポインタを使
いたどる為、何度もディスクアクセスする必要がある
• それに対し、検索したい値から直接格納場所のアドレ
スを算出できるタイプのインデクスがHashである
• すなわち範囲検索には利用できない
• 値とアドレスの組を保存しておけば、検索時に値から
タプルの場所を特定できる
• 一般的にはHash関数の選定が重要
• お手軽にはDBMS付属のHash関数を使えばよい
データベースシステム論 第 回2016 [ 12 ] 10p.
値A Hash関数 アドレスA
Hash値
Hash関数とHash値の衝突
• 例:季語データベースと春夏秋冬Hash関数
データベースシステム論 第 回2016 [ 12 ] 11p.
春ページ
夏ページ
秋ページ
冬ページ
風船
草餅
春
春
春夏秋冬
Hash関数 衝突
ページのサイズに収まる量のデータ以上の衝突が起きると、新
にページを用意しなければならない(ページオーバフロー)。ハッ
シュ値は1つのアドレスであり、複数のページを持つという事は
複数のアドレスを持つ事である。すなわち検索効率が落ちる。
春ページ
Postgresで試して見よう
• 使用テーブル
• zipcode (インストール時に作成したテーブル)
• 準備
• zipcodeはインデクスが貼られていない
• zipcodeと同じスキーマのzipcode2を作成
• zipcode2に対してインデクスを付与
• zip(なぜか整数型です)にbtree
• addr3にhash
• 両方のテーブルで性能差を確認
• zipの範囲検索はどうか?
• addr3の等価検索はどうか?
データベースシステム論 第 回2016 [ 12 ] 12p.
準備
• SQLは講義HPにもあります。
• テーブルの作成
• zipcode作成時と同じCREATE TABLE 文
• データのコピー
• INSERT INTO ~ SELECT ~文
データベースシステム論 第 回2016 [ 12 ] 13p.
INSERT INTO zipcode2
SELECT * FROM zipcode;
※INSERT 0 123423と出たら成功
CREATE INDEX文
• インデクス名
• 任意の名前で良いがテーブル名・カラム名から連想できる名
前にした方が識別しやすい
• 例: wine.wid→idx_wine_wid
• メソッド
• btree / hash / gist / spgist / ginのどれか
• UNIQUE
• ユニークインデクスなら明示する
データベースシステム論 第 回2016 [ 12 ] 14p.
CREATE [UNIQUE] INDEX インデクス名
ON テーブル名
USING メソッド (カラム名);
インデクス作成
• zipにbtreeインデクス
• addr3にhashインデクス
データベースシステム論 第 回2016 [ 12 ] 15p.
CREATE INDEX idx_zipcode2_zip
ON zipcode2
USING btree (zip);
CREATE INDEX idx_zipcode2_addr3
ON zipcode2
USING hash (addr3);
一件UNIQUEを付けられそうですが郵便番号を共有している異なる住所があります
インデクスの効果測定
• SELECT文の処理にかかるコストを計測
• EXPLAIN文
• 総コストとクエリツリーを得る
• EXPLAIN ANALYZE文
• 総コストと実行時間を得る
データベースシステム論 第 回2016 [ 12 ] 16p.
EXPLAIN ANALIZE
SELECT文;
EXPLAIN
SELECT文;
効果測定1 btree & 等価検索
データベースシステム論 第 回2016 [ 12 ] 17p.
QUERY PLAN
------------------------------------------------------------
Seq Scan on zipcode (cost=0.00..3566.79 rows=1 width=100)
Filter: (zip = 4328011)
(2 行)
QUERY PLAN
------------------------------------------------------------
-----------------------
Index Scan using idx_zipcode2_zip on zipcode2 (cost=0.42..8.44 rows=1
width=100)
Index Cond: (zip = 4328011)
(2 行)
3566.79 8.44vs無し 有り
EXPLAIN SELECT * FROM zipcode WHERE zip = 4328011;
EXPLAIN SELECT * FROM zipcode2 WHERE zip = 4328011;
Win!
効果測定2 btree&範囲検索
データベースシステム論 第 回2016 [ 12 ] 18p.
QUERY PLAN
------------------------------------------------------------
Seq Scan on zipcode (cost=0.00..3875.35 rows=1 width=100)
Filter: ((zip >= 4328011) AND (zip <= 4328066))
(2 行)
QUERY PLAN
------------------------------------------------------------
-----------------------
Index Scan using idx_zipcode2_zip on zipcode2 (cost=0.42..8.44 rows=1
width=100)
Index Cond: ((zip >= 4328011) AND (zip <= 4328066))
(2 行)
3875.35 8.44vs無し 有り
EXPLAIN SELECT * FROM zipcode WHERE zip >= 4328011 AND zip <= 4328066 ;
EXPLAIN SELECT * FROM zipcode2 WHERE zip >= 4328011 AND zip <= 4328066 ;
Win!
効果測定3 hash &完全一致検索
データベースシステム論 第 回2016 [ 12 ] 19p.
QUERY PLAN
------------------------------------------------------------
Seq Scan on zipcode (cost=0.00..3566.79 rows=2 width=100)
Filter: ((addr3)::text = '城北'::text)
(2 行)
QUERY PLAN
------------------------------------------------------------
Bitmap Heap Scan on zipcode2 (cost=4.02..11.85 rows=2 width=100)
Recheck Cond: ((addr3)::text = '城北'::text)
-> Bitmap Index Scan on idx_zipcode2_addr3 (cost=0.00..4.01 rows=2
width=0)
Index Cond: ((addr3)::text = '城北'::text)
(4 行)
3566.79 11.85vs無し 有り
EXPLAIN SELECT * FROM zipcode WHERE addr3 = '城北';
EXPLAIN SELECT * FROM zipcode2 WHERE addr3 = '城北';
Win!
効果測定4 hash &部分一致検索
データベースシステム論 第 回2016 [ 12 ] 20p.
QUERY PLAN
------------------------------------------------------------
Seq Scan on zipcode (cost=0.00..3566.79 rows=2317 width=100)
Filter: ((addr3)::text ~~ '%城%'::text)
(2 行)
QUERY PLAN
------------------------------------------------------------
Seq Scan on zipcode (cost=0.00..3566.79 rows=2317 width=100)
Filter: ((addr3)::text ~~ '%城%'::text)
(2 行)
3566.79 3566.79vs無し 有り
※等価(完全一致)検索以外ではhashインデクスは働かない
EXPLAIN SELECT * FROM zipcode WHERE addr3 LIKE '%城%';
EXPLAIN SELECT * FROM zipcode2 WHERE addr3 LIKE '%城%';
引き分け!
実行時間の計測
• ANALIZEを付けて実行時間を見る
• マシンスペックに依存する値です
• 他のプロセスによるCUP負荷にも依存します
→毎回違う結果が出てくる
データベースシステム論 第 回2016 [ 12 ] 21p.
インデックス無し インデックス有り
btree&等価 15.373ms 0.041ms
btree&範囲 28.147ms 0.066ms
hash&完全一致 28.485ms 0.070ms
hash&部分一致 36.720ms 32.708ms
※それに対してコストの値はマシンスペックや環境に依存しない
→同じスキーマ・データに対する同じSQL文は必ず同じ結果を得る
→値そのものには意味が無いが、値同士の比較により効率的なクエリが分かる
データベースシステム論
第12回 問い合わせ処理と最適化
データベースシステム論 第 回2016 [ 12 ] 22p.
SQL文が実行されるまで
• SQLは英語(自然言語)に似せた人工言語
• コンピュータはそのままでは理解できない
• 理解できる形に変換してやらなければならない
データベースシステム論 第 回2016 [ 12 ] 23p.
じゃぁ
どうする?
SQLの実行手順
パース
アナライズ
リライト
オプティマイズ
実行
データベースシステム論 第 回2016 [ 12 ] 24p.
パースツリー/構文木の作成
クエリツリーの生成
VIEWをクエリに展開
プランツリーの生成
問い合わせ結果を返す
パース
• SQLの構文解析を行い句を分割し構造化する
• 文法のチェック
• 句をツリーとして出力(パースツリーと呼ぶ)
データベースシステム論 第 回2016 [ 12 ] 25p.
SELECT
TABLE
wine_list
COLUMN
*
WHERE
=
wid
1
SELECT *
FROM wine_list
WHERE wid
= 1;
アナライズ
• 構文内容のチェック
• 存在しないテーブル、カラムを参照していないか?
• 型チェック
• クエリツリーを生成
• 関係代数式へ落とし込む
データベースシステム論 第 回2016 [ 12 ] 26p.
π*
σwid=1
wine_list
SELECT
TABLE
wine_list
COLUMN
*
WHERE
=
wid
1
リライト
• クエリツリー内のビューを展開
データベースシステム論 第 回2016 [ 12 ] 27p.
wine_list
SELECT wid, name, district, price
FROM wine JOIN vineyard
ON wine.did = vineyard.did;
πwid,name,district,price
⨝wine.did=vineyard.did
wine
vineyard
書き換え
オプティマイズ
• クエリツリーを解析
• プランツリーを生成
• 実際の処理をノードとしたツリー
• 処理の例:table scan、index scan等
• 効率的なプランツリーを求める
• 最適化
データベースシステム論 第 回2016 [ 12 ] 28p.
π*
σwid=1
πwid,name,district,price
⨝wine.did=vineyard.did
wine
vineyard クエリツリー 候補実行プラン 実行計画
プランツリー
「効率的な」とは?
• 例:結合(JOIN)
• 複数の処理方法がある
• ネスティドループ結合
• ソートマージ結合
• シングルループ結合(講義では省略)
• ハッシュ結合
• オプティマイズにより最適な結合処理が選ばれる
• それぞれ長所や制約があり、結合対象となるテーブルの
性質(行数やインデクスの有無・種類)によって、効率的な
結合処理は異なる。
• コスト計算により定量的に評価する
• 前回講義のEXPLAIN文で出てきたコストを思い出して!
データベースシステム論 第 回2016 [ 12 ] 29p.
ネスティドループ結合
• 入れ子のループで全組み合わせを求める
• テーブルAとテーブルBの結合
• AのカラムxとBのカラムyを条件とした等結合
データベースシステム論 第 回2016 [ 12 ] 30p.
for(var a = 0; a < |A|; a++){
for (var b = 0; b < |B|; b++){
if(A[a].x = A[b].y){
JoinTuples(A[a],B[b]);
}
}
}
最も単純でいかなる条件下でも実行できるが、行数が多いテーブ
ル同時の結合は計算量が膨大になる。
ソートマージ結合
• 予めソートする事により計算量を削減
データベースシステム論 第 回2016 [ 12 ] 31p.
var n = 0;
sort(A); sort(B);
for(var a = 0; a < |A|; a++){
for (var b = n; b < |B|; b++){
if(A[a].x = B[b].y){
JoinTuples(A[a],B[b]);
}else{
n = b++; break;
}
}
}
ソートのコストがオーバヘッドとして掛かるが、結合のための
ループ回数はネスティドループに比べ大幅な削減が期待できる。
ハッシュ結合
• 同値に対するハッシュキーの等価性を利用する
データベースシステム論 第 回2016 [ 12 ] 32p.
var hashtable= {};
for(var b=0; b<|B|; b++){
var key = hash(B[b].y);
hashtable[key] = B[b];
}
for(var a=0; a<|A|; a++){
var key = hash(A.x);
if(key in hashtable){
JoinTuples(A[a], hashtable[key]);
}
}
ハッシュのオーバヘッドが許容でき、かつ行数に対して十分なメ
モリを有する場合、高速に結合が行えるため高効率が期待できる。
試してみよう
• どの結合方法が選ばれた?
データベースシステム論 第 回2016 [ 12 ] 33p.
EXPLAIN
SELECT * FROM wine_list WHERE wid = 1;
dbsys-# SELECT * FROM wine_list WHERE wid = 1;
QUERY PLAN
-------------------------------------------------------------------
Nested Loop (cost=0.30..16.35 rows=1 width=244)
-> Index Scan using wine_pkey on wine (cost=0.15..8.17 rows=1 width=134)
Index Cond: (wid = 1)
-> Index Scan using vineyard_pkey on vineyard (cost=0.15..8.17 rows=1 width=126)
Index Cond: (did = wine.did)
(5 行)
試してみよう2
• ネスティドループ結合を無理矢理無効に
データベースシステム論 第 回2016 [ 12 ] 34p.
set ENABLE_NESTLOOP to off;
EXPLAIN
SELECT * FROM wine_list WHERE wid = 1;
Hash Join (cost=8.18..25.34 rows=1 width=244)
Hash Cond: (vineyard.did = wine.did)
-> Seq Scan on vineyard (cost=0.00..15.20 rows=520 width=126)
-> Hash (cost=8.17..8.17 rows=1 width=134)
-> Index Scan using wine_pkey on wine (cost=0.15..8.17 rows=1 width=134)
Index Cond: (wid = 1)
試してみよう3
• ハッシュ結合も無効に
データベースシステム論 第 回2016 [ 12 ] 35p.
set ENABLE_HASHJOIN to off;
EXPLAIN
SELECT * FROM wine_list WHERE wid = 1;
Merge Join (cost=46.83..49.45 rows=1 width=244)
Merge Cond: (wine.did = vineyard.did)
-> Sort (cost=8.18..8.18 rows=1 width=134)
Sort Key: wine.did
-> Index Scan using wine_pkey on wine (cost=0.15..8.17 rows=1 width=134)
Index Cond: (wid = 1)
-> Sort (cost=38.66..39.96 rows=520 width=126)
Sort Key: vineyard.did
-> Seq Scan on vineyard (cost=0.00..15.20 rows=520 width=126)
比べてみよう
• 一位: Nested Loop
• 二位: Hash Join
• 三位: Merge
→ネスティド結合が最適な実行計画
データベースシステム論 第 回2016 [ 12 ] 36p.
Nested Loop (cost=0.30..16.35 rows=1 width=244)
Hash Join (cost=8.18..25.34 rows=1 width=244)
Merge Join (cost=46.83..49.45 rows=1 width=244)
set ENABLE_NESTLOOP to on;
set ENABLE_HASHJOIN to on;
※ちゃんと設定を戻しておこう!
• DBMSはNested Loopが最適である事を事前予想して、デフォルトで実行した
• どのアルゴリズムが最適かはデータ量やJoinのキーに依存する
オプティマイズ - 別の例
• おバカなSQL文も直してくれます。
• 二度の全行スキャンを一度に最適化している
• このように冗長なクエリを効率化する事もオプ
ティマイズの重要な役目である。
データベースシステム論 第 回2016 [ 12 ] 37p.
EXPLAIN
SELECT *
FROM (SELECT * FROM zipcode) AS a;
QUERY PLAN
-----------------------------------------------------------------
Seq Scan on zipcode (cost=0.00..3258.23 rows=123423 width=100)
(1 行)
関係代数の式変換による最適化
• 教科書9.6(p.109)を参照
• 関係代数の等価な変換法則に従い式を変形し、クエ
リツリーを最適なプランツリーへと変換する。
• なぜ?
• 例:3テーブル以上の結合を考える。
• A(|A|= 100000行), B(|B|=100000行), C(|C|=10行)
• A ⨝B ⨝C
• JOINの順番を入れ替えても等価(教科書の項目5)
• 少ない行のテーブルを先に結合した方が効率が良い
• 最適化 → A ⨝ (B ⨝C )
データベースシステム論 第 回2016 [ 12 ] 38p.
関係代数式としては等価でも処理コストは異なる事を考慮しよう
式変換による最適化 - 例
• 選択率による最適な実行計画の立案を例に
• wine_listはwineとvineyardを等結合したビュー
• ビューは問い合わせ時にSQL文に書き換えられる
• この問い合わせは結合処理結果に対する選択演算
• 選択の条件は「3000円より高いワイン」
データベースシステム論 第 回2016 [ 12 ] 39p.
SELECT *
FROM wine_list
WHERE price > 3000;
式変換による最適化 - 例つづき1
• まず、WHERE句無しでコストを考える
データベースシステム論 第 回2016 [ 12 ] 40p.
EXPLAIN
SELECT *
FROM wine_list;
Hash Join (cost=21.70..43.34 rows=490 width=244)
Hash Cond: (wine.did = vineyard.did)
-> Seq Scan on wine (cost=0.00..14.90 rows=490 width=134)
-> Hash (cost=15.20..15.20 rows=520 width=126)
-> Seq Scan on vineyard (cost=0.00..15.20 rows=520 width=126)
式変換による最適化 - 例つづき2
• 次に、結合無し(wineテーブル)でコストを求める
• 予想
• 結合結果に対して選択演算を適用するため、コスト
は両コストを足し合わせたものになるだろう・・・
データベースシステム論 第 回2016 [ 12 ] 41p.
EXPLAIN
SELECT *
FROM wine WHERE price > 3000;
Seq Scan on wine (cost=0.00..16.13 rows=163 width=134)
Filter: (price > 3000)
Hash Join (cost=21.70..43.34 rows=490 width=244)
式変換による最適化 - 例つづき3
• ではやってみよう!
データベースシステム論 第 回2016 [ 12 ] 42p.
EXPLAIN
SELECT *
FROM wine_list
WHERE price > 3000;
Hash Join (cost=21.70..40.07 rows=163 width=244)
Hash Cond: (wine.did = vineyard.did)
-> Seq Scan on wine (cost=0.00..16.13 rows=163 width=134)
Filter: (price > 3000)
-> Hash (cost=15.20..15.20 rows=520 width=126)
-> Seq Scan on vineyard (cost=0.00..15.20 rows=520 width=126)
SELECT *
FROM wine_list
よりも低コスト!
式変換による最適化 - 例つづき4
• 結合前のwineに対して選択演算を実行
• 高速なハッシュ結合とはいえ行数にコストは依存
• 結合前に行数を減らすと結合が高速化できる
• |wine|=7行 だが |σprice>3000(wine)|=2行
• 最適化前:σprice>3000(wine⨝vineyard)
• 最適化後:σprice>3000(wine)⨝vineyard
データベースシステム論 第 回2016 [ 12 ] 43p.
Hash Join (cost=21.70..40.07 rows=163 width=244)
Hash Cond: (wine.did = vineyard.did)
-> Seq Scan on wine (cost=0.00..16.13 rows=163 width=134)
Filter: (price > 3000)
-> Hash (cost=15.20..15.20 rows=520 width=126)
-> Seq Scan on vineyard (cost=0.00..15.20 rows=520 width=126)
選択率
• 選択条件(あるいは結合条件)によりテーブルの
どれくらいの行数が返されるのか(選択率)は重
要な情報である。
• 選択率の算出方法
• 選択演算: |σcondition(A)| / |A|
• 結合演算: |A ⨝ B| / |A×B|
• 選択率のようなテーブルに格納されたデータに
基づいて得られる量を統計量と呼ぶ。
• 統計量はデータベースシステムによって取得、
管理されている。
データベースシステム論 第 回2016 [ 12 ] 44p.
ヒストグラム統計
• 選択率の統計はどのように保持されるか?
• 例:price>3000の時に何行返されるか?
• 全ての選択条件での選択率を保持しておくのは
現実的では無い
• そこでヒストグラムとして保持する
データベースシステム論 第 回2016 [ 12 ] 45p.
ワインID 名前 産地ID 価格
1 シャブリ A 2400
2 ジュヴレシャンベルタン A 3000
3 サンテミリオン B 5800
4 オーメドック B 2200
5 サンセール C 2800
6 シャンパン D 4000
1000 コンチャ・イ・トロ E 980
価格帯 度数(行)
[ 0 – 1000] 1
[1001 – 2000] 0
[2001 – 3000] 4
[3001 – 4000] 1
[4001 – 5000] 0
[5001 – 6000] 1
価格帯 度数(行)
[ 0 – 2200] 2
[2201 – 2800] 2
[2801 – 4000] 2
[4001 – 5800] 1
幅一定方式 奥行一定方式
次回予告
第13回 データベースの運用
データベースシステム論 第 回2016 [ 12 ] 46p.
第13回 データベースの運用
• 同時に複数の問い合わせを、データの整合性を
保ちつつ処理する仕組みを勉強します。
• 来週学ぶこと
• ACID特性
• トランザクション
• 障害復旧
• 予習
• 対応箇所:教科書第10~11章
• 関連個所:PostgreSQL 9.3.1文書 -第3章 3.4節
• http://www.postgresql.jp/document/9.3/html/tutorial-
transactions.html
データベースシステム論 第 回2016 [ 12 ] 47p.

More Related Content

What's hot

データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースShohei Yokoyama
 
データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他Shohei Yokoyama
 
データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!Shohei Yokoyama
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131Toshi Harada
 
データベース入門
データベース入門データベース入門
データベース入門拓 小林
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeToshi Harada
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリSatoshi Kitajima
 
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションMapR Technologies Japan
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロtsudaa
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoHideo Harada
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビックTech Summit 2016
 
データベース01 - データベースとは
データベース01 - データベースとはデータベース01 - データベースとは
データベース01 - データベースとはKenta Oku
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo dbYuji Isobe
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchanHiroki Matsui
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析MapR Technologies Japan
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析MapR Technologies Japan
 

What's hot (20)

データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベース
 
データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他
 
データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!
 
OSC2012 OSC.DB Hadoop
OSC2012 OSC.DB HadoopOSC2012 OSC.DB Hadoop
OSC2012 OSC.DB Hadoop
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
 
Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
 
データベース入門
データベース入門データベース入門
データベース入門
 
MyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatypeMyNA JPUG study 20160220-postgresql-json-datatype
MyNA JPUG study 20160220-postgresql-json-datatype
 
データサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリデータサイエンティスト必見!M-1グランプリ
データサイエンティスト必見!M-1グランプリ
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロ
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 Hokkaido
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビック
 
データベース01 - データベースとは
データベース01 - データベースとはデータベース01 - データベースとは
データベース01 - データベースとは
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchan
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析
 

Similar to データベースシステム論12 - 問い合わせ処理と最適化

081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.pptNaoya Ito
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京Koichiro Sasaki
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビックTech Summit 2016
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121Kosuke Kida
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5Koichiro Sasaki
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜griddb
 
Sbc odps 200_data_works_handson_ver1.0
Sbc odps 200_data_works_handson_ver1.0Sbc odps 200_data_works_handson_ver1.0
Sbc odps 200_data_works_handson_ver1.0洋 謝
 
SQL勉強会 初級編
SQL勉強会 初級編SQL勉強会 初級編
SQL勉強会 初級編Kazuma Hidaka
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画keki3
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jpyoyamasaki
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめYasushi Hara
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwToshi Harada
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集Couchbase Japan KK
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Toshi Harada
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会Nao Minami
 

Similar to データベースシステム論12 - 問い合わせ処理と最適化 (20)

081108huge_data.ppt
081108huge_data.ppt081108huge_data.ppt
081108huge_data.ppt
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
 
Dat009 クラウドでビック
Dat009 クラウドでビックDat009 クラウドでビック
Dat009 クラウドでビック
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121
 
Inside of Asakusa DSL
Inside of Asakusa DSLInside of Asakusa DSL
Inside of Asakusa DSL
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
 
Sbc odps 200_data_works_handson_ver1.0
Sbc odps 200_data_works_handson_ver1.0Sbc odps 200_data_works_handson_ver1.0
Sbc odps 200_data_works_handson_ver1.0
 
SQL勉強会 初級編
SQL勉強会 初級編SQL勉強会 初級編
SQL勉強会 初級編
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
 
20160929 inno db_fts_jp
20160929 inno db_fts_jp20160929 inno db_fts_jp
20160929 inno db_fts_jp
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ
 
Lt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdwLt ingaoho-jsonb+postgeres fdw
Lt ingaoho-jsonb+postgeres fdw
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 

Recently uploaded

生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~Kochi Eng Camp
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラムKochi Eng Camp
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料Tokyo Institute of Technology
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 

Recently uploaded (6)

生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 

データベースシステム論12 - 問い合わせ処理と最適化