• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
分散KVSのデータモデリング
 

分散KVSのデータモデリング

on

  • 7,891 views

 

Statistics

Views

Total Views
7,891
Views on SlideShare
7,887
Embed Views
4

Actions

Likes
12
Downloads
67
Comments
0

3 Embeds 4

https://twitter.com 2
http://www.taaza.com 1
http://b.hatena.ne.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    分散KVSのデータモデリング 分散KVSのデータモデリング Presentation Transcript

    • 分散 KVS の データモデリング
    • 分散 KVS の利点と課題
      • 利点
        • Elastic scaling (弾力性のあるスケーラビリティ)
        • Big data (大規模データ)
        • Goodbye DBAs (さらばデータベース管理者)
        • Economics (経済性)
        • Flexible data models (柔軟なデータモデル)
      • 課題
        • Maturity (成熟)
        • Support (サポート)
        • Analytics and business intelligence (アナリティクスとビジネスインテリジェンス)
        • Administration (管理)
        • Expertise (専門性)
      • NoSQL について知っておくべき 10 の事柄
      • ( http://www.publickey1.jp/blog/10/nosql10.html ) より引用
      今日のテーマ
    • HBase 、 Cassandra のデータモデル
      • multi dimensional sorted map
        • 多次元の整列済み連想配列
        • Bigtableのデータモデル
      • カラム指向(column oriented)
        • RDBMSは行指向
        • 動的な列の定義が可能
      • Query-based model
        • 問い合わせに合わせてデータモデルを作り込む
        • RDBMSはDomain-based model
    • データ構造 Column SuperColumn ColumnFamily Keyspace Cassandra 動的 動的 Column カラム 静的 Table ColumnFamily テーブル 静的 スキーマ 定義 HBase RDBMS
    • データの物理的配置
      • HBase
        • テーブルのデータは適当なデータ量で分割される
        • どのノードがどの範囲のキーを持っているかはマスターで管理
        • テーブル内のデータはキー順でソートされている
      • Cassandra
        • キーを元に計算されたトークンの値により、データを保存するノードが決定
        • デフォルトではトークンはキーから計算されたハッシュ値なため、連続した値でも分散される
        • どのノードがどの範囲のキーを持っているかはクラスタ全体で共有している
        • トークンの生成ロジック ( Partitioner ) を入れ替えればキーでソートさせることも可能
        • SuperColumn 、 Column は名前でソートされている
    • データの取得
      • キーを指定して 1 件取得
        • メモリにキャッシュされていない場合は BloomFilter などを利用して取得
      • キーの範囲を指定して検索
        • HBase
          • 出来る。取得件数の上限無し
        • Cassandra
          • 出来るが、 Partitioner の実装により動作が異なる
          • 取得数の上限有り
      • カラム名の範囲を指定して取得
        • HBase
          • 出来る
        • Cassandra
          • 出来る
          • 取得数の上限有り
    • 設計例:ユーザの行動履歴
      • データ
        • ユーザ ID
          • ユーザごとに一意
        • 行動 ID
          • システムで一意
          • 新しい方が数字が大きい
        • 逆順ソート用行動 ID
          • 逆順ソート用に変換した行動 ID
          • 新しい方が数字が小さい
          • 10 桁固定 ( 先頭 0 埋め )
      • 要件
        • ユーザごとの行動履歴の最新 n 件を取得したい
    • 設計例: HBase の場合
      • キー
        • ユーザ ID_ 逆順ソート用行動 ID
      • テーブル名・カラムファミリー名
        • UserAction
      • カラム名
        • action
        • ユーザの行動内容
      • 最新 n 件の取得方法
        • キーの範囲検索
      C_9999999996 C_9999999993 C_9999999991 A_9999999999 B_9999999996 B_9999999998 C_9999999995 A_9999999992 A_9999999990 キー
    • 設計例: Cassandra の場合
      • キー
        • ユーザ ID
      • カラムファミリー名
        • UserAction
      • スーパーカラム名
        • 逆順ソート用行動 ID
      • カラム名
        • action
        • ユーザの行動内容
      • 最新 n 件の取得方法
        • ユーザを指定してスーパーカラムの範囲検索
      C B A キー 9999999995 9999999994 9999999993 9999999991 9999999998 9999999996 9999999999 9999999992 9999999990 スーパーカラム
    • 設計方針
      • HBase
        • 出来るだけキーを細かい単位で設定
        • キーの範囲検索で最新 n 件を取得
      • Cassandra
        • キーはある程度荒い粒度に設定
        • SuperColumn の範囲検索で最新 n 件を取得
        • ただし同じキーのデータが大量になると分散に偏りが出やすいので注意が必要
    • ちなみに
      • Google App Engine のデータストアの場合はプロパティに対してインデックスが作成可能
      • 特定のインデックスが付いたプロパティには範囲検索も可能
      • 将来的には HBase や Cassandra にもこのような二次インデックスの機能がつくようになるはず
    • まとめ
      • KVSとRDBのデータモデルの違いを知る
        • カラム指向と行指向
        • Query-based modelとDomain-based model
      • KVSのデータモデルを知る
        • 動的なカラム定義
        • RDBとの違い
      • データの物理配置とアクセス方法を知る
        • ソートされたデータを範囲検索で取り出せるか
        • データの物理配置がモデリングに与える影響
    • 参考URL
      • HBase/DataModel
        • http:// wiki.apache.org/hadoop/Hbase/DataModel
      • HBase の構造 ( 概要と DataModel)
        • http://lunarium.info/arc/index.php/HBase%E3%81%AE%E6%A7%8B%E9%80%A0(%E6%A6%82%E8%A6%81%E3%81%A8DataModel)
      • Cassandra Data Model
        • http://www.slideshare.net/ebenhewitt/cassandra-datamodel-4985524
      • Cassandra データモデル入門
        • http://d.hatena.ne.jp/digitalsoul/20100628/1277681382