Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

データベースシステム論15 - 関係データモデル以外のデータベース

1,999 views

Published on

静岡大学情報学部「データベースシステム論」講義スライド
第15回:関係データモデル以外のデータベース

Published in: Education
  • Be the first to comment

データベースシステム論15 - 関係データモデル以外のデータベース

  1. 1. データベースシステム論 [第15回] データベースシステム論 2013年度 後期 火曜 3・4時限 担当:横山昌平 情14教室 p.1
  2. 2. データベースシステム論 [第15回] 講義計画 ※現時点での予定です。進捗に応じて変更します。 Oct. • 関係データベースの歴史と基本概念 8 15 22 29 Nov. Oct. • SQLの基礎と応用(演習を含めつつ) 12 19 26 Dec. • データベースの設計と構成 3 10 17 Jan. • SQL問い合わせ処理とそれを支える技術 7 15 Jan. • 関係データモデル以外のデータベース 28 • 総復習 21 p.2
  3. 3. データベースシステム論 [第15回] データベースシステム論 第15回 関係データモデル以外のデータベース ~時間の都合上技術のエッセンスのみ~ p.3
  4. 4. データベースシステム論 復習 [第2回] [第15回] 歴史 データベースの歴史は、現実の我々の身の回りにある 情報をどのようにコンピュータ上に再現するかの挑戦 といえる。我々が当たり前のように使っている表形式 のデータが登場する前に様々な試みがあった ネットワーク型データモデル(1960年代) ワイン バローロ 買う 1万円 売る 人 山田 人 50歳 佐藤 40歳 p.4
  5. 5. データベースシステム論 復習 [第2回] [第15回] 歴史 データベースの歴史は、現実の我々の身の回りにある 情報をどのようにコンピュータ上に再現するかの挑戦 といえる。我々が当たり前のように使っている表形式 のデータが登場する前に様々な試みがあった 階層型データモデル(1960年代後半) 人 佐藤 部長 人 山田 人 課長 渡辺 課長 p.5
  6. 6. データベースシステム論 復習 [第2回] [第15回] 歴史 データベースの歴史は、現実の我々の身の回りにある 情報をどのようにコンピュータ上に再現するかの挑戦 といえる。我々が当たり前のように使っている表形式 のデータが登場する前に様々な試みがあった 関係データモデル(1970年代) 役職 部長 課長 課長 支店長 名前 佐藤 山田 渡辺 マイケル 部下 上司 山田 佐藤 渡辺 佐藤 マイケル 佐藤 p.6
  7. 7. データベースシステム論 [第15回] データモデルはRelationalだけじゃない そもそも現実のデータは構造化されていない ワインセット ソムリエ 年齢 価格 ワイン 評価 高級白ワイン 田崎信哉 50 シャルドネ カテナ ★★★ セミヨンブロークンウッド ★★★ おたる ★ おたる ★★ デリカート白 ★★★ ガロフォリ白 ★ シャトー・ジレット ★★ オーパスワン ★★★ ヒル・オブ・グレイス ★ お買い得白ワイン お勧めワインセット 復習 [第10回] 横山昌平 田崎信哉 36 50 10000 3000 150000 p. 7
  8. 8. データベースシステム論 [第15回] XML – Extensible Markup Language • HTMLタグのような文法を持つデータ記述言語 • SGML(Standard Generalized Markup Language)が前身 • 汎用的な文章記述言語 • XMLのタイプ • 整形式XML文書 (well-formed XML document) • スキーマが無く自由に記述・拡張可能 • 妥当なXML文書 (valid XML document) • DTD等によりスキーマを記述できる • プログラムからの利用 • SAX • ファイルの先頭から走査し構成要素をイベントとして返す • DOM • XMLの木構造全体を読み込みメモリ上に展開 p.8
  9. 9. データベースシステム論 [第15回] XML- 例 <レシピ 名前="パン" 準備時間="5分" 調理時間="3時間"> <料理>基本的なパン</料理> <材料 量='3' 単位='カップ'>小麦粉</材料> <材料 量='0.25' 単位='オンス'>イースト</材料> <材料 量='1.5' 単位='カップ' 状態="温かい">水</材料> <材料 量="1" 単位="ティースプーン">食塩</材料> <要領> <手順>全ての材料を一緒にして混ぜます。</手順> <手順>十分にこねます。</手順> <手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順> <手順>もう一度こねます。</手順> <手順>パン焼きの容器に入れます</手順> <手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順> <手順>オーブンに入れて温度を180℃にして30分間焼きます。</手順> </要領> </レシピ> 出典:http://ja.wikipedia.org/wiki/Extensible_Markup_Language p.9
  10. 10. データベースシステム論 [第15回] XMLの問い合わせ XPath XML木の特定のノードの位置を表現 linuxのディレクトリの表現に似た文法 加えて基本的な問い合わせの機能を持つ /レシピ/材料[@単位!= ティースプーン ] 手順[last()] XQuery RDBに対するSQLに相当するXML問い合わせ言語 XPathよりも複雑な問い合わせに対応 『FLWOR表現』を基本とした文法 for句、let句、where句、order by句、return句 p.10
  11. 11. データベースシステム論 XMLのデータベース • Apache Xindice (開発終了) • 初期の有名なXMLデータベース • Tamino • 商用ベースのネイティブXMLデータベース • 国産 • TX1(東芝) • Shunsaku(富士通) • EsTerra(メディアフュージョン) • RDB統合タイプ • Oracle XML DB • IBM DB2 9 pureXML [第15回] p.11
  12. 12. データベースシステム論 [第15回] RDF - Resource Description Framework 「リソース」の「メタデータ」を記述 要素間の関係を記述可能 トリプルを使ってデータを表現 主語(subject), 述語(predicate), 目的語(object) データベース システム論 担当教員 横山昌平 一般的にXML形式でシリアライズされる 「オープンデータ」のデータ形式として利用 p.12
  13. 13. データベースシステム論 [第15回] RDFの問い合わせ SPARQL SPARQL Protocol and RDF Query Language 次のSPARQLクエリは、アフリカ諸国の首都のリスト PREFIX abc: <http://mynamespace.com/exampleOntologie#> SELECT ?capital ?country WHERE { ?x abc:cityname ?capital. ?y abc:countryname ?country. ?x abc:isCapitalOf ?y. ?y abc:isInContinent abc:africa. } 出展:http://ja.wikipedia.org/wiki/SPARQL p.13
  14. 14. データベースシステム論 [第15回] 「NoSQL」ムーブメント • そういうソフトがある訳ではありません。 • 文字通りSQLにNoを言うムーブメント • 柔らかく「Not only SQL」と解釈すべき? • RDBのメリット(難しい事をDBがやってくれる) • ACIDの保証 • データに対するスキーマの厳密な適用 • 強力な結合演算 • 上記のメリットの反面、性能が犠牲になる • 上記メリットを捨てる事でメリットもある • スケーラビリティ(大規模分散化) p.14
  15. 15. データベースシステム論 NoSQL関連のキーワード • KVS (Key-Value Store) • 連想配列・ハッシュテーブルに基いたDB • Amazon Dynamo, Memcached, Hibari • カラム(列)指向 • キーに対し大量のカラムを保存するのに適したDB • Apache HBase, Apache Cassandra • グラフ型 • 文字通り「グラフ」を保存するのに適したDB • Neo4j • ドキュメント指向 • 半構造データを集合に対し高速に問い合わせ • MongoDB, Apache CouchDB [第15回] p.15
  16. 16. データベースシステム論 [第15回] MongoDB • フリーのドキュメント指向データベース • 「ドキュメント」=JSON形式でデータ投入 • ディスク上にはバイナリ化(BSON形式)して保存 • ドキュメントの集合「コレクション」を管理 • 特徴 • • • • • 半構造データ スキーマレス 高速(インデクスの付与も可) 大規模分散 ACIDと結合が弱い p.16
  17. 17. データベースシステム論 MongoDBのWebページ • http://www.mongodb.org/ [第15回] p.17
  18. 18. データベースシステム論 JSON • JavaScript Object Notation • 配列やオブジェクトとその入れ子を表現 • 要はJavaScriptの右辺 • 配列 • var arr = [“りんご”,”ごりら”,”らっぱ”]; • オブジェクト • var obj = {“静岡県”:”静岡市”,”神奈川県”:”横浜市”}; • XMLのような半構造データを記述可能 [第15回] p.18
  19. 19. データベースシステム論 MongoDB − データ挿入 db.car.insert({ "maker":"Honda", "model":"N-ONE", "option":["四駆","横滑り防止装置","エアバック"] }); db.car.insert({ "maker":"Abarth", "model":"500", "baseMode":"Fiat 500", "option":{ "エアコン":"オートエアコン", "シート":"レザーシート", "その他":["ターボ","MT"] } }) [第15回] p.19
  20. 20. データベースシステム論 [第15回] MongoDB − データ検索 一致検索 db.car.find({ maker : Abarth }) { "_id" : ObjectId("52e6856416abdf51a6d36b63"), "maker" : "Abarth", "model" : "500", "baseMode" : "Fiat 500", "option" : { "エアコン" : "オー トエアコン", "シート" : "レザーシート", "その他" : [ "ターボ", "MT" ] } } ソート db.car.find().sort({maker:1}) { _id : ObjectId( 52e6856416abdf51a6d36b63 ), maker : Abarth , ・・・ { "_id" : ObjectId("52e6856316abdf51a6d36b62"), "maker" : "Honda", p.20
  21. 21. データベースシステム論 [第15回] MongoDB − プログラミング JavaScriptで記述可能 Google V8: JavaScript実行エンジン Google Chrome(ブラウザ)に採用されている 例 for文で1万個のデータを挿入 for (var i = 0; i < 10000; i++){ db.test.insert({x:i, y:Math.random()}); } →ブラウザと同じJavaScriptがDBで動く! p.21
  22. 22. データベースシステム論 復習 [第2回] [第15回] 三層構成のWeb データベースを利用したWebアプリ ブラウザ Webサーバ DBサーバ p.22
  23. 23. データベースシステム論 復習 [第2回] [第15回] p.23 三層構成のWeb データベースを利用したWebアプリ ブラウザ Webサーバ DBサーバ Chrome node.js MongoDB Google V8 Google V8 Google V8 全てのレイヤがJavaScriptで技術可能!!
  24. 24. データベースシステム論 次回予告 2月4日 期末試験 [第15回] p.24
  25. 25. 2月4日 期末試験 データベースシステム論 • 情13室 • 各机の真ん中に一人ずつ座ってください。 • 多分、席は足りるでしょう・・・ • 15分以上遅刻しない事。 • 遅刻しても延長しません。 • 公欠以外での再試はありません • 先週出した模試レベルの問題は解けるように • 合格点:60点 • これまでの講義中課題を加味します。 [第15回] p. 25

×