Извините, если этот вопрос слишком прост; Я вхожу только в 9 класс.
Я пытаюсь узнать о дизайне базы данных NoSQL. Я хочу создать модель хранилища данных Google, которая минимизирует количество операций чтения/записи.
Вот пример игрушек для сообщения в блоге и комментариев в отношениях "один ко многим". Что более эффективно - сохранение всех комментариев в StructuredProperty или использование KeyProperty в модели комментариев?
Опять же, цель состоит в том, чтобы минимизировать количество операций чтения/записи в хранилище данных. Вы можете сделать следующие предположения:
- Комментарии не будут получены независимо от их соответствующего сообщения в блоге. (Я подозреваю, что это делает StructuredProperty наиболее предпочтительным.)
- Комментарии должны быть отсортированы по дате, рейтингу, автору и т.д. (Подпрограммы в хранилище данных не могут быть проиндексированы, возможно, это может повлиять на производительность?)
- Оба сообщения и комментарии в блогах могут быть отредактированы (или даже удалены) после их создания.
Использование 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...
Не стесняйтесь поднимать любые другие соображения, которые относятся к эффективному представлению отношения "один ко многим" в отношении сведения к минимуму количества чтения/записи в хранилище данных.
Спасибо.