NoSQLプログラミング実践活用技法(長尾 高弘 長尾 高弘 シャシャンク・ティワリ 中村 泰久)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. NoSQLプログラミング実践活用技法

NoSQLプログラミング実践活用技法

翻訳
原著

監修

形式:
書籍
発売日:
ISBN:
9784798126050
定価:
4,180(本体3,800円+税10%)
仕様:
B5変・432ページ
カテゴリ:
データベース
キーワード:
#データ・データベース,#ネットワーク・サーバ・セキュリティ,#システム運用,#開発環境
紙の書籍

ビッグデータ処理の技術要件:初歩からマスタリングまで

Webマーケティングで脚光を浴びる「ビッグデータ」。その背後で不可欠な技術要件である「NoSQL」の全体像を見通せる最強の概説書です。NoSQLの基礎から始まり、パフォーマンスのチューニングやアーキテクチャ上のガイドラインといった高度な話題まで踏み込んだ、NoSQLを学びたいすべてのエンジニアに有用な情報が凝縮されています。

【主な内容】●MapReduceベースのスケーラブルなデータ処理の基本 ●Hadoopを使ったサンプル ●HiveやPigといった高水準の抽象モデル ●Amazon Web ServicesとGoogle App Engineが提供するデータベースサービスに関する解説 ●Google、Amazon、Facebook、Twitter、LinkedInのスケーラブルなデータアーキテクチャ

第1部 さあ始めよう

1章 NoSQLとは何か、なぜ必要なのか

1.1 NoSQLの定義と基礎知識
 1.1.1 NoSQLの簡単な歴史と登場の経緯
 1.1.2 ビッグデータ
 1.1.3 スケーラビリティ
 1.1.4 MapReduce入門
1.2 ソート済み列指向データベース
1.3 キー/バリュー型データストア
1.4 ドキュメントデータベース
1.5 グラフデータベース
1.6 まとめ

2章 Hello NoSQL:最初の一歩

2.1 最初の味見:2つの単純なサンプルを試してみる
 2.1.1 単純な永続データセット:住みたい場所
 2.1.2 車のモデルとメーカーのデータを格納する
2.2 言語バインディングを操作する
 2.2.1 MongoDBのドライバ
 2.2.2 Thrift入門
2.3 まとめ

3章 NoSQLのインターフェイス、インタラクション

3.1 SQLでなければ何なのか
 3.1.1 データの格納とアクセス
 3.1.2 MongoDBにおけるデータの格納とアクセス
 3.1.3 MongoDBのクエリー
 3.1.4 Redisにおけるデータの格納とアクセス
 3.1.5 Redisのクエリー
 3.1.6 HBaseにおけるデータの格納とアクセス
 3.1.7 HBaseのクエリー
 3.1.8 Apache Cassandraにおけるデータの格納とアクセス
 3.1.9 Apache Cassandraのクエリー
3.2 NoSQLデータベースの言語バインディング
 3.2.1 言語を選ばないThrift
 3.2.2 Java用の言語バインディング
 3.2.3 Python用の言語バインディング
 3.2.4 Ruby用の言語バインディング
 3.2.5 PHP用の言語バインディング
3.3 まとめ

2部 NoSQLの基礎を学ぶ

 

4章 ストレージアーキテクチャの基礎

4.1 列指向データベースの操作
 4.1.1 リレーショナルデータベースでは表と列を使う
 4.1.2 列指向データベースとRDBMSの違い
 4.1.3 ネストされたキー/値ペアとしての列指向データベース
 4.1.4 Webテーブルのレイアウトを作る
4.2 HBase分散ストレージアーキテクチャ
4.3 ドキュメントデータベースの内部構造
 4.3.1 メモリマップトファイルへのデータの格納
 4.3.2 MongoDBのコレクションとインデックスの利用ガイドライン
 4.3.3 MongoDBの信頼性と持続性
 4.3.4 水平スケーリング
4.4 MemcachedとRedisのキー/バリュー型データストア
 4.4.1 Memcachedの内部構造
 4.4.2 Redisの内部構造
4.5 結果整合性データベース
 4.5.1 コンシステントハッシュ
 4.5.2 オブジェクトのバージョン管理
 4.5.3 ゴシップベースのメンバーシップとヒントハンドオフ
4.6 まとめ

5章 CRUD操作の実行

5.1 レコードの作成
 5.1.1 ドキュメントデータベースのレコード作成操作
 5.1.2 列指向データベースのレコード作成操作
 5.1.3 キー/値マップのレコード作成操作
5.2 データへのアクセス
 5.2.1 MongoDBのドキュメントへのアクセス
 5.2.2 HBaseのデータアクセス
 5.2.3 Redisのクエリー
