0

我意识到NDB/Google Datastore不支持位数据类型和支持操作符。在NDB中实现位数据/操作符的设计模式

但有没有人有任何建议的解决方法。

我的数据是一个分类树,用户可以选择多个类别。理想的实现应该是将其作为单个数字进行存储,并按位和操作来查找匹配。

此外,有没有人知道NDB /数据存储路线图?提前致谢。

+1

请不要大叫。谢谢。 – bernie 2013-03-12 17:25:45

+0

这种过早优化的气味。 – jterrace 2013-03-12 17:29:27

回答

1

如果你想要一些按位支持,bitstring是一个很好的库(版本2.2作品,与patch)。但是,您将无法根据各个位进行查询,只能查看整个位串。

如果每个用户可能选择的类别数量仅为少数,请考虑使用重复属性,并为每个类别选择一个列表条目。这允许轻松查询,并且不会像您想象的那样占用您的配额。

请记住,大部分成本来自读写。只要您限制每次获取的实体数量,查询便宜;如果你有100或100万个这样的实体,这并不重要。

当涉及到存储数据时,GAE需要一些开箱即用的思想(这里,非规范化有时是件好事)。我建议从头至尾阅读数据存储文档,以便深入了解查询和索引的工作方式。还有一个Google I/O演示文稿,介绍它如何在隐藏条件下工作。

正如jterrace暗示的那样,有时您不得不怀疑是否花费在开发时间的最佳解决方案所花费的时间超过效率较低但更容易的解决方案的额外成本。

+0

在一个平台上看起来最佳解决方案可能不是另一种情况 - 在appengine上的点位域和可索引性/可搜索性的情况;-) – 2013-03-13 01:31:48

+0

酷感谢mil!重复的财产 - 我不知道这个!凉!这应该工作!关于开箱即用的思考..非常真实...我一直在做规范化的SQL设计的年龄.. GAE确实需要一些重新布线在我的一端..感谢mil! – 2013-03-13 02:11:19

+0

只要注意重复的属性。如果您的查询涉及多个重复属性,则可以运行到爆炸索引(它们听起来很吓人)。 [阅读全文](https://developers.google.com/appengine/docs/python/datastore/indexes#Index_Limits) – jdiaz5513 2013-03-13 02:33:03