More Related Content
More from Shohei Yokoyama (6)
データベースシステム論15 - 関係データモデル以外のデータベース
- 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. データベースシステム論
[第15回]
XML- 例
<レシピ 名前="パン" 準備時間="5分" 調理時間="3時間">
<料理>基本的なパン</料理>
<材料 量='3' 単位='カップ'>小麦粉</材料>
<材料 量='0.25' 単位='オンス'>イースト</材料>
<材料 量='1.5' 単位='カップ' 状態="温かい">水</材料>
<材料 量="1" 単位="ティースプーン">食塩</材料>
<要領>
<手順>全ての材料を一緒にして混ぜます。</手順>
<手順>十分にこねます。</手順>
<手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順>
<手順>もう一度こねます。</手順>
<手順>パン焼きの容器に入れます</手順>
<手順>布で覆い、暖かい部屋で1時間そのままにしておきます。</手順>
<手順>オーブンに入れて温度を180℃にして30分間焼きます。</手順>
</要領>
</レシピ>
出典:http://ja.wikipedia.org/wiki/Extensible_Markup_Language
p.9
- 11. データベースシステム論
XMLのデータベース
• Apache Xindice (開発終了)
• 初期の有名なXMLデータベース
• Tamino
• 商用ベースのネイティブXMLデータベース
• 国産
• TX1(東芝)
• Shunsaku(富士通)
• EsTerra(メディアフュージョン)
• RDB統合タイプ
• Oracle XML DB
• IBM DB2 9 pureXML
[第15回]
p.11
- 12. データベースシステム論
[第15回]
RDF - Resource Description Framework
「リソース」の「メタデータ」を記述
要素間の関係を記述可能
トリプルを使ってデータを表現
主語(subject), 述語(predicate), 目的語(object)
データベース
システム論
担当教員
横山昌平
一般的にXML形式でシリアライズされる
「オープンデータ」のデータ形式として利用
p.12
- 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
- 15. データベースシステム論
NoSQL関連のキーワード
• KVS (Key-Value Store)
• 連想配列・ハッシュテーブルに基いたDB
• Amazon Dynamo, Memcached, Hibari
• カラム(列)指向
• キーに対し大量のカラムを保存するのに適したDB
• Apache HBase, Apache Cassandra
• グラフ型
• 文字通り「グラフ」を保存するのに適したDB
• Neo4j
• ドキュメント指向
• 半構造データを集合に対し高速に問い合わせ
• MongoDB, Apache CouchDB
[第15回]
p.15
- 18. データベースシステム論
JSON
• JavaScript Object Notation
• 配列やオブジェクトとその入れ子を表現
• 要はJavaScriptの右辺
• 配列
• var arr = [“りんご”,”ごりら”,”らっぱ”];
• オブジェクト
• var obj = {“静岡県”:”静岡市”,”神奈川県”:”横浜市”};
• XMLのような半構造データを記述可能
[第15回]
p.18
- 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. データベースシステム論
[第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