アプリ エンジンで高度に接続された階層データをモデル化しようとしています。
次に例を示します。
Person:
Phone Numbers:
Number: 555-555-5555, Ext: 123, Notes: Work
Number: 444-444-4444, Ext: 456, Notes: Mobile
1 つのエンティティには、JSON BLOB として保存されたデータ構造が含まれていました。
これを行う 1 つの方法は、phone_numbers
コレクションを JSON テキストのインデックス付けされていない blob として保存し、検索プロパティを追加して、電話番号で人を照会できるようにすることです。
p_entity = Person()
p_entity.phone_numbers = dbText(simplejson.dumps([{'Number':'555-555-5555', 'Ext':'123', 'Notes':'Work'},{'Number':'444-444-4444', Ext:'456', Notes:'Mobile'}]))
p_entity.phone_numbers_search_property = ['5555555555', '4444444444']
p_entity.put()
親子関係を持つ複数のエンティティ:
別の方法は、子エンティティと親エンティティを使用することです。
person_entity = Person()
person_entity.put()
phone_entity1 = PhoneNumber(parent=person_entity)
phone_entity.Number = '5555555555'
phone_entity.Ext = '123'
phone_entity.Notes = 'Work'
phone_entity2 = PhoneNumber(parent=person_entity)
phone_entity.Number = '4444444444'
phone_entity.Ext = '456'
phone_entity.Notes = 'Mobile'
ユースケース:
これは高度に関連したデータです。person オブジェクトには、複数の電話番号が含まれています。ただし、これらの電話番号との間で電話をかけることもできます。電話の記録もこれらの電話番号を参照する必要があります。
親子エンティティ関係の目的:
ドキュメントを読んだ後、親子エンティティ関係の目的はトランザクションを実行することであるという印象を受けました。
しかし、この場合も適切でしょうか? 親とそのすべての子をデータストアから引き出すことは、1 つのエンティティをその「子」とともに JSON テキスト BLOB として格納するのと同じくらい効率的ですか?
基本的な質問
Google App Engine でこの種のデータを処理するための通常の受け入れられた方法はありますか?