在我们的项目中,我们有一个要求,我们将不得不进行多前缀扫描和查询bigtable。
例如,引用bigtable的below行键
1st 4 rows have prefix 9JNzZAGX,
2nd 3 rows have prefix sRbfH5fW,
3rd 1 rows have prefix PnQvPYtA,
4th 2 rows have prefix C7M5fjUg,
9JNzZAGX-hkncRBPb
9JNzZAGX-gFfXvVxx
9JNzZAGX-saQaP62S
9JNzZAGX-S5prLFns
sRbfH5fW-PLez7PF5
sRbfH5fW-Pg5PJjuq
sRbfH5fW-7HfgXgJe
PnQvPYtA-UUNC4mhw
C7M5fjUg-6nvM2ReV
C7M5fjUg-hSpQungj
如果必须获取以前缀srbfh5fw和c7m5fjug开头的行,则需要返回以下5行。
sRbfH5fW-PLez7PF5
sRbfH5fW-Pg5PJjuq
sRbfH5fW-7HfgXgJe
C7M5fjUg-6nvM2ReV
C7M5fjUg-hSpQungj
如果有一种使用javaapi的方法,我可以在对db的一次调用中获取它们。这个前缀lkist可以是100秒,因此在代码中并行或顺序搜索每一个听起来都不是一个好的选择。
2条答案
按热度按时间tcbh2hod1#
对于一个前缀扫描,您将使用您似乎知道的内置前缀扫描:
实际上,您可以在查询上再次调用prefix,它将添加更多前缀,这对于您的用例来说应该非常简单:
6ju8rftf2#
这样做:
有关详细信息,请查看此页
在这里您可以找到完整的示例代码。
注意:我注意到您的行前缀是散列值,这不再是推荐的,因为它会导致行键基本上没有意义,这使得使用键可视化工具来解决cloud bigtable的问题很有挑战性。