5.3 データの更新と削除
 5.3.1 MongoDB、HBase、Redisでのデータの更新
 5.3.2 制限された不可分性とトランザクション完全性
5.4 まとめ

6章 NoSQLデータベースのクエリー

6.1 SQLとよく似ているMongoDBのクエリー
 6.1.1 MovieLensデータの格納
 6.1.2 MongoDBのMapReduce
6.2 HBaseなどの列指向データベースへのアクセス
 6.2.1  株価履歴データ
6.3 Redisのクエリー:詳説
6.4 まとめ

7章 データストアの設計変更と拡張の管理

7.1 ドキュメントデータベースの設計変更
 7.1.1 スキーマレスの柔軟性
 7.1.2 MongoDBへのデータのインポートとエクスポート
7.2 列指向データベースのスキーマ拡張
 7.2.1 HBaseへのデータのインポートとエクスポート
7.3 キー/バリュー型データストアでのデータの拡張
7.4 まとめ

8章 データセットのインデクシングとソート

8.1 データベースのインデックス
8.2 MongoDBのインデクシングとソート
8.3 MongoDBのインデックスの作成と活用法
 8.3.1 複合インデックス
 8.3.2 一意でスパースなインデックスの作成
 8.3.3 キーワードベースの検索とマルチキー
8.4 CouchDBのインデックスとソート
 8.4.1 CouchDBにおけるB木インデックス
8.5 Apache Cassandraのインデクシング
8.6 まとめ

9章 トランザクションとデータ完全性の管理

9.1 RDBMSとACID
 9.1.1 分離レベルと独立性の関係
9.2 分散ACIDシステム
 9.2.1 整合性
 9.2.2 可用性
 9.2.3 分断耐性
9.3 CAP定理の原理
 9.3.1 可用性を犠牲にするオプション
 9.3.2 分断耐性を犠牲にするオプション
 9.3.3 整合性を犠牲にするオプション
9.4 一部のNoSQL製品における整合性の実装
 9.4.1 MongoDBの分散整合性
 9.4.2 CouchDBの結果整合性
 9.4.3 Apache Cassandraの結果整合性
 9.4.4 Membaseの整合性モデル
9.5 まとめ

3部 NoSQLに熟達する

10章 クラウドのNoSQL(GAEとAmazon SimpleDB)

10.1 Google App Engineのデータストア
 10.1.1 GAE Python SDKのインストールとセットアップ
 10.1.2 PythonによるGAE用データモデリングの基礎
 10.1.3 クエリーとインデックス
 10.1.4 サポートされているフィルタとソート
 10.1.5 Java SDKのごく簡単な紹介
10.2 Amazon SimpleDB
 10.2.1 SimpleDBに触れてみる
 10.2.2 REST APIの使い方
 10.2.3 Javaを使ってSimpleDBにアクセスする
 10.2.4 Ruby、Pythonを使ってSimpleDBにアクセスする
10.3 まとめ

11章 MapReduceによるスケーラブルな並列処理

11.1 MapReduceの基本
 11.1.1 個々の銘柄の最高値を探す
 11.1.2 NYSE株価履歴データをCouchDBにロードする
11.2 HBaseのMapReduce
11.3 MapReduceの可能性とApache Mahout
11.4 まとめ

12章 Hiveによるビッグデータの分析

12.1 Hiveの基礎
12.2 再び映画の評価レコード
12.3 古きよきSQL
12.4 Hive QLの結合操作
 12.4.1 実行計画
 12.4.2 パーティションテーブル
12.5 まとめ

13章 データベースの内部構造

13.1 MongoDBの内部構造
 13.1.1 MongoDBのワイヤプロトコル
 13.1.2 ドキュメントの挿入
 13.1.3 コレクションへのクエリーの発行
 13.1.4 MongoDBのデータベースファイル
13.2 Membaseのアーキテクチャ
13.3 Hypertableの内部動作
 13.3.1 正規表現サポート
 13.3.2 ブルームフィルタ
13.4 Apache Cassandra
 13.4.1 ピアツーピアモデル
 13.4.2 ゴシップとアンチエントロピー
 13.4.3 高速書き込み
 13.4.4 ヒントハンドオフ
13.5 Berkeley DB
 13.5.1 ストレージの構成
13.6 まとめ

4部 NoSQLを極める

14章 どのNoSQL製品を選ぶべきか

14.1 NoSQL製品の比較
 14.1.1 スケーラビリティ
 14.1.2 トランザクション完全性と整合性
 14.1.3 データモデリング
 14.1.4 クエリーのサポート
 14.1.5 アクセスとインターフェイス
14.2 ベンチマークテストによるパフォーマンスの計測
 14.2.1 読み/更新で50/50
 14.2.2 読み/更新で95/5
 14.2.3 スキャン
 14.2.4 スケーラビリティテスト
 14.2.5 Hypertableテスト
