appengine ja night 5 bt schemaversionの薦め

11

Click here to load reader

Upload: bluerabbit777jp

Post on 05-Jul-2015

1.159 views

Category:

Technology


2 download

DESCRIPTION

App Engineはスキーマレス。スキーマレスの注意点としてプロパティ(カラム)追加を例に問題点とその解決策を記載。また、それを通してindexの仕組みについて理解して頂きたい。

TRANSCRIPT

Page 1: appengine ja night 5 BT SchemaVersionの薦め

appengine ja night#5Beer Talk

SchemaVersionの薦め

source: http://www.flickr.com/photos/katemonkey/122489910/

Page 2: appengine ja night 5 BT SchemaVersionの薦め

自己紹介

はてなID:bluerabbittwitterID:bluerabbit777jp

Page 3: appengine ja night 5 BT SchemaVersionの薦め

SchemaVersionは転ばぬ先の杖

Page 4: appengine ja night 5 BT SchemaVersionの薦め

Bigtableはスキーマレス

Page 5: appengine ja night 5 BT SchemaVersionの薦め

行毎に異なるプロパティを保持できる

Page 6: appengine ja night 5 BT SchemaVersionの薦め

スキーマレスの注意点

Kind(テーブル)にプロパティ(カラム)を追加した際に、過去に登録したデータはプロパティが存在しないまま。追加プロパティを使用したクエリは

条件にしたら過去データはヒットしないソートしても過去データはヒットしない

Page 7: appengine ja night 5 BT SchemaVersionの薦め

App Engineではインデックスを経由してデータを取得する

Key以外での検索時ソート使用時

KEY Value

Emp/age/20/Key2

Emp/age/30/Key3

Emp/age/40/Key4

インデックス データ

Page 8: appengine ja night 5 BT SchemaVersionの薦め

App Engineのクエリはインデックスありき

インデックスを経由してデータを取得するApp Engineでは値による検索はできない例外)下記のクエリはインデックスを使わない

DatastoreService#get(Key key)new Query("Emp").

addFilter("__key__", EQUAL, key);

Page 9: appengine ja night 5 BT SchemaVersionの薦め

プロパティがないのとプロパティがnullは異なる

【プロパティがない=Indexがない】

【プロパティがnull=Indexはある】

プロパティがないとIndexが存在しなくなり 検索できないのは困る

Page 10: appengine ja night 5 BT SchemaVersionの薦め

レコードのバージョンを揃えるためSchemaVersionを持つ

SchemaVersionのプロパティが保持しておくプロパティが増えたらカウントアップ過去データはSchemaVersionで検索して洗い替え

Page 11: appengine ja night 5 BT SchemaVersionの薦め

ご清聴ありがとうございました