この質問が単純すぎる場合は申し訳ありません。9年生になったばかりです。
NoSQL データベースの設計について学ぼうとしています。読み取り/書き込みの回数を最小限に抑える Google データストア モデルを設計したいと考えています。
これは、1 対多の関係でのブログ投稿とコメントのおもちゃの例です。すべてのコメントを StructuredProperty に格納するか、Comment モデルで KeyProperty を使用するか、どちらがより効率的ですか?
繰り返しますが、目的は、データストアへの読み取り/書き込みの数を最小限に抑えることです。次の仮定を行うことができます。
- コメントは、それぞれのブログ投稿とは別に取得されません。(これにより、StructuredProperty が最も好ましいと思われます。)
- コメントは、日付、評価、作成者などで並べ替えることができる必要があります (データストアのサブプロパティはインデックスを作成できないため、パフォーマンスに影響する可能性がありますか?)
- ブログ投稿とコメントは、作成後に編集 (または削除) することができます。
構造化プロパティの使用:
from google.appengine.ext import ndb
class Comment(ndb.Model):
various properties...
class BlogPost(ndb.Model):
comments = ndb.StructuredProperty(Comment, repeated=True)
various other properties...
KeyProperty の使用:
from google.appengine.ext import ndb
class BlogPost(ndb.Model):
various properties...
class Comment(ndb.Model):
blogPost = ndb.KeyProperty(kind=BlogPost)
various other properties...
データストアへの読み取り/書き込みの数を最小限に抑えることに関して、1 対多の関係を効率的に表現することに関連するその他の考慮事項を自由に提起してください。
ありがとう。