我们拥有巨大的 cosmosDB 容器,其中包含数十亿行和近 300 列。数据以我们大多数时候查询的方式进行分区和建模。
例如:用户表由 userId 分区,这就是为什么下面的查询可以正常工作。
Select * from User where userId = "user01234"
但在某些情况下,我们需要对需要排序的数据进行不同的查询,然后再进行查询。
例如:使用 userpost 和发布日期从用户表中获取数据
Select * from user where userPostId = "P01234" orderBy date limit 100
由于数据的大小,此查询需要大量时间,并且数据未根据 query2(用户 Post)进行分区。
我的问题是 - 当数据没有相应分区时,我们如何才能更快地进行 query2 和其他类似查询。
选项 1:“创建根据 Query2 分区的单独集合” - 这将使查询更快,但对于任何新查询,我们最终都会创建一个新集合,这是数十亿条记录的重复。[昂贵的选择]
选项 2:“在 DB 之上构建弹性搜索?” 这是一个耗时的选项,并且对于这个缓慢的查询问题可能会过度杀戮。
还有其他可以使用的选项吗?让我知道你的想法。
提前致谢!