- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Google BigQuery 中,可以检索过去(至少过去 7 天)的表(快照)行:
对于 Legacy SQL,我们可以使用 snapshot decorators :
#legacySQL
SELECT * FROM [PROJECT_ID:DATASET.TABLE@-3600000]
使用标准 SQL,我们可以使用 FOR SYSTEM_TIME AS OF
in FROM
clause :
#standardSQL
SELECT *
FROM `PROJECT_ID.DATASET.TABLE`
FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
两个示例都返回 PROJECT_ID.DATASET.TABLE
一小时前的快照。
但是我想知道是否有任何保证可以检索过去的表数据。一位同事告诉我,他在某处读到(但他再也找不到了)这是一个“尽力而为”的功能,因此可能会丢失一些数据。
只要恢复在错误发生后的 7 天内完成,此功能是否可用于生产环境中的数据恢复(例如,如果有人无意中截断了一个重要的表)?是否可以保证我们可以访问在特定时间存储的全部数据?
更新
正如@Pentium10 在评论中正确指出的那样,在对表执行CREATE OR REPLACE
作业后恢复旧数据是不可能的。经过一些尝试后,我什至会添加使用其中之一执行的作业 statement types :
CREATE_TABLE
(创建或替换
)CREATE_TABLE_AS_SELECT
DROP_TABLE
完全消除了为该特定表及时检索数据的能力。
但是,假设我们只使用以下语句类型来修改表数据:
插入
更新
删除
合并
是否可以保证 t 的快照数据完全 t 的表中包含的数据?或者这是一个“尽力而为”的功能?
最佳答案
FOR SYSTEM_TIME AS OF
语法对于在多个时间点查询表很有用,但我建议使用带有 @<time>
的 BigQuery CLI 复制命令。当您需要恢复或回滚表时使用装饰器。 (有关完整引用,请参阅 CLI 示例 here。)为此,首先确定目标恢复时间(以纪元毫秒为单位)。接下来,从本地计算机或 Google Cloud Shell 运行复制命令;将纪元时间附加到表名,如下所示。
bq cp test_data_set.weather_data@1588643412000 test_data_set.recovered_weather_data
请注意,您不能直接就地恢复表 - 您需要将快照复制到不同的表名,然后再复制回原始表。
bq cp test_data_set.recovered_weather_data test_data_set.weather_data
使用 BigQuery CLI 比使用 FOR SYSTEM_TIME AS OF
运行查询的优势是即使在架构更改或删除的情况下,它也可以恢复或回滚表。复制命令适用于表存在时的任何时间戳,可以追溯到 7 天。 (删除表的恢复窗口以前是两天,但最近延长了。)
关于恢复 SLA,了解 BigQuery 的架构很有帮助。列数据 block 作为对象存储在 Colossus 文件系统(谷歌云存储)中,BigQuery 使用写入时复制策略执行更新。实际上,这意味着不需要备份过程 - BigQuery 只是保留旧的列数据 block 和元数据(因此,表版本),直到它们被垃圾收集。 BigQuery 在更新或删除后 7 天触发垃圾回收过程。
如上所述,回滚和恢复被宣传为 BigQuery 的核心功能。 (例如,请参阅 BigQuery landing page 上的标题自动备份和轻松还原。)因此,它似乎受制于其他 BigQuery 功能的标准服务级别协议(protocol)。
关于google-bigquery - Bigquery "FOR SYSTEM_TIME AS OF"数据恢复功能保证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59048115/
在 Google BigQuery 中,可以检索过去(至少过去 7 天)的表(快照)行: 对于 Legacy SQL,我们可以使用 snapshot decorators : #legacySQL S
这里有人成功地在 Windows 上安装了 system_timer gem 吗?我的机器上有 devkit,我可以安装其他本地 gem。安装 gem 时出现以下错误。 In file include
这不像我在网上找到的例子那么困难。我正在尝试创建一个 std::chrono::system_time基于某些 UTC 日期。我在单线程中工作的代码如下: #include #include us
我将一个旧脚本迁移到一个新的 CentOS box 并在运行脚本时收到以下消息: Faraday: you may want to install system_timer for reliable
我目前正在学习 sql server 2016 中引入的新“系统版本化时态表”。但是,我很难理解“GENERATED ALWAYS AS ROW START”的确切含义和用法/END”和“PERIOD
chrono 标题中的注释只是说 // wraps GetSystemTimePreciseAsFileTime/GetSystemTimeAsFileTime 但它实际使用的是什么(即我期望的精度是
我是一名优秀的程序员,十分优秀!