Я все еще изучаю свои уроки по моделированию данных в bigtable / nosql и буду признателен за некоторые отзывы. Было бы справедливо сказать, что мне следует избегать отношений между родителями и детьми в моем моделировании данных, если мне часто приходится иметь дело с детьми в совокупности по родителям?
В качестве примера давайтеДопустим, я создаю блог, в который будут вносить вклад многие авторы, и у каждого есть посты, а у каждого поста есть теги.Так что я мог бы потенциально настроить что-то вроде этого:
class Author(db.Model):
owner = db.UserProperty()
class Post(db.Model):
owner = db.ReferenceProperty(Author,
collection_name='posts')
tags = db.StringListProperty()
Как я понимаю, это создаст группу сущностей на основе родительского элемента Author. Приводит ли это к неэффективности, если мне в основном нужно запрашивать сообщения по тегам, которые я собираюсь разделить по нескольким авторам?
Я понимаю, что выполнение запроса к свойствам списка может быть неэффективным.Допустим, в каждом посте в среднем около 3 тегов, но он может доходить до 7. И я ожидаю, что моя коллекция возможных тегов будет стоить меньше. Есть ли какая-нибудь польза от изменения этой модели на что-то подобное?
class Author(db.Model):
owner = db.UserProperty()
class Post(db.Model):
owner = db.ReferenceProperty(Author,
collection_name='posts')
tags = db.ListProperty(db.Key)
class Tag(db.Model):
name = db.StringProperty()
Или мне лучше сделать что-то подобное?
class Author(db.Model):
owner = db.UserProperty()
class Post(db.Model):
owner = db.ReferenceProperty(Author,
collection_name='posts')
class Tag(db.Model):
name = db.StringProperty()
class PostTag(db.Model):
post = db.ReferenceProperty(Post,
collection_name='posts')
tag = db.ReferenceProperty(Tag,
collection_name='tags')
И последний вопрос ... что делать, если мой самый распространенный вариант использования будет запрашивать сообщения по нескольким тегам.Например, «найти все посты с тегами в {« яблоки »,« апельсины »,« огурцы »,« велосипеды »}» Является ли один из этих подходов более подходящим для запроса, который ищет посты, имеющие какую-либо коллекциютегов?
Спасибо, я знаю, что это было полным глотком.: -)