0

我意识到 NDB / Google Datastore 不支持位数据类型和支持运算符。

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

我的数据是一个类别树,用户可以选择多个类别。理想的实现是存储为单个数字并执行按位和运算以找到匹配项。

另外,有人知道 NDB/Datastore 路线图吗?提前致谢。

4

1 回答 1

1

如果你想要一些按位支持,bitstring 是一个很好的库(2.2 版可以工作,带有补丁)。但是,您将无法基于单个位进行查询,而只能将整个位串作为一个整体进行查询。

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

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

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

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

于 2013-03-13T00:35:21.363 回答