1

我有大约 200 万条记录,每条记录有 10-12 个字段(大部分是字符串)。现在我想根据某些字段过滤记录。是否建议使用二级索引或其他更好的选项来执行此操作?另外,获取所有记录/仅键(在应用过滤器之后)需要多长时间?

提前致谢。

4

1 回答 1

3

您可以使用谓词过滤器进行扫描 - 这是非常通用的(您甚至可以执行正则表达式)或仅尊重字符串上的相等过滤器的二级索引查询。

扫描更可靠,并且在下一个即将发布的版本(2020 年 3 月/2020 年 4 月)中会更好地管理其进度。扫描确实需要先从磁盘读取所有记录,然后再应用过滤器。

SI 会更快,因为您在从磁盘获取记录之前正在过滤(内存二级索引),但如果底层集群节点不稳定 - 即如果您在 SI 查询期间丢失或添加节点,则可靠性会降低。该查询在所有集群节点上并行运行,并将结果以不特定顺序传送回客户端。您可以通过使用“failOnClusterChange”选项并在集群稳定时重新启动来缓解这种情况。(扫描也有相同的选项可用。)

哪个更好?对您的具体问题进行 A/B 测试。

于 2020-03-30T18:03:17.600 回答