概要
2019年 7月版的kintone新增了游标 API。
此API是用于获取所有记录的API。
本文主要介绍以下内容。
游标(Cursor) API 的说明
在批量获取记录API(records.json)里指定 offset 时的性能比较
关于使用游标API批量获取记录的代码范例请参考“批量获取记录的JavaScript 代码编写范例 - 使用offset的方法”。
功能新增理由
预定于2020年7月的定期维护时对批量获取记录 API (records.json)的参数offset设置上限为1万条记录。
因为offset被设置了上限,因此如果之前使用offset的方法来批量获取数据,而且获取的数据可能超过1万条,请换成以下的方法来获取记录 。
允许按照记录 ID来排序时:使用记录ID批量获取记录
需要按记录ID 以外的排序方式排序时:使用游标API批量获取记录(本文要介绍的内容)
在文章后半部分中也会介绍到,用游标API的方法与用offset的方法比,即使在很复杂的排序条件下响应速度也不会变慢。
所谓游标(Cursor)
是DB里的一个专门用语,是指保存DB内的位置信息的数据。
可以在DB上创建游标,根据创建的游标的位置信息获取记录。
本次kintone中新增的游标相关的API有以下3个。
创建游标
从创建的游标中获取记录
删除游标
使用这些API获取记录的一连串处理的流程如下。
1.使用创建游标的API创建游标
2.使用从游标获取记录的API获取记录
3.重复步骤2,直到检索对象的记录全部获取完。
和使用offset批量获取的比较
在API的请求参数里更改排序条件和记录的获取条数,测试在各种各样的条件下获取数据所花费的时间,对offset和游标API进行比较。
下面是在各条件下,从创建游标到获取到目标记录的累计时间的图表。
条件①
10万条记录
按$id排序
图表
条件②
10万条记录
按单行文本框排序
图表
条件③
50万条记录
按$id排序
图表
条件④
50万条记录
按单行文本框排序
图表
从图表中我们可以一目了然地看出,使用游标进行批量获取数据的方法,可以更加稳定更加快地获取数据。
反之,使用offset的方法,其获取时间受到排序方法和获取记录数量的影响,比较不稳定。
总结
Get Records的参数offset因为有上限值的限制,如果您的程序里使用了offset的方法来批量获取数据,建议您换成用更加高效的游标来批量获取。
主要限制事项
关于其他限制事项请参考文档。
此Tips在2019年7月版的kintone中确认过。