JJUG CCC 2009 Fallに参加しました - SQL脳からBigTable脳へbyひがさん

いつもどおりメモメモ。ちょいちょいにまとめなおしているので、そのままではありません。 適当に随時更新します。

スケールさせるためには

方法論を変えないといけない。 ツールだけ変えてもだめ(RDBMS→KVS)。

Bigtable?

ぶっちゃけHashMap。

  • Distributed
  • Sorted
  • Map(Array) Sorted Mapってなんぞ?

Available Operation

  • Get
  • Put
  • Delete
  • Prefix scan(キーに対する検索)
  • 前方一致
  • Range scan(キーに対する検索)
  • 範囲検索 ポイント
  • 1つのプロパティに対してしかfilterできない
  • 使えるフィルタは <, <=, ==, =>, >の5つ
  • OR, INがない
  • Joinできない
  • 集約関数使えない

Transaction

Single row transaction

  • Atomic Put
  • Read committed timestamp
  • Write journal
  • Apply journal
  • Update committed timestamp
  • Atomic Get
  • Read committed timestamp
  • Read entity by timestamp

Datastore

parallelでoperationできる。 スケールを出すためには、このParallelをうまく使うことが必要不可欠

  • Table
  • Get(+Parallel)
  • Put(+Parallel)
  • Delete(+Parallel)
  • Prefix scan(Ancestor query)
  • Index
  • Prefix scan
  • Range scan

Ancestor query

子テーブル(dataset)の操作にしても、親テーブル(dataset)のtimestampを更新したりしないといかん。

Single property index

kind, property name, valueのセットでindexingされる。 もともとsortされているので、orderすると実質selectが走る。

  • only equality filters
  • only inequality filter(which can only be of a single property)
  • no filters and only one sort order on a property composit indexはあるにはあるけど、お勧めしないそうな。
Event 

See also