在分片环境中,数据将被拆分到各种机器/分片。我想知道如何创建一个返回分页结果的查询(例如第 2 页,10 个结果或第 10 页,20 个结果)?
我知道它与主键有关。使用单个 RDBMS 很容易,因为您有一个自动增量列,因此很容易获取最后 10 个项目并返回分页数据。
在分片环境中,数据将被拆分到各种机器/分片。我想知道如何创建一个返回分页结果的查询(例如第 2 页,10 个结果或第 10 页,20 个结果)?
我知道它与主键有关。使用单个 RDBMS 很容易,因为您有一个自动增量列,因此很容易获取最后 10 个项目并返回分页数据。
我为ScaleBase工作,它是一个完整的横向扩展解决方案的制造商,如果你愿意,它是一个“自动分片机”,分析数据和 SQL 流,在 DB 节点之间拆分数据,负载平衡读取,并在运行时聚合结果- 所以你不必!
你可以看到我对这个线程关于自动增量的回答:Sharding and ID generation as instagram
另外,看看我在http://database-scalability.blogspot.com/上关于 Pinterest 的帖子,然后和现在......
具体来说 - 将多个分片的结果合并为 1 个结果是地狱。可能是边缘情况,GROUP BY,ORDER BY,JOINs,LIMIT,HAVING。我必须说,在 SB 我们支持大多数组合,这花了我们很长时间。诚然,我们需要通用地做,虽然你可以“弯曲”到专有......但仍然......