14.3 開発の経緯に基づいた比較
14.4 まとめ

15章 データベースの併用

15.1 MySQLとNoSQLの併用
15.2 イミュータブルなデータストア
 15.2.1 Facebookのポリグロットパーシステンス
 15.2.2 データウェアハウスとビジネスインテリジェンス
15.3 WebフレームワークとNoSQL
 15.3.1 RailsでNoSQLを使う
 15.3.2 DjangoでNoSQLを使う
 15.3.3 Spring DataのNoSQLサポート
15.4 RDBMSからNoSQLへの移行
15.5 まとめ

16章 パフォーマンスチューニング

16.1 並列処理アルゴリズムの目標
 16.1.1 レイテンシを減らす意味
 16.1.2 スループットの向上
 16.1.3 線形スケーラビリティ
16.2 パフォーマンスに影響を与える数式
 16.2.1 アムダールの法則
 16.2.2 リトルの法則
 16.2.3 メッセージコストモデル
16.3 パーティション分割
16.4 異種混在環境でのスケジューリング
16.5 MapReduceのさらなるチューニング
 16.5.1 通信のオーバーヘッド
 16.5.2 圧縮
 16.5.3 ファイルのブロックサイズ
 16.5.4 並列コピー
16.6 HBaseコプロセッサ
16.7 ブルームフィルタ
16.8 まとめ

17章 ツールとユーティリティ

17.1 RRDtool
17.2 Nagios
17.3 Scribe
17.4 Flume
17.5 Chukwa
17.6 Pig
 17.6.1 Pigとのインターフェイス
 17.6.2 Pig Latinの基礎
17.7 nodetool
17.8 OpenTSDB
17.9 Solandra
17.10 HummingbirdとC5t
17.11 GeoCouch
17.12 Alchemy Database
17.13 Webdis
17.14 まとめ

付 録 NoSQL製品のインストールとセットアップ

A.1 Hadoopのインストールとセットアップ
 A.1.1 Hadoopをインストールする
A.1.2 シングルノードHadoopを設定する
A.1.3 擬似分散モードをセットアップする
A.2 HBaseのインストールとセットアップ
A.3 Hiveのインストールとセットアップ
 A.3.1 Hiveをセットアップする
 A.3.2 Hadoopの設定との関係
A.4 Hypertableのインストールとセットアップ
 A.4.1 HypertableディストリビューションをFHS準拠にする
 A.4.2 HypertableでHDFSを使うための設定
A.5 MongoDBのインストールとセットアップ
A.5.1 MongoDBをセットアップする
A.6 CouchDBのインストールとセットアップ
A.7 Redisのインストールとセットアップ
A.8 Cassandraのインストールとセットアップ
 A.8.1 Cassandraをセットアップする
 A.8.2 Cassandra用にlog4jをセットアップする
 A.8.3 ソースからCassandraをインストールする
 A.8.4 Couchbaseをインストール、セットアップする
A.9 Nagiosのインストールとセットアップ
 A.9.1 Nagiosをダウンロード、ビルドする
 A.9.2 Nagiosをセットアップする
 A.9.3 Nagios Pluginをコンパイル、インストールする
A.10 RRDtoolのインストールとセットアップ
索引

コラム目次

RDBMS の欠点
データサイズの数学
ディスクストレージとデータの読み書き速度
Thrift とは何か
なぜMongoDB とApache Cassandra だけなのか
MongoDB のデータディレクトリとポートをカスタマイズする
Apache Cassandraノードを実行するための基本設定
Redisサンプルについて
BSON はプロトコルバッファのようなものか
Redis がOS の仮想メモリスワッピングを使わないのはなぜか
一意なプライマリキー
MovieLens
クエリードキュメントのデータ型
垂直スケーリングの難点と分散コンピューティングの落とし穴
クラウドで利用できるリレーショナルデータベース
SimpleDB のリージョン
認証要求
Hive はリアルタイムクエリーのためのツールではない
BSON の仕様

付属データはこちら

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2012年10月24日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 occupation_mapper.py
3~4行目
occupation_dict = { 0: "other or not specified",
occupation_dict = { 0: "other or not specified",

Webダウンロードサンプルに誤植がありました
ch12.zip内の occupation_mapper.py ファイル

現在公開中のものは正しい内容に修正済みです
2012.10.24
1刷 279
hive_movielens.txt
hive> ADD FILE /path/to/occupation_mapper.py; /Users/tshanky/workspace/hadoop_workspace/hive_workspace/occupation_mapper.py; hive> INSERT OVERWRITE TABLE user_2
hive> ADD FILE /path/to/occupation_mapper.py; hive> INSERT OVERWRITE TABLE user_2
2012.10.24