Cassandra

[cover photo]
TOPICS
Database
発行年月日
PRINT LENGTH
368
ISBN
978-4-87311-529-0
原書
Cassandra: The Definitive Guide
FORMAT
PDF
Ebook
3,740円
Ebookを購入する

本書は、NoSQLミドルウェアの代表格であるCassandraについて包括的に解説する書籍です。Cassandraの概要、インストール、データモデル、データの読み込みと書き込みなどの基礎から、モニタリングやメンテナンス、パフォーマンスチューニングなど、実践的な事柄までをサンプルコードを多用して詳しく解説します。さらに、Hadoopとの連携や、Cassandra以外の非リレーショナルデータベースについてもカバーしています。日本語版では、正式リリースされた1.0の基盤であるバージョン0.8を中心に新機能についても収録。Cassandraに関心のある開発者、運用管理者に必携の一冊です。

目次

目次

序文
はじめに

1章 Cassandraとは
    1.1 リレーショナルデータベースの何が問題なのか?
    1.2 リレーショナルデータベースの簡単な復習
        1.2.1 RDBMS:よい点、よくない点
        1.2.2 Webスケール
    1.3 Cassandra概要:エレベーターピッチ
        1.3.1 Cassandraを一言で語ると
        1.3.2 分散および非中央集中型
        1.3.3 伸縮自在なスケーラビリティ
        1.3.4 高可用性と耐障害性
        1.3.5 設定可能な一貫性
        1.3.6 ブリューワのCAP定理
        1.3.7 ロウ指向
        1.3.8 スキーマフリー
        1.3.9 高いパフォーマンス
    1.4 Cassandraの由来
    1.5 Cassandraの利用事例
        1.5.1 巨大なデプロイメント
        1.5.2 大量の書き込み、統計、解析
        1.5.3 地域分散
        1.5.4 アプリケーションの進化
    1.6 誰がCassandraを使っているのか?
    1.7 まとめ

2章 Cassandraのインストール
    2.1 バイナリのインストール
        2.1.1 ダウンロードしたアーカイブの展開
        2.1.2 中には何が入っているのか?
    2.2 ソースからのビルド
        2.2.1 追加のビルドターゲット
    2.3 Cassandraの実行
        2.3.1 Windowsでの実行
        2.3.2 Linuxでの実行
        2.3.3 Cassandraサーバの開始
    2.4 コマンドラインインタフェースの実行
    2.5 CLIの基本コマンド
        2.5.1 helpコマンド
        2.5.2 Cassandraサーバへの接続
        2.5.3 環境の確認
        2.5.4 キースペースとカラムファミリの作成
        2.5.5 データの書き込みと読み込み
    2.6 まとめ

3章 Cassandraのデータモデル
    3.1 リレーショナルデータモデル
    3.2 簡単な概論
    3.3 クラスタ
    3.4 キースペース
    3.5 カラムファミリ
        3.5.1 カラムファミリのオプション
    3.6 カラム
        3.6.1 ワイドロウ、スキニーロウ
        3.6.2 カラムのソート
    3.7 スーパーカラム
        3.7.1 コンポジットキー
    3.8 RDBMSとCassandraのデザインの違い
        3.8.1 クエリ言語がない
        3.8.2 参照整合性がない
        3.8.3 セカンダリインデックス
        3.8.4 ソートは設計での決定事項である
        3.8.5 非正規化
    3.9 デザインパターン
        3.9.1 マテリアライズドビュー
        3.9.2 バリューレスカラム
        3.9.3 アグリゲートキー
    3.10 いくつかの注意点
    3.11 まとめ

4章 サンプルアプリケーション
    4.1 データデザイン
    4.2 RDBMSによるホテルアプリケーションの設計
    4.3 Cassandraによるホテルアプリケーションの設計
    4.4 ホテルアプリケーションのコード
        4.4.1 データベースを作成する
        4.4.2 データ構造
        4.4.3 コネクションの取得
        4.4.4 データベースへの初期データの投入
        4.4.5 検索アプリケーション
    4.5 Twissandra
    4.6 まとめ

5章 Cassandraのアーキテクチャ
    5.1 systemキースペース
    5.2 ピアツーピア(P2P)
    5.3 ゴシッププロトコルと故障検出
    5.4 アンチエントロピーとリードリペア
    5.5 memtable、SSTable、コミットログ
    5.6 ヒントハンドオフ
    5.7 コンパクション
    5.8 ブルームフィルタ
    5.9 トゥームストーン
    5.10 ステージイベントドリブンアーキテクチャ(SEDA)
    5.11 マネージャとサービス
        5.11.1 Cassandraデーモン
        5.11.2 ストレージサービス
        5.11.3 メッセージングサービス
        5.11.4 ヒントハンドオフマネージャ
    5.12 まとめ

6章 Cassandraの設定
    6.1 キースペース
        6.1.1 カラムファミリの作成
    6.2 レプリカ
    6.3 レプリカ配置戦略
        6.3.1 Simple Strategy
        6.3.2 Old Network Topology Strategy
        6.3.3 Network Topology Strategy
    6.4 レプリケーションファクタ
        6.4.1 レプリケーションファクタを増やす
    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.7 クラスタの作成
        6.7.1 クラスタ名の変更
        6.7.2 クラスタへのノードの追加
        6.7.3 複数のシードノード
    6.8 動的なリングへの参加
    6.9 セキュリティ
        6.9.1 SimpleAuthenticatorの使用
        6.9.2 プログラマティックな認証
        6.9.3 MD5暗号の使用
        6.9.4 独自の認証の実装
    6.10 その他の設定項目
    6.11 その他のツール
        6.11.1 キーの閲覧
        6.11.2 以前の構成のインポート
    6.12 まとめ

