MongoDBイン・アクション

[cover photo]
TOPICS
Database , PHP , Ruby
発行年月日
PRINT LENGTH
380
ISBN
978-4-87311-590-0
原書
MongoDB in Action
FORMAT
PDF
Print
3,740円
この商品は品切れ再入荷未定です

本書はMongoDBを学びたいアプリケーション開発者やDBAに向けて、MongoDBの基礎から応用までを包括的に解説する書籍です。MongoDBの機能やユースケースの概要など基本的な事柄から、ドキュメント指向データやクエリと集計など、MongoDB APIの詳細について、さらにパフォーマンスやトラブルシューティングなど高度なトピックまで豊富なサンプルでわかりやすく解説します。付録ではデザインパターンも紹介。コードはJavaScriptとRubyで書かれていますが、PHP、Java、C++での利用についても触れています。MongoDBを使いこなしたいすべてのエンジニア必携の一冊です。

目次

訳者まえがき
著者まえがき
はじめに

I部 初めてのMongoDB
1章 現代的なWebのためのデータベース
    1.1 クラウドの中での誕生
    1.2 MongoDBの主な特徴
        1.2.1 ドキュメントデータモデル
        1.2.2 アドホックなクエリ
        1.2.3 セカンダリインデックス
        1.2.4 レプリケーション
        1.2.5 速度と耐久性
        1.2.6 スケーリング
    1.3 MongoDBのコアサーバーとツール群
        1.3.1 コアサーバー
        1.3.2 JavaScriptのシェル
        1.3.3 データベースドライバ
        1.3.4 コマンドラインツール
    1.4 MongoDBを使う理由
        1.4.1 MongoDBと他のデータベースとの比較
        1.4.2 ユースケースと実働例
    1.5 Tipsと制約
    1.6 まとめ

2章 JavaScriptシェルから使うMongoDB
    2.1 MongoDBのシェルの探求
        2.1.1 シェルの起動
        2.1.2 挿入とクエリ
        2.1.3 ドキュメントの更新
        2.1.4 データの削除
    2.2 インデックスの生成と、インデックスを利用したクエリ
        2.2.1 大規模なコレクションの作成
        2.2.2 インデックス付けとexplain()
    2.3 基本的な管理
        2.3.1 データベース情報の取得
        2.3.2 コマンド群の動作
    2.4 ヘルプの表示
    2.5 まとめ

3章 MongoDBを使ったプログラムの作成
    3.1 Rubyを通して見るMongoDB
        3.1.1 インストールと接続
        3.1.2 Rubyからのドキュメントの挿入
        3.1.3 クエリとカーソル
        3.1.4 更新と削除
        3.1.5 データベースコマンド
    3.2 ドライバの動作
        3.2.1 オブジェクトIDの生成
        3.2.2 BSON
        3.2.3 ネットワーク越しの通信
    3.3 サンプルアプリケーションの構築
        3.3.1 セットアップ
        3.3.2 データの収集
        3.3.3 アーカイブの表示
    3.4 まとめ

II部 MongoDBでのアプリケーション開発
4章 ドキュメント指向データ
    4.1 スキーマ設計の原則
    4.2 eコマースデータモデルの設計
        4.2.1 製品と分類
        4.2.2 ユーザーと注文
        4.2.3 レビュー
    4.3 データベース、コレクション、ドキュメントの基本
        4.3.1 データベース
        4.3.2 コレクション
        4.3.3 ドキュメントと挿入
    4.4 まとめ

5章 クエリと集計
    5.1 eコマースのクエリ
        5.1.1 製品、分類、レビュー
        5.1.2 ユーザーと注文
    5.2 MongoDBのクエリ言語
        5.2.1 クエリセレクタ
        5.2.2 クエリのオプション
    5.3 集計の順序
        5.3.1 ユーザーに基づくレビューのグループ化
        5.3.2 regionによる順序づけのためのmap-reduce
    5.4 集計の詳細
        5.4.1 最大と最小
        5.4.2 distinct
        5.4.3 group
        5.4.4 map-reduce
    5.5 まとめ

6章 更新、アトミックな操作、削除
    6.1 ドキュメント更新の概要
    6.2 eコマースの更新
        6.2.1 製品と分類
        6.2.2 レビュー
        6.2.3 順序づけ
    6.3 アトミックなドキュメントの処理
        6.3.1 注文の状態遷移
        6.3.2 在庫管理
    6.4 MongoDBの更新と削除の基本
        6.4.1 更新の型とオプション
        6.4.2 更新演算子
        6.4.3 findAndModifyコマンド
        6.4.4 削除
        6.4.5 並行性、アトミック性、そして隔離
        6.4.6 更新パフォーマンスに関する注意
    6.5 まとめ

