内容紹介
グラフデータモデルとグラフデータベースの特徴と使い方をまとめたすぐれた入門書!
SNSの普及やデータの相互依存の複雑化などによって、既存のリレーショナルデータモデルだとうまくいかないケースが増えてきており、リレーショナルデータモデルの代わりに使われはじめたのが「グラフデータモデル」です。本書ではこのグラフデータモデルと、このモデルを使ったグラフデータベースについて解説しています。特にグラフデータベースの代表的な存在であるNeo4jについて書かれており、Neo4jの開発者自身による執筆で信頼度が高く、実例も随所に織り込まれ実用性が高くなっています。内部構造についても書かれており、なぜRDBよりもこちらの構造のほうがグラフ処理に適しているのかが理解できます。
このような方におすすめ
データベースエンジニア、データ分析担当者
目次
詳細目次
序
まえがき
1章 はじめに
1.1 グラフとは何か
1.2 グラフ領域の概要
1.2.1 グラフデータベース
1.2.2 グラフ計算エンジン
1.3 グラフデータベースの能力
1.3.1 パフォーマンス
1.3.2 柔軟性
1.3.3 アジャイル性
1.4 まとめ
2章 つながりのあるデータを格納するための選択肢
2.1 リレーショナルデータベースには関係が欠如している
2.2 NoSQLデータベースにも関係が欠如している
2.3 グラフデータベースは関係を包含する
2.4 まとめ
3章 グラフでのデータモデリング
3.1 モデルと目的
3.2 プロパティグラフモデル
3.3 グラフのクエリ:Cypher入門
3.3.1 Cypherの哲学
3.3.2 START
3.3.3 MATCH
3.3.4 RETURN
3.3.5 その他のCypher句
3.4 リレーショナルモデリングとグラフモデリングの比較
3.4.1 システム管理ドメインでのリレーショナルモデリング
3.4.2 システム管理ドメインでのグラフモデリング
3.4.3 モデルのテスト
3.5 クロスドメインモデル
3.5.1 シェイクスピアのグラフの作成
3.5.2 クエリの開始
3.5.3 検索する情報パターンの宣言
3.5.4 一致の制限
3.5.5 結果の処理
3.5.6 クエリの連鎖
3.6 一般的なモデリングの落とし穴
3.6.1 メールの発信元の問題ドメイン
3.6.2 妥当な最初の反復?
3.6.3 二度目は成功
3.6.4 ドメインの進化
3.7 アンチパターンの回避
3.8 まとめ
4章 グラフデータベースアプリケーションの構築
4.1 データモデリング
4.1.1 アプリケーションニーズの観点でのモデルの表現
4.1.2 物のためのノード、構造のための関係
4.1.3 粒度の細かい関係と汎用的な関係
4.1.4 ノードとしての事実のモデリング
4.1.5 ノードとしての複合値型の表現
4.1.6 時間
4.1.7 反復型で漸進的な開発
4.2 アプリケーションアーキテクチャ
4.2.1 組み込みかサーバか
4.2.2 クラスタリング
4.2.3 負荷分散
4.3 テスト
4.3.1 テスト駆動データモデル開発
4.3.2 パフォーマンステスト
4.4 キャパシティプランニング
4.4.1 最適化の基準
4.4.2 パフォーマンス
4.4.3 冗長性
4.4.4 負荷
4.5 まとめ
5章 実世界のグラフ
5.1 グラフデータベースを選ぶ理由
5.2 一般的なユースケース
5.2.1 ソーシャル
5.2.2 レコメンデーション
5.2.3 地理空間
5.2.4 マスタデータ管理
5.2.5 ネットワーク管理とデータセンター管理
5.2.6 認可とアクセス制御(通信)
5.3 実世界の例
5.3.1 ソーシャルレコメンデーション(専門家ソーシャルネットワーク)
5.3.2 認可とアクセス制御
5.3.3 地理情報(物流)
5.4 まとめ
6章 グラフデータベースの内部
6.1 ネイティブグラフ処理
6.2 ネイティブグラフストレージ
6.3 プログラミングAPI
6.3.1 カーネルAPI
6.3.2 コア(Beans)API
6.3.3 トラバーサルAPI
6.4 非機能的な特徴
6.4.1 トランザクション
6.4.2 復旧可能性
6.4.3 可用性
6.4.4 スケーリング
6.5 まとめ
7章 グラフ理論を使った予測分析
7.1 深さ優先探索と幅優先探索
7.2 ダイクストラ法での経路探索
7.3 A*アルゴリズム
7.4 グラフ理論と予測モデリング
7.4.1 三者閉包
7.4.2 構造的バランス
7.5 ローカルブリッジ
7.6 まとめ
付録 A NoSQLの概要
A.1 NoSQLの台頭
A.2 ACIDとBASEの対比
A.3 NoSQLの4象限
A.3.1 ドキュメントストア
A.4 キーバリューストア
A.5 カラムファミリー
A.6 集約ストアでのクエリと処理の比較
A.7 グラフデータベース
A.7.1 プロパティグラフ
A.7.2 ハイパーグラフ
A.7.3 トリプル
付録 B Neo4j以外のグラフデータベース
B.1 商用のグラフデータベース
B.1.1 InfiniteGraph
B.1.2 Sparksee
B.1.3 AllegroGraph
B.2 オープンソースのグラフデータベース
B.2.1 OrientDB
B.2.2 Titan
B.3 その他のグラフデータベース
B.3.1 HyperGraphDB
B.3.2 Sones GraphDB
B.3.3 InfoGrid
B.3.4 FlockDB
B.3.5 Trinity
B.4 Titanのインストールと使用方法
B.4.1 Apache Cassandraのインストールと起動
B.4.2 Titanのインストールと起動
B.4.3 Gremlinシェルの使用方法
B.4.4 Rexsterグラフサーバ
B.4.5 TitanにおけるRexsterの制限事項
B.5 TinkerPop
B.5.1 TinkerPop2
B.5.2 TinkerPop3
索引
続きを見る