RDB技術者のためのNoSQLガイド


RDB技術者のためのNoSQLガイド


秀和システム


監修・著者:渡部徹太郎
著者:河村康爾、北沢匠、佐伯嘉康、佐藤直生、原沢滋、平山毅、李昌桓



はじめに

第1章 前提
1-1 この本で伝えたいこと
1-1-1 NoSQLというバズワードの実態を理解
1-1-2 エンタープライズ視点のNoSQL活用方法
1-1-3 NoSQLの最新情報
1-2 想定する読者
1-3 本書の構成

第2章 イントロダクション
2-1 RDBだけだと辛くないですか?
2-1-1 RDBはデファクトスタンダード
2-1-2 SIerのエンジニアにとってのデータベースの経験
2-1-3 業務データを扱うだけでは不十分になってきている
2-1-4 RDBだけでは立ちいかない
2-1-5 RDBが適さない身近なエピソード
2-1-6 RDB以外を知ることが重要
2-1-7 これまでのまとめ
2-2 NoSQLとは
2-2-1 NoSQLはバズワード
2-2-2 KVS,ドキュメントDB,グラフDBの違い
2-2-3 NoSQLがバズワードになった背景
2-3 NoSQLにすると嬉しいこと・辛いこと
2-3-1 アプリケーション開発者にとって
2-3-2 データベース管理者にとって
2-3-3 マネージャや経営者にとって
2-4 よくあるNoSQLの勘違い
2-4-1 「バッチが高速になる」は勘違い
2-4-2 「トランザクションが高速になる」は勘違い
2-4-3 「ビッグデータを分析できる」は勘違い
2-4-4 「非構造データが効率的に扱える」は正確ではない
2-4-5 「RDBから置き換えると速くなる」は正確ではない
2-4-6 「オープンソースしかない」は昔の話
2-4-7 「スキーマがない」は昔の話
2-4-8 「SQLが使えない」は昔の話

第3章 データベースの中のNoSQLの位置づけ
3-1 データベースを分類する2つの軸
3-1-1 重視する性能による分類軸
3-1-2 性能拡張モデルによる分類軸
3-2 データベースの4つのエリア
3-2-1 RDB(OLTP)
3-2-2 RDB(DWH)
3-2-3 Hadoop(HDFS+MapReduce)
3-2-4 KVS
3-2-5 ドキュメントDB
3-2-6 グラフDB
3-3 RDB(OLTP)とKVS/DocDBの違い
3-3-1 RDB(OLTP)は強い整合性
3-3-2 強い整合性を保ったまま性能をスケールするのは困難
3-3-3 KVS/DocDBでは3つの工夫で性能をスケールさせている
3-3-4 CAPの定理
3-4 HadoopとKVS/DocDBの違い
3-4-1 Hadoop(HDFS+MapReduce)の動作
3-4-2 Hadoopと比較したときのKVS/DocDBの動作
3-4-3 4つのデータベースの比較表
3-5 4つのエリアを超えて成長するデータベース達
3-5-1 応答が速くSQLを使えるHadoop
3-5-2 集計できるKVS/DocDB
3-5-3 SQLを使えるNoSQL
3-5-4 JSONを格納するRDB(OLTP)
3-5-5 スケールアウトするRDB(DWH)
3-5-6 オペレーションも分析もできるRDB(DWH)
3-5-7 まとめ

第4章 データモデルごとのNoSQLプロダクト紹介
4-1 データモデルの種類
4-1-1 データモデルの説明
4-1-2 複雑度比較
4-1-3 データ間の関連度とスケーラビリティ比較
4-2 データモデル毎のプロダクトの紹介
4-2-1 キーバリューモデルを採用するプロダクト
4-2-2 ワイドカラムモデルを採用するプロダクト
4-2-3 ドキュメントモデルを採用するプロダクト
4-2-4 グラフモデルを採用するプロダクト

第5章 NoSQLの代表プロダクト紹介を読む前に
5-1 紹介するプロダクトの選定基準
5-1-1 データモデルの中で広く使われていること
5-1-2 国内のサポート体制が整っているもの
5-2 プロダクト紹介の観点

