Google App Engineのキーバリューストレージの特徴

最近使ってみてて、リレーショナルDBと比較して、こんなんかなーって思うこと。
 
リレーショナルDBのシーケンスPK → GAEでは、インデックス付きの1プロパティにした方が良い。
リレーショナルDBのユニークFK → GAEでは、こっちをキー(PKみたいなもの)にした方が良い。
 
 
シーケンスで付けられるIdは、シーケンス自体がユニークを生成してくれるため、重複登録の心配がない。
なので、インデックス付きの1プロパティにしてしまったほうが良い。
 
FKってのは、他のエンティティへのリンクなわけだけれども、1つのエンティティへのリンクは1つに限定したい場合って、それを制限する方法がGAEではあんまりない。
1つはエンティティグループを同じにする方法だけれども、これはスケールアウトの妨げになるので避けたい。
なので、FKをエンティティのキーにして、ユニーク性を保証する方法が、一番合ってる。
 
ちなみにユニークFKは1つまでしか貼れない。これはエンティティキーを利用した方法であっても、エンティティグループを利用した方法であっても同じ。
 
GAEではその辺も考えて、設計をする必要がある。