III部 MongoDBを極める
7章 インデックスとクエリの最適化
    7.1 インデックスの理論
        7.1.1 思考実験
        7.1.2 インデックスに関する中核的な概念
        7.1.3 B-tree
    7.2 インデックスの実際
        7.2.1 インデックスの種類
        7.2.2 インデックスの管理
    7.3 クエリの最適化
        7.3.1 低速なクエリの特定
        7.3.2 低速なクエリの検証
        7.3.3 クエリのパターン
    7.4 まとめ

8章 レプリケーション
    8.1 レプリケーションの概要
        8.1.1 レプリケーションの重要性
        8.1.2 レプリケーションのユースケース
    8.2 レプリカセット
        8.2.1 セットアップ
        8.2.2 レプリケーションの動作
        8.2.3 管理
    8.3 マスター−スレーブレプリケーション
    8.4 ドライバとレプリケーション
        8.4.1 接続とフェイルオーバー
        8.4.2 書き込み保障
        8.4.3 読み取りのスケーリング
        8.4.4 タグ付け
    8.5 まとめ

9章 シャーディング
    9.1 シャーディングの概要
        9.1.1 シャーディングとは何か
        9.1.2 シャーディングの動作
    9.2 シャードクラスタのサンプル
        9.2.1 セットアップ
        9.2.2 シャード化されたクラスタへの書き込み
    9.3 シャードクラスタに対するクエリとインデックスの作成
        9.3.1 シャードのクエリの種類
        9.3.2 インデックス付け
    9.4 シャードキーの選択
        9.4.1 非効率的なシャードキー
        9.4.2 理想のシャードキー
    9.5 シャーディングの実際
        9.5.1 デプロイメントと設定
        9.5.2 管理
    9.6 まとめ

10章 デプロイメントと管理
    10.1 デプロイメント
        10.1.1 デプロイメント環境
        10.1.2 サーバーの設定
        10.1.3 データのインポート及びエクスポート
        10.1.4 セキュリティ
    10.2 モニタリングと診断
        10.2.1 ロギング
        10.2.2 モニタリングツール
        10.2.3 外部のモニタリングアプリケーション
    10.3 メンテナンス
        10.3.1 バックアップとリカバリ
        10.3.2 コンパクションと修復
        10.3.3 アップグレード
    10.4 パフォーマンスに関するトラブルシューティング
        10.4.1 インデックスとクエリの効率性の確認
        10.4.2 RAMの追加
        10.4.3 ディスクパフォーマンスの向上
        10.4.4 水平なスケーリング
        10.4.5 プロフェッショナルの支援を仰ぐ
    10.5 まとめ

付録A インストール
    A.1 インストール
        A.1.1 Linux上でのMongoDB
        A.1.2 Mac OS X上でのMongoDB
        A.1.3 Mac OS X上でのMongoDB
        A.1.4 ソースからのMongoDBのコンパイル
        A.1.5 トラブルシューティング
    A.2 基本的な設定オプション
    A.3 Rubyのインストール
        A.3.1 Linux及びMac OS X
        A.3.2 Windows

付録B デザインパターン
    B.1 パターン
        B.1.1 埋め込み対参照
        B.1.2 1対多
        B.1.3 多対多
        B.1.4 木構造
        B.1.5 ワーカーキュー
        B.1.6 動的な属性
        B.1.7 トランザクション
        B.1.8 ローカリティと事前演算
    B.2 アンチパターン
        B.2.1 不注意なインデックス付け
        B.2.2 雑多な型
        B.2.3 バケツのようなコレクション
        B.2.4 巨大でネストの深いドキュメント
        B.2.5 ユーザー毎のコレクション
        B.2.6 シャード化できないコレクション

付録C バイナリデータとGridFS
    C.1 シンプルバイナリストレージ
        C.1.1 サムネイルの保存
        C.1.2 MD5の保存
    C.2 GridFS
        C.2.1 RubyにおけるGridFS
        C.2.2 GridFSとmongofiles

付録D PHP、Java、C++からのMongoDBの利用
    D.1 PHP
        D.1.1 ドキュメント
        D.1.2 接続
        D.1.3 サンプルプログラム
    D.2 Java
        D.2.1 ドキュメント
        D.2.2 接続
        D.2.3 サンプルプログラム
    D.3 C++
        D.3.1 ドキュメント
        D.3.2 接続
        D.3.3 サンプルプログラム

付録E 空間インデックス
    E.1 空間インデックスの基本
    E.2 高度なクエリ
    E.3 複合空間インデックス
    E.4 球面幾何学

付録F MongoDB v2.2
    F.1 MongoDB v2.2の新機能
        F.1.1 Aggregation Framework
        F.1.2 並行処理性能の向上
        F.1.3 Tag Aware Sharding
        F.1.4 TTL(Time To Live) Collection
        F.1.5 Read Preferencesとタグセット

索引