cassandra paging 分页方法应用

在Node.js中,由于其单线程性质,处理大量数据时可能会导致内存消耗过大和响应时间延长。Cassandra的driver提供了#eachRow()和#stream()方法进行分页,以避免一次性加载所有结果。默认的fetchSize为5000行,但自动和手动分页提供了更灵活的控制方式。
摘要由CSDN通过智能技术生成

费了2天的时间,终于找到了如何实现分页的办法。 cassandra 只在nodejs driver 1.0里提到了如何分页,后面就再也没有提过了,坑爹啊。 网络上搜遍了,都只有java的driver example, 也没有说这个pageState这么用。 

要实现分页,driver execute是做不到的,所以要用eachRow 的API实现分页, 要用到的参数主要是:
autoPage: 是否要连续查询所有页面
pageState: 用来存放最后一次查询最后一条记录的token, 这样下次查询的时候就直接从下一条记录开始查,这个很重要,否则就是网站上看到的其他人贴出来的手动记录方法了
fetchSize: 每一页查询多少记录

对于我们的应用是: 查出100万条记录,然后分页到网站使用。 需要提供总得记录数字,和实时查询需要页数内的记录。
1. 总的记录数目:这个必须要做一次全部查询,目前只有这个办法。 这个API有个好处,就是有一个function(n,row), 当你不做任何操作的时候,他不保存任何记录信息,这样做就可以不需要buffer 来保存每一条具体的记录,而只是在最后的function(err, result) 拿出rowLength 即可; 

2. 分页查询: 假设按webpage 每页25条记录,先给出webpage 1的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值