Как можно поддерживать нумерацию страниц с помощью Bigtable Go-клиента? - PullRequest
0 голосов
/ 18 декабря 2018

Я храню данные временных рядов в bigtable с помощью rowKey userId # timestamp.Учитывая параметры запроса (userId, startTime, endTime), как я могу поддерживать нумерацию страниц, то есть возвращать записи «limit», начиная с «offset»?

обратите внимание, что userId # startTime rowKey может не существовать в bigtable, но будут некоторые точки данных до и после startTime / EndTime.Клиент Bigtable Go поддерживает ReadRows с аргументом prefixRange.Я мог бы использовать prefixRange userId и «искать» startTime, когда я выполняю итерацию с использованием ReadRows, но это кажется очень неэффективным, если starTime / endTime был в прошлом.есть ли лучший способ ??

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете запустить операцию ReadRows с userId#startTime до userId#endTime с помощью NewRange и установить ограничение на число строк, возвращаемых с помощью LimitRows опция чтения.

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