sgykfjsm.github.com

デブサミ2013に参加した

Developers Summit 2013、いわゆる「デブサミ」に参加したので、そのまとめ。

【14-A-2】HBase at Ameba

スライド

以下のURLにまとめられている。 http://codezine.jp/article/detail/7003

以下、メモ書き

  • HBaseについて
    • NoSQL
    • Google BigTableのクローン
    • 分散ストレージ
    • 大量のデータを保持するのに向いている
    • Auto Sharding
    • HDFS
      • HBaseの信頼性はHDFSに依存する
    • データモデルはRDBに似ている
      • 違いはColumnがColumn Familyによってグルーピングされること
      • Valueは世代を持つ
    • rowの更新処理はアトミックに行われる
    • データファイルはColumn Familyで分割される
    • 列指向である
    • Column FamilyはI/Oを分散させたいときに使うと良い
    • APIとしてGet, Put, Delete
    • それ以外にもScan, Increment, CAS(Compare and Swap)といった機能も持つ
    • Row Keyの範囲でRegionに分割されて負荷分散される。
      • データの偏りとか
    • Joinが無い
      • 非正規化がほぼ前提
    • クエリに対してスキーマが決まる
      • RDBとは逆のアプローチ
  • HBaseを用いたグラフDB「Hornet」
    • デカグラフ構想
      • スケールするDBが必要になった
      • オンライン処理 高スループットとか
    • 今まで:MySQL + Sharding
      • 書き込みがスケールしにくい
      • Shardingの管理が大変
    • HBaseを利用して、スケールするようにした。また、書き込み速度の点も克服するようにした。
    • ログ解析基盤としてHadoopを使ってた実績があり、ノウハウはあった。
    • Hornetのデータモデル プロパティグラフ
    • アーキテクチャ Clientに対し、GateWayがあり、その後ろにHBase + HDFS(Hadoop)
    • hashを使った分散
    • 今後はOSS展開したい
  • JSON Persistent
    • 複数ラインでの開発、スピードが命というAmebaの現場
    • 背景にDBが各サービスごとに乱立しており、一部が基盤化してしまっていた事情がある。
    • 全部HBaseにして一元管理したいという思い
    • しかしHBaseは難しい
      • 以下に簡単にするか、というのが課題
      • RDBに慣れているエンジニアが多い
    • そこでJSON Persistent
      • 社内ライブラリ
      • Javaのオブジェクトをそのまま保存・読み出しできる。
      • シンプルなコード AnnotationでPKとかを定義
      • インデックス検索、リスト取得
      • ValueにJSONを突っ込むイメージ
      • Row KeyをIndex検索するスキーマ設計
      • これも今後はOSS展開したい

なんか長くなったので、ここで一旦終了