views4GCPのストレージサービスについてまとめてみた。Exp:58632メカです。TweetShareHatena注意この記事は2014年4月14日に更新されたもので、内容が古い可能性がありますのでご注意ください。1つのエンティティにプロパティをいくつまで作れるか1つのエンティティにプロパティをいくつまで作れるか(パート2)ふとした思い付きで、データストアの1つのエンティティにプロパティをいくつまで作ることができるのか、と思っていろいろ調べていました。1エンティティ当たり1MBというデータ量の制限はいろんなところに書かれていましたが、プロパティ数の制限については見つけられませんでした。検証のやり方はデータストアに大量のプロパティを持つエンティティを生成するプログラムを作成し、プロパティ数を増やしていきながら保存と取り出しがいくつまでエラーなくできるのかを確認します。検証用の大量のプロパティを持つエンティティを生成するプログラムを、下記の通り簡単に作成します。property変数で、生成するプロパティの数を指定できるようにします。これが実行されると、エンティティが1件作成されます。{e.printStackTrace();}検証パターンデータストアは、ローカル環境の擬似的なデータストアとGAEの実際のデータストアの2つあります。ローカルとGAE上のデータストアとでプロパティ数がどう違うのか比べ確認します。1エンティティ当たり1MBという制限がありますので、プロパティ数がプロパティ名や型、データのサイズに影響されることもありますので、統一して検証します。プロパティ名・型・値によって保存できるプロパティ数が変わると想定している為、次のケースを考えました。カインド名は、一文字だけで生成します。検証結果ローカル環境とGAE上のデータストアとでプロパティをいくつまで保存させることができるのか検証しました。95672表2.ローカル環境でのデータストアでの保存できる最大プロパティ数ローカルでは上の表の通り一定数まで保存することが確認できました。large.という例外が出ました。1エンティティ当たり1MBという制限がある為、プロパティ数が制限されているのではないかと考えられます。ローカル環境でのケース1~ケース6までを比べると、型によって保存できるプロパティ数が違っていることも確認できました。String型よりも整数型の方がデータ量が少ないので多くのプロパティを作成できる整数型も真偽値型もデータ量は同じであるので最大プロパティ数も同じであるnull値のText型は最もデータ量が少ないのでデータ量を圧迫させないGAE上のデータストア驚いたことにGAE上のデータストアでの最大プロパティ数はケースに関わらず20000個まででした。propertiesという例外が発生しました。この例外を調べたところ、index有りのプロパティを作成した場合に発生する例外であり、indexを作成しないでプロパティを作成すると例外が起きなくなるそうです。“text”);に書き換えて再度検証しました。その結果、20000個の制限を越えて表3に示すようにローカル環境での結果(表2)と殆ど同じ結果になりました。(厳密に言うと、表3の生成できるプロパティ最大数は表2より少なくなっていました。bigという例外が発生しました。95669表3.GAE環境でのデータストアでの保存できる最大unindexedプロパティ数エンティティの保存仕様はローカルとGAE上のデータストアとで違うことが今回の検証で分かりました。GAE上のデータストアは、indexed指定とunindexed指定とで作成できるプロパティ数が変わることも確認できました。今回の検証でローカルではindexedとunindexedとで指定を行った検証をしていなかったので、次回以降ローカル環境でindexedとunindexedを指定した検証を追加で行います。この検証結果が開発の役に立てばと思っております。