私はGoogle App Engineを使用しており、Big Tableを使用しています。大きなテーブルでは、子(サブ)コレクションのキー値は普通ですか?
私はこのようになりますperson
エンティティいます
{
// This property would be encoded into JSON and saved un-indexed as db.Text()
phone_numbers:
{
'hHklams8akjJkaJSL': // <-- Should I key this object?
{
number:'555-555-5555',
type:'mobile',
},
etc...
},
// This property is an array of strings.
// It is searchable so that a query could be run to find all
// people with a particular phone number:
// "SELECT * FROM person WHERE phone_number_search_property =
// '5555555555'"
phone_number_search_property:['5555555555','other phone numbers...'],
first_name:'...',
etc...
}
phone_number
プロパティは、JSON形式(db.Text)にインデックス付けされていないテキストのBLOBとして格納されます。この状況で特定の電話番号を参照したい場合は、jsonをデコードしてから、探している特定のキーで電話番号を取得します。
phone_number_search_property
が検索に使用されます。 "SELECT * FROM person WHERE phone_number_search_property = '5555555555'"
このような状況でエンティティ内の電話番号を参照するには、どのような方法が適していますか?ここでは、UUIDを使用して各値をキー入力しています。これは物事を行うための「正常な」受け入れられた方法ですか?そうでない場合は、何ですか?
ありがとうございます!
Hey Peter、私はUUIDを使用してキーを作成しました。私はデータそのものをキー入力しないようにするためです。ときには私が思うような情報は、ユニークではないことが判明します。この場合、電話番号だけでなく、電話番号と内線番号をキーにしなければなりません。そして、誰かが主要な会社の電話番号だった電話番号をつくろうとすると、問題の原因となる可能性があります。説明: "Ask for Carol"。誰かが間違った番号を入力して訂正した場合、項目を再入力する必要があります。 –