设计模式在NDB中实现位数据/运算符

时间:2013-03-12 17:24:51

标签: python google-app-engine python-2.7 google-cloud-datastore google-cloud-sql

我意识到NDB / Google数据存储区不支持位数据类型和支持运营商。

但是有没有人有任何建议可以解决。

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

此外,有谁知道NDB / Datastore路线图?提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

请记住,大部分成本来自读写。只要限制每次获取的实体数量,查询就很便宜;如果您拥有100或1,000,000个此类实体并不重要。

GAE在存储数据方面需要一些开箱即用的思考(这里,非规范化有时是一件好事)。我建议从上到下阅读数据存储文档,以便深入了解查询和索引的工作方式。还有一个关于它如何在幕后工作的Google I / O演示文稿。

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