Возможная согласованность BigQuery гарантирует использование API потоковой вставки - PullRequest
0 голосов
/ 14 декабря 2018

Я хотел бы использовать API потоковой вставки BigQuery для вставки строк в таблицу BigQuery.В моем случае это единственный класс операции «запись», который когда-либо будет выполнен;Я никогда не буду вставлять строки любым другим способом, и я никогда не буду обновлять или удалять строки.

Прочитав Жизнь потоковой вставки BigQuery , я понимаю, что даже после insertAllзапрос был подтвержден, возможно, что последующие операции чтения могут «не видеть» все строки, которые были успешно вставлены им, до тех пор, пока они не будут перенесены из потокового буфера в управляемое хранилище.

Предполагается, что мое понимание верно(пожалуйста, дайте мне знать, если нет!):

  1. Есть ли способ узнать, когда все строки, вставленные данным запросом insertAll, были переданы в управляемое хранилище?
  2. Даже после того, как строка была зафиксирована в управляемом хранилище, гарантируются ли последующие операции чтения для их просмотра или сбоя?

Почему я задаю эти вопросы?Моя схема таблицы будет включать в себя столбец «ключ», который является строго монотонно увеличивающимся идентификатором.Все операции чтения будут ограничены строками, ключи которых не превышают определенного значения.Мне нужна гарантия, что операция чтения этой формы всегда будет возвращать одинаковые результаты, при условии, что указанный ключ соответствует строке, которая уже была вставлена.Ясно, что никакие строки, вставленные , впоследствии не могли бы быть возвращены таким запросом (потому что их ключи были бы больше, чем указанный ключ).Однако, если есть какие-либо строки, которые уже вставили , но все еще находятся в буфере потоковой передачи, запрос может не возвращать их, но тот же самый запрос выполняется позже (после того, как строки были зафиксированы) вернул бы их В моем случае это будет катастрофа.

1 Ответ

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

Есть два состояния.

В потоковом буфере и зафиксировано.Вы можете прочитать строки, находящиеся в потоковом буфере, этот синтаксис варьируется между нераздельными и многораздельными таблицами, вы можете найти примеры, как получить эти строки.

Если insertId использовался более чем одной строкой, сохраняется только одна строка.

Совершенное состояние гарантирует, что вы можете прочитать.

...