基于指针的分页
Coll新万博移动客户端ibra api支持offset-based分页浏览数据的主要方法通过我们休息和Java的端点。这已经被证明有一致性和性能限制,你可以克服使用基于指针的分页。
Offset-based分页
在offset-based分页中,数据浏览页面从记录的集合,总是对它的一些字段排序。每个页面都是一个窗口,从任意指数和结束在另一个任意指数排序的集合。为此,我们将以下参数:
抵消
:的索引所需的页面开始。限制
:所需的页面的大小。
https:// < you新万博移动客户端r_collibra_platform_url > /休息/ 2.0 /资产?抵消= 3000限制= 1000
的反应是类似如下:
{“总”:10000000,“抵消”:3000年,“限制”:1000年,“结果”:[…]}
API的消费者可以浏览页面增加抵消一定量。当结果不如在大小的列表提供的限制,这意味着我们已经达到排序的最后记录的集合。
基于偏移的分页支持总额的计算。这可能是一个资源密集型操作,您可以禁用通过提供countLimit
参数以零值:https:// < you新万博移动客户端r_collibra_platform_url > /休息/ 2.0 /资产?抵消= 3000限制= 1000 &countlimit = 0
offset-based分页的局限性
Offset-based分页会导致一致性问题的场景,记录被插入或删除的页面位于前你正在浏览的页面。这通常发生在事件的并发用户同时执行这样的操作当你浏览数据。下面的例子演示了这种情况。
考虑以下等记录的集合,是进行排序:
(0,1,2,3,4,5]
如果我们有以下的动作序列:
- 用户请求一个第一页
抵消= 0
和限制= 2
,返回预期的数据:[0,1]
。 - 用户B插入一个新的记录0.5集合,使得现在看起来像下面的:
[0、0.5、1、2、3、4、5)
。 - 用户请求下一个页面,从偏移量对应于下一个页面:
抵消= 2
和限制= 2
。
返回的数据是[1,2]
。
在这种情况下的并发操作,用户的页面浏览包含重复信息。记录1
本例中出现在两个不同的页面。
如果我们重复实验,有并发用户删除一个记录,而不是插入,然后我们会有一个逆一致性问题记录,可以失踪的页面。
这种一致性问题让技术集成困难写在一个健壮的和安全的方法。
基于指针的分页
基于指针的分页使用指针的概念,它可以被视为一个技术指标排序的记录在记录的集合。指示一个索引,而是在offset-based分页,我们直接指示记录。
每个API调用返回的游标记录下的记录的集合。然后,您可以使用此光标在接下来的请求指示记录开始下一个页面。
因此,在前一页插入或删除记录没有任何逻辑副作用的后续调用。
API的消费者必须提供一个空指针的初始调用:
https:// < you新万博移动客户端r_collibra_platform_url > /休息/ 2.0 /资产?限制= 1000光标= &sortField = ID
的反应是类似如下:
{“总”:1、“抵消”:1、“限制”:1000年,“结果”:[…]“nextCursor”:“QUZURVI6aWQ6ODgxZDc3MjgtOGIwNy00Yjk3LWIwN2UtMjVlMDMxMjQ5Y2U4OnNpZ25pZmllcjowMDAwMDBjZi02N2QzLTQ0ZjMtYjViZS0xYjczMGNmYTY2ZmQ = "}
然后,您可以使用nextCursor
值并将其传递给下一个请求:
https:// < you新万博移动客户端r_collibra_platform_url > /休息/ 2.0 /资产?限制= 1000光标= QUZURVI6aWQ6ODgxZDc3MjgtOGIwNy00Yjk3LWIwN2UtMjVlMDMxMjQ5Y2U4OnNpZ25pZmllcjowMDAwMDBjZi02N2QzLTQ0ZjMtYjViZS0xYjczMGNmYTY2ZmQ = &sortField = ID
当没有更多的数据是可用的,不包含的响应nextCursor
字段,表示没有其他页面可用。
基于指针的分页总是进行排序的记录。这意味着API使用默认值,这取决于每个API如果不指定sortField
参数。
优化使用的字段。目前,只有ID
优化排序字段是在我们的api和总是可用的基于指针的api,支持分页。这将导致显著的性能提升,使响应时间统一所有浏览页面。
基于指针和offset-based分页是互斥的。使用参数会导致错误。
性能比较
下面的图片显示了响应时间差异cursor-bases和Collibra offset-based分页数据智能云版本2022.08请求页面时的10.000记录共1000万条记录通过REST API的核心资产资源新万博移动客户端。