how does one support pagination using bigtable Go client?
Asked Answered
D

1

5

I store time series data in bigtable with a rowKey of userId#timestamp. Given query parameters of (userId, startTime, endTime) how can I support pagination i.e return 'limit' records starting from 'offset' ?

note that userId#startTime rowKey may not exist in bigtable but there will some datapoints before and after startTime/EndTime. Bigtable Go client seems to support ReadRows with a prefixRange argument. I could use a prefixRange of userId and 'seek' to the startTime as I iterate using ReadRows but this seems very inefficient if starTime/endTime is way in the past. is there a better way ??

Drag answered 18/12, 2018 at 1:59 Comment(2)
This post may have what you're looking for, take a look and let me know it works for you: #49692323Wellesley
thank you maxim but bigtable Go client doesn't have the readStream interface like the Node client.Drag
M
7

You can start a ReadRows operation from userId#startTime to userId#endTime with a NewRange and set a limit on the number of rows returned with a LimitRows read option.

err = tbl.ReadRows(ctx, NewRange("<userId>#<startTime>", "<userId>#<endTime>"), func(r Row) bool {
    fmt.Println("Got a row")
    return true
}, LimitRows(100))
Mel answered 18/12, 2018 at 17:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.