第6章 Redis
6-1 概要
6-2 データモデル
6-2-1 データ型
6-2-2 永続化
6-3 API
6-3-1 クエリの実行例
6-3-2 利用できるクエリ
6-3-3 アプリケーションからの通信手段
6-3-4 部分的トランザクション
6-4 性能拡張
6-4-1 Redis Clusterのシャーディング
6-4-2 クエリの分散
6-4-3 リシャーディング
6-4-4 Redis Clusterのレプリケーションによる読み取り負荷分散
6-4-5 ハッシュタグを用いたRedus Cluster上での複数キー操作
6-5 高可用
6-5-1 レプリケーションによる可用性向上
6-5-2 フェイルオーバ
6-5-3 非同期レプリケーションによるデータのロスト
6-5-4 永続化していないマスターのリカバリ時の注意点
6-6 運用
6-6-1 バックアップ
6-6-2 監視
6-6-3 稼働統計
6-6-4 バージョンアップ
6-7 セキュリティ
6-7-1 パスワード認証
6-7-2 コマンドのリネーム・無効化
6-7-3 暗号化
6-8 出来ないこと
6-8-1 条件検索や集計などの処理が存在しない
6-8-2 ロールバック機能が存在しない
6-8-3 厳密な一貫性の担保
6-8-4 セキュリティ機能に乏しい
6-9 主なバージョンと特徴
6-10 国内のサポート体制
6-11 ライセンス体系
6-12 効果的な学習方法
6-13 その他
6-13-1 Redis Clusterの詳細
6-13-2 シャーディングとレプリケーションを組み合わせ

第7章 Cassandra
7-1 概要
7-1-1 Cassandraの特徴
7-1-2 Cassandraのユースケース
7-1-3 OSS版と商用版
7-2 データモデル
7-2-1 Cassandraオブジェクト
7-3 API
7-3-1 Cassandra Query Language(CQL)
7-3-2 Cassandraのドライバ/コネクタ
7-3-3 軽量トランザクション
7-3-4 バッチ分析
7-3-5 外部Hadoopのサポート
7-3-6 データの検索
7-3-7 分析と検索に対応したワークロードの管理
7-3-8 高速な書き込みと読み込み
7-4 性能拡張
7-4-1 クラスタアーキテクチャの概要
7-4-2 Cassandraのクラスタ、データセンタ、ノード
7-4-3 データの分散
7-4-4 クエリの分散
7-5 高可用
7-5-1 レプリケーションの基礎
7-5-2 マルチデータセンタとクラウドという選択
7-5-3 レプリケーション係数とクエリの整合性レベル
7-6 運用
7-6-1 クエリツール、管理ツール
7-6-2 バックアップとリカバリ
7-6-3 パフォーマンス管理
7-6-4 データの移行
7-7 セキュリティ
7-7-1 認証
7-7-2 権限管理
7-7-3 暗号化
7-7-4 データの監査
7-8 出来ないこと
7-9 主なバージョンと特徴
7-10 国内のサポート体制
7-11 ライセンス体系
7-12 効果的な学習方法
7-12-1 Cassndraの技術マニュアル
7-12-2 Cassandra トレーニング
7-12-3 Cassandraの技術情報、不具合情報

第8章 HBase
8-1 概要
8-2 データモデル
8-3 API
8-3-1 テーブルの作成
8-3-2 データの格納
8-3-3 データの参照
8-3-4 データの更新
8-3-5 データの削除
8-3-6 テーブルの削除
8-3-7 APIについての補足
8-3-8 部分的トランザクション
8-4 性能拡張
8-4-1 HBaseクラスタのコンポーネント
8-4-2 データの分散とクエリの分散
8-5 高可用
8-6 運用
8-6-1 データのバックアップとリストア
8-6-2 監視と稼働統計
8-6-3 バージョンアップ
8-7 セキュリティ
8-7-1 データへのアクセス制御
8-7-2 操作記録
8-7-3 暗号化
8-8 出来ないこと
8-9 主なバージョンと特徴
8-10 国内のサポート体制
8-11 ライセンス体系
8-12 効果的な学習方法

第9章 Amazon DynamoDB
9-1 概要
9-1-1 概要
9-1-2 特徴
9-2 データモデル
9-2-1 アトリビュートのデータ型
9-2-2 DynamoDB JSON
9-2-3 キー
9-2-4 インデックス
9-2-5 DynamoDB Stream
9-3 API
9-3-1 APIとCRUD
9-3-2 アプリケーションから利用する
9-3-3 低レベルAPIと高レベルAPI
9-4 性能拡張
9-4-1 結果整合性
9-4-2 スループット、キャパシティーユニット
9-4-3 パーティション
9-5 高可用
9-5-1 レプリケーション、フェイルオーバ
9-5-2 クロスリージョンレプリケーション
9-6 運用
9-6-1 監視
9-6-2 バックアップ
9-7 セキュリティ
9-7-1 セキュリティの考え方
9-7-2 通信暗号化
9-7-3 アクセスコントロール
9-7-4 監査
9-8 出来ないこと
9-9 国内のサポート体制
9-10 効果的な学習方法
9-11 その他
9-11-1 バージョンと利用料

