如何使用 bigtable Go 客户端支持分页?

how does one support pagination using bigtable Go client?

我将时间序列数据存储在 bigtable 中,rowKey 为 userId#timestamp。给定查询参数 (userId, startTime, endTime) 我如何支持分页,即 return 'limit' 从 'offset' 开始的记录?

注意bigtable中可能不存在userId#startTime rowKey,但startTime/EndTime前后会有一些数据点。 Bigtable Go 客户端似乎支持带有 prefixRange 参数的 ReadRows。当我使用 ReadRows 进行迭代时,我可以使用 userId 的 prefixRange 和 'seek' 到 startTime,但是如果 starTime/endTime 是过去的方式,这似乎非常低效。有没有更好的办法??

您可以启动 ReadRows operation from userId#startTime to userId#endTime with a NewRange and set a limit on the number of rows returned with a LimitRows 阅读选项。

err = tbl.ReadRows(ctx, NewRange("<userId>#<startTime>", "<userId>#<endTime>"), func(r Row) bool {
    fmt.Println("Got a row")
    return true
}, LimitRows(100))