我想通過insertAll
將一些時間序列數據流式傳輸到BigQuery中,但只保留最近3個月(比如說)以避免無限存儲成本。通常的答案是save each day of data into a separate table,但AFAICT需要提前創建每個這樣的表。我打算直接從不安全的客戶端流式傳輸數據,這些客戶端授權的令牌只有bigquery.insertdata
範圍,所以他們無法自行創建日常表格。我能想到的唯一解決方案就是運行安全的每日cron作業來創建表格 - 這並不理想,特別是因爲如果它失火了,數據將被丟棄,直到創建表格。將數據流式傳輸到BigQuery中的旋轉日誌表中
另一種方法是將數據流式傳輸到單個表中,並使用table decorators來控制查詢成本隨着表的增長而變化。 (我希望所有的查詢都是針對特定的時間範圍,因此裝飾器在這裏應該非常有效)。但是,無法從表中刪除舊數據,因此存儲成本在一段時間後將變得無法持續。我無法想出任何方式來自動「複製和截斷」表,以便我可以將舊數據分區到每日表中,而不會丟失當時流式傳輸的行。
關於如何解決這個問題的任何想法?如果您的解決方案允許我將舊數據重新聚合到時間較粗的行中以保留更多歷史記錄以獲得相同的存儲成本,則可以獲得獎勵積分。謝謝。
編輯:剛剛意識到這是Bigquery event streaming and table creation的部分副本。
你已經通過分區解決了它。如果表創建是一個問題,那麼每小時cron會驗證今天,並且明天表總是被創建。 –
我曾希望將其作爲無服務器解決方案來完成。如果我使用cron作業,我需要一臺服務器來運行它,並進行監視以確保它不會死亡,否則我會丟失數據。如果可能的話,我寧願避免所有可行的開銷。 – Piotr
不是如果你使用appengine cron –