第10章 MongoDB
10-1 概要
10-1-1 MongoDBの主な特徴
10-2 データモデル
10-2-1 格納するデータの階層
10-2-2 格納できるデータ型
10-2-3 JSONのスキーマの事前チェック(ドキュメントバリデーション)
10-3 API
10-3-1 Mongoクエリ言語の概要
10-3-2 CRUDのサンプル
10-3-3 CRUDの特徴
10-3-4 集計
10-3-5 アプリケーションからの使い方
10-3-6 インデックス
10-4 性能拡張
10-4-1 シャーディングによる性能拡張
10-4-2 セカンダリ読み込みによる読み込み負荷分散
10-5 高可用
10-5-1 レプリケーションの概要
10-5-2 フェイルオーバ
10-5-3 セカンダリの種類
10-5-4 書き込み台数指定クエリ
10-6 運用
10-6-1 バックアップ
10-6-2 ヒューマンエラー対策(遅延レプリケーション)
10-6-3 監視・稼働統計
10-6-4 バージョンアップ
10-6-5 MongoDB Ops Manager
10-7 セキュリティ
10-7-1 通信暗号化
10-7-2 データ暗号化
10-7-3 アクセスコントロール
10-7-4 監査
10-8 出来ないこと
10-9 主なバージョンと特徴
10-9-1 バージョンのつけ方
10-9-2 主なバージョンとその機能
10-10 国内のサポート体制
10-11 ライセンス体系
10-12 効果的な学習方法
10-13 その他
10-13-1 便利な機能一覧

第11章 Couchbase
11-1 概要
11-1-1 Couchbaseという言葉
11-1-2 Couchbase Serverの主な特徴
11-2 データモデル
11-3 API
11-3-1 データへのアクセス方法
11-3-2 クライアントライブラリの各API実行サンプル
11-4 性能拡張
11-4-1 データ分散
11-4-2 データアクセスの分散
11-4-3 リバランスによる無停止でのクラスタ伸縮
11-5 高可用
11-5-1 クラスタ内レプリケーション
11-5-2 物理構成を意識したレプリケーション
11-5-3 複数クラスタ間のレプリケーション(XDCR)
11-6 運用
11-6-1 バックアップ
11-6-2 監視・稼働統計
11-6-3 バージョンアップ
11-7 セキュリティ
11-7-1 通信暗号化
11-7-2 管理者ユーザ、LDAP連携
11-7-3 監査ログ
11-8 出来ないこと
11-9 主なバージョンと特徴
11-9-1 バージョンの振り方
11-9-2 主なバージョンとその機能
11-10 国内のサポート体制
11-11 ライセンス体系
11-12 効果的な学習方法
11-13 その他
11-13-1 モバイルソリューション
11-13-2 便利な機能
11-13-3 ロードマップ
11-13-4 Couchbase Serverアーキテクチャ詳細

第12章 Microsoft Azure DocumentDB
12-1 概要
12-1-1 Microsoft Azure
12-1-2 Microsoft Azureのデータベース関連のサービス
12-1-3 Microsoft Azure DocumentDB
12-1-4 DocumentDBを使ってみよう
12-1-5 Azureの他の機能との連携
12-2 データモデル
12-2-1 リソースモデル
12-2-2 データモデル
12-3 API
12-3-1 REST API
12-3-2 クライアントSDK
12-3-3 インデックス
12-3-4 SQLクエリ(DocumentDB SQL)
12-3-5 ストアドプロシージャ、トリガ、UDF(ユーザ定義関数)、
トランザクション
12-3-6 文字列の検索
12-4 高可用
12-4-1 高可用性のためのアーキテクチャ
12-4-2 整合性レベルとレプリケーション
12-4-3 クライアントからの接続
12-5 性能拡張
12-5-1 コレクション
12-5-2 パーティション分割
12-5-3 パーティション分割に対応したアプリケーションの開発
12-5-4 .NET SDK を使用したパーティション分割
12-6 運用
12-6-1 管理と監視
12-6-2 バックアップ/リストア
12-7 セキュリティ
12-8 出来ない事
12-9 国内のサポート体制
12-10 効果的な学習方法

