我正在为经典的“用户帖子”和“标签”问题设计谷歌数据存储架构。关系索引实体和投影查询
这page建议关系指数实体模型。基本上它将可搜索的标签或关键字放置在子实体中用于过滤的列表属性以及父实体中的必要属性。据我了解,这种方法是在查询时减少序列化开销。
class Post(db.Model):
title = db.StringProperty()
post_date = db.DateTimeProperty()
class Tags(db.Model):
tags = db.StringListProperty()
mytags = Tags(parent=post, tags=many_tags)
- 鉴于projection queries可以得到属性的子集,是关系指数实体仍然需要减少列表属性的序列化的开销?
注意:投影查询有limits;关系指数实体不。
关系指标实体是否使查询更加困难?说我想过滤在过去7天内创建的帖子的标签'汽车'的帖子。标签和post_date是不同的,有没有简单的方法来做到这一点?
关于爆炸指数,关系指数实体是否减少了爆炸指数的机会,因为它将列表属性置于不同的类型?
感谢您提前回答。
附注:从https://cloud.google.com/appengine/docs/standard/python/datastore/api-overview:“注意:强烈建议开发人员构建新应用程序以使用NDB客户端库,该库有几个与此客户端库相比的优势,例如通过Memcache API进行自动实体缓存如果您当前正在使用旧版DB客户端Li brary,阅读DB到NDB移植指南“ –