1 deep-paging问题引入
有90个数字分布到三个分片上,每个分片上有30个数字。
shard1上:
1 、2、 3 、4 、5 、6 、7 、8、 9 、10 、11 、12 、13 、14、 15、 16、 17 、18、19 、20、 21、22、23、 24 、25 、26 、27、 28、 29 、30、
shard2上:
31 、32 、33 、34 、35 、36 、37 、38、 39 、40、 41 、42 、43、 44 、45 、46、 47 、48、 49、 50 、51 、52、 53、 54 、55 、56 57、 58、 59、 60 、
shard3上:
61、 62 、63 、64 、65 、66、 67 、68 、69 、70、 71 、72 、73、74 75、 76 、77 、78、 79 、80、81 、82、83、 84 、85、 86 、87、 88 、89、 90
假如查询第二页,然后每页15条。
是否可以每个分片上查询第二页,然后合在一起(3个shard一起45条)再排序,然后筛选15条?
答案是否定的。因为这不是topK问题,如果是topK则可以每个shard上取最大的15条,合在一起再取15条。
为什么答案是否定的,举个例子:
所以要想分页,只能每个分片上都取两页,再合起来排序,然后返回。这时问题就出现了,假如每页10条数据,我们想取第1000页。有3个分片,就需要每个分片取10010条数据合在一起,