第13章 Neo4j
13-1 概要
13-1-1 グラフDBに向いている処理
13-1-2 グラフDBに向いていない処理
13-2 データモデル
13-2-1 グラフを構成する要素
13-2-2 グラフデータの格納形式
13-2-3 グラフデータモデル
13-3 API
13-3-1 Cypherクエリ
13-3-2 アプリケーションからのアクセス方法
13-4 性能拡張
13-4-1 HAクラスタによる処理性能向上
13-4-2 キャッシュシャーディングによる処理性能向上
13-5 高可用
13-5-1 HAクラスタのアーキテクチャ
13-5-2 システム構成
13-6 運用
13-6-1 バックアップ
13-6-2 リストア
13-6-3 バルクロード
13-6-4 監視
13-6-5 ログ出力
13-6-6 稼働統計
13-7 セキュリティ
13-8 出来ないこと
13-9 国内のサポート体制
13-10 主要バージョンと特徴
13-10-1 Neo4jのエディション間の比較
13-10-2 ライセンス体系
13-11 効果的な学習方法
13-11-1 公式ドキュメント
13-11-2 ユーザ会
13-11-3 書籍
13-11-4 他の日本語の資料

第14章 想定されるNoSQLのユースケース
14-1 キャッシュ(Redis)
14-1-1 RDBのスケールアップ・スケールアウトによる対処
14-1-2 RedisによるWebアプリケーションキャッシュ
14-1-3 まとめ
14-2 IoT(モノのインターネット)基盤(Cassandra)
14-2-1 RDBを用いた場合の課題
14-2-2 NoSQLによる課題解決
14-3 メッセージ基盤(Cassandra)
14-3-1 なぜNoSQL向きなのか
14-3-2 NoSQLを用いたメッセージ基盤の具体例
14-3-3 まとめ
14-4 Hadoop連携(HBase)
14-4-1 RDBの課題
14-4-2 HBaseによる解決
14-4-3 HBaseとMapReduceアプリケーションの連携
14-5 モバイルアプリケーションに代表されるアプリケーションでの利用(DynamoDB)
14-6 AWSサービスとの連動性を意識した利用(DynamoDB)
14-7 ログ格納システム(MongoDB)
14-7-1 RDBだと大変
14-7-2 MongoDBだと楽
14-7-3 まとめ
14-8 ECサイトのカタログ管理(MongoDB)
14-8-1 RDBだと大変
14-8-2 MongoDBだと楽
14-8-3 まとめ
14-9 高速開発(MongoDB)
14-9-1 RDBだと大変
14-9-2 MongoDBだと楽
14-9-3 Webフレームワークに組み込まれるMongoDB
14-9-4 まとめ
14-10 業界横断型アプリ(MongoDB)
14-10-1 RDBだと大変
14-10-2 MongoDBだと楽
14-10-3 まとめ
14-11 Webアプリ(ユーザプロファイル/セッションストレージ)(Couchbase)
14-11-1 RDBで実現しようとした時の課題
14-11-2 Couchbaseによる解決
14-12 Webアプリ(オムニチャネル/パーソナライズ)(Couchbase)
14-13 データベースのグローバル展開/ディザスタリカバリ(Couchbase)
14-14 モバイルとサーバのデータ同期(Couchbase)
14-15 リアルタイム詐欺摘発システム(Neo4j)
14-15-1 概要
14-15-2 Neo4jによる解決
14-15-3 RDBでは実現が難しい
14-16 適材人材の検索システム(Neo4j)
14-16-1 概要
14-16-2 Neo4jによる解決
14-16-3 RDBでは実現が困難
14-17 経路計算システム(Neo4j)
14-17-1 概要
14-17-2 Neo4jによる解決
14-17-3 RDBでは非効率

第15章 NoSQLの選び方
15-1 データ処理の課題を見極める
15-1-1 NoSQLで解決するのが最適な課題はどれか?
15-1-2 NoSQLでは解決できないRDB(OLTP)の課題
15-1-3 NoSQLで解決するかわからないRDB(OLTP)の課題
15-1-4 NoSQLで解決が期待できるRDB(OLTP)の課題
15-2 高い処理性能を出すためのNoSQLの選び方
15-2-1 小規模なキーバリューならRedis
15-2-2 マルチデータセンタでどこでも書き込めるようにしたいならCassandraかCouchbase
15-2-3 MongoDBは柔軟なデータ分散やレンジ指定クエリを速くしたい場合
15-2-4 Hadoopと一緒ならHBase
15-2-5 クラウド上でのスケーラビリティ獲得ならばDynamoDBやMicrosoft Azure DocumentDBを検討
15-3 半構造データを処理しやすいNoSQLの選び方
15-3-1 ドキュメントDBはどれを選ぶべきか
15-4 その他の選定の観点
15-4-1 可用性の高いNoSQLの選び方
15-4-2 セキュリティの高いNoSQLの選び方
15-5 本書にないNoSQLを選ぶ時のポイント
15-5-1 ありがちな謳い文句に踊らされない
15-5-2 性能比較を当てにしない
15-5-3 最新ドキュメントを見る

索引
著者プロフィール

書籍目次

Posted by shi-n