BigQuery でデータベースのローカル コピーを維持する予定です。API と tabledata:list を使用します。このデータベースは私自身のものではなく、新しいデータを追加することによってメンテナーによって定期的に更新されています (たとえば 1 時間ごと)。
まず、このデータが追加されると、必ずデータベースの最後に追加されると想定できますか?
ここで、現在データベースに 1,000,000 行があり、tabledata:list をページングしてこれらすべてをダウンロードしているとします。また、データベースが途中で (10,000 行で) 更新されたとします。ページ トークンを使用することで、開始時に存在する 100 万行のみをデータベースにある順序でダウンロードすることを保証できますか?
最後に、コピーを更新するために来たとしましょう。startIndex を 1,000,000 に設定して tabledata:list を開始し、maxResults を 1000 に設定した場合、予期した更新データを含む 10 ページを取得できますか?
これらの問題はすべて、bigquery がデータの順序を尊重しているかどうか、この順序が tabledata:list で使用されているかどうか、追加されたデータが前のデータに従うことが保証されているかどうかに帰着すると思います。
値が一意の列がありselect count(1) from table
、テーブルの長さを簡単に取得できるため、もちろん、ローカル データベースの長さとリモート データベースの長さを比較することで、ローカル コピーが完全であることを確認できますが、上記が保証されず、データに穴が開いてしまった場合、主キーがシーケンシャルではなく (それ以外の場合は不足している行を埋めることができます)、データベースが非常に大きいため、修正するのは非常に非現実的です。