7章 データの読み込みと書き込み
    7.1 RDBMSとCassandraのクエリの違い
        7.1.1 更新クエリがない
        7.1.2 書き込みはレコード単位の原子性を持つ
        7.1.3 サーバサイドトランザクションの機能がない
        7.1.4 重複キーがない
    7.2 書き込みの基本的な特性
    7.3 設定可能な一貫性レベル
    7.4 読み込みの基本的な特性
    7.5 API
        7.5.1 レンジとスライス
    7.6 データの準備とインサート
    7.7 getの簡単な使い方
    7.8 データの準備
    7.9 Slice Predicate
        7.9.1 Get Sliceによる特定のカラム名の取得
        7.9.2 Slice Rangeによるカラムセットの取得
        7.9.3 ロウのすべてのカラムの取得
    7.10 レンジスライスの取得
    7.11 Multiget Slice
    7.12 削除
    7.13 Batch Mutates
        7.13.1 Batch Delete
        7.13.2 レンジゴースト
    7.14 プログラムでのキースペースとカラムファミリの定義
    7.15 まとめ

8章 クライアント
    8.1 ベーシックなクライアントAPI
    8.2 Thrift
        8.2.1 ThriftのJavaサポート
        8.2.2 例外
    8.3 Gitについて
    8.4 クライアントノードへの接続
        8.4.1 クライアントのリスト
        8.4.2 ラウンドロビンDNS
        8.4.3 ロードバランサ
    8.5 Cassandra Webコンソール
    8.6 Hector(Java)
        8.6.1 機能
        8.6.2 HectorのAPI
    8.7 HectorSharp(C#)
    8.8 Chirper
    8.9 Chiton(Python)
    8.10 Pelops(Java)
    8.11 Kundera(Java ORM)
    8.12 Fauna(Ruby)
    8.13 まとめ

9章 監視
    9.1 ロギング
        9.1.1 ログの追跡
        9.1.2 一般的なヒント
    9.2 JMXおよびMBeanの概要
        9.2.1 MBean
        9.2.2 JMXの統合
    9.3 JMX経由のCassandraとの対話
    9.4 CassandraのMBean
        9.4.1 org.apache.cassandra.concurrent
        9.4.2 org.apache.cassandra.db
        9.4.3 org.apache.cassandra.gms
        9.4.4 org.apache.cassandra.service
    9.5 カスタムCassandra MBean
    9.6 ランタイム解析ツール
        9.6.1 JMXとJHATが持つヒープの分析
        9.6.2 スレッドの問題の検出
    9.7 ヘルスチェック
    9.8 まとめ

10章 メンテナンス
    10.1 リング情報の取得
        10.1.1 情報
        10.1.2 リング
    10.2 統計の取得
        10.2.1 cfstatsの使い方
        10.2.2 tpstatsの使い方
    10.3 基本的なメンテナンス
        10.3.1 リペア
        10.3.2 フラッシュ
        10.3.3 クリーンアップ
    10.4 スナップショット
        10.4.1 スナップショットの作成
        10.4.2 スナップショットのクリア
    10.5 ノードの使用停止
    10.6 ノードの更新
        10.6.1 トークンの削除
        10.6.2 コンパクションの閾値
        10.6.3 稼働クラスタのカラムファミリの変更
    10.7 まとめ

11章 パフォーマンスチューニング
    11.1 データストレージ
    11.2 リプライタイムアウト
    11.3 コミットログ
    11.4 memtable
    11.5 並行性
    11.6 キャッシング
    11.7 バッファサイズ
    11.8 Pythonストレステストの使用
        11.8.1 Python Thriftインタフェースの生成
        11.8.2 Pythonストレステストの実行
    11.9 スタートアップとJVMの設定
        11.9.1 JVMのチューニング
    11.10 まとめ

12章 Hadoop連携
    12.1 Hadoopとは
    12.2 MapReduceの操作
        12.2.1 Cassandra Hadoopソースパッケージ
    12.3 ワードカウントの実行
    12.4 MapReduceの上位ツール
        12.4.1 Pig
        12.4.2 Hive
    12.5 クラスタの設定
    12.6 ユースケース
        12.6.1 Raptr.com:キース・ソーンヒル氏
        12.6.2 Imagini:デーブ・ガードナー氏
    12.7 まとめ

13章 バージョン0.8からの新機能
    13.1 CQL(Cassandra Query Language)
        13.1.1 CQLのインストール
        13.1.2 cqlshの操作方法
        13.1.3 CQLの文
    13.2 その他の新機能
        13.2.1 分散カウンタ
    13.3 まとめ

付録A 非リレーショナルデータベースのランドスケープ
    A.1 非リレーショナルデータベース
    A.2 オブジェクトデータベース
    A.3 XMLデータベース
        A.3.1 SoftwareAG Tamino
        A.3.2 eXist
        A.3.3 Oracle Berkeley XML DB
        A.3.4 MarkLogic Server
        A.3.5 Apache Xindice
        A.3.6 XMLデータベースのまとめ
    A.4 ドキュメント指向データベース
        A.4.1 IBM Lotus
        A.4.2 Apache CouchDB
        A.4.3 MongoDB
        A.4.4 Riak
    A.5 グラフデータベース
        A.5.1 FlockDB
        A.5.2 Neo4J
    A.6 キーバリューストアと分散ハッシュテーブル
        A.6.1 Amazon Dynamo
        A.6.2 Voldemortプロジェクト
        A.6.3 Redis
    A.7 カラムナデータベース
        A.7.1 Google Bigtable
        A.7.2 HBase
        A.7.3 Hypertable
    A.8 データベースの多様化
    A.9 まとめ

用語集
索引