java - GAE/J 范围查询中最大可能的键字符串是什么?

标签 java google-app-engine google-cloud-datastore

谷歌应用引擎上的键空间结构如下 香蕉a3fadawsgdg 香蕉hrgsgsgsdgs 香蕉-regsgsdgsgg 番茄-fsfg33424ff 番茄-dsfgsgasdgs

即有一个类型和一个编码成一个字符串的唯一部分(不,这不是 GAE 类型,它是我们编造的类型)。 现在的问题是如何使用 GAE 范围查询检索所有 banana-...... 键。

为此,我需要尽可能低的 key ,可能是“banana-00000000000”和可能是最高的 key ,可能是“bananna-zzzzzzzzzz”。但是,由于存在 unicode,因此可能必须使用更有趣的代码点。而且,由于这是应用程序引擎,询问而不是盲目尝试是有意义的。

最佳答案

您可能不需要知道可能的最高 key 。

对于范围查询,您可以使用 banana. 作为上限(. 是紧跟在 - 之后的 ASCII/unicode 字符)。

如果您确实需要知道最高可能的 key ,那么首先它取决于第二部分中允许的字符数(如果它是可变的,则选择它可能的最大数字),然后 IIRC 0xFFFF 可以合法地出现在 UCS-2 中/UTF-16,但不是定义的代码点,因此可能会被拒绝。所以尝试用 z 代替,如果它有效,那么它就有效。如果 U+FFFD(替换字符)可能足够接近 BMP 的顶部,因为 U+FFFE 被故意取消分配,以便 BOM U +FEFF 可用于指示字节顺序。

我不知道 Datastore 是否/如何处理关键字符串比较中的非 BMP 代码点。

关于java - GAE/J 范围查询中最大可能的键字符串是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607656/

相关文章:

java - hibernate 保存或更新: no SqlStatement when a field is present

java - App Engine session 安全问题

python - 如何将值为 True 的数据存储中的所有属性移动到另一个数据存储?

node.js - Google Cloud Datastore,如何查询更多结果

java - 使用 Runtime.getRuntime().exec 提交时找不到 Spark-submit 命令

java - Thymeleaf 自定义方言不起作用

python - 为什么 keys_only 查询没有返回高度一致的结果?

java - Google DataStore 与 objectify - HashMap 上的复合查询

java - Android getSharedPreferences 不在方法内工作

java - 是否可以在不部署动态代码的情况下部署 GAE 静态文件?