我必须从 Cassandra 数据库中读取 3 TB 的生产数据。
我已经使用 java 驱动程序实现了分页,但是这种技术使用偏移值,这意味着我要重新跟踪我的数据以到达特定的行,并且这个过程使用的是堆内存,这不是一个好习惯。我想在不使用大量堆内存的情况下读取数据
通常,我想批量获取 10000 行,然后再次读取下 10000 行,而无需再次读取前一万行
我不需要高读取延迟我唯一的问题是在不消耗大量堆内存的情况下读取数据......
这是我的部分代码
Statement select = QueryBuilder.select().all().from("demo", "emp");
这就是我分页的方式
List<Row> secondPageRows = cassandraPaging.fetchRowsWithPage(select, 100001, 25000);
printUser(secondPageRows);
其中 100001 是我想要输出行的起始值,而 25000 是页面的大小。所以在这里我必须先达到 100000,然后我将打印第 100001 个值。这导致了我的堆问题,而且在我的情况下,我不想到达一个页面的末尾以获得另一页的第一条记录。