数据集位置
本页面介绍数据位置的概念以及可创建数据集的不同位置。如需了解如何设置数据集的位置,请参阅创建数据集。
有关 BigQuery 区域价格的信息,请参阅价格页面。
主要概念
位置或区域类型
BigQuery 使用两种类型的位置:
单区域位置是具体的地理位置,如伦敦。
多区域位置是至少包含两个地理位置的大型地理区域,如美国。
数据集位置
在创建数据集时,您可以指定一个位置以用于存储 BigQuery 数据。在创建数据集后,您无法更改该位置,但可以将数据集复制到其他位置,或手动将数据集移动到其他位置(在其他位置重新创建数据集)。
BigQuery 在包含待查询表的数据集所在的位置处理查询。
BigQuery 根据服务专用条款将您的数据存储在选定位置。
支持的区域
BigQuery 数据集可以存储在以下单区域和多区域中。如需详细了解地区和区域,请参阅地理位置和地区。
区域
下表列出了可使用 BigQuery 的美洲区域。区域说明 | 区域名称 | 详情 |
---|---|---|
爱荷华 | us-central1 |
|
拉斯维加斯 | us-west4 |
|
洛杉矶 | us-west2 |
|
蒙特利尔 | northamerica-northeast1 |
|
北弗吉尼亚 | us-east4 |
|
俄勒冈 | us-west1 |
|
盐湖城 | us-west3 |
|
圣保罗 | southamerica-east1 |
|
圣地亚哥 | southamerica-west1 |
|
南卡罗来纳 | us-east1 |
|
多伦多 | northamerica-northeast2 |
|
区域说明 | 区域名称 | 详情 |
---|---|---|
德里 | asia-south2 |
|
香港 | asia-east2 |
|
雅加达 | asia-southeast2 |
|
墨尔本 | australia-southeast2 |
|
孟买 | asia-south1 |
|
大阪 | asia-northeast2 |
|
首尔 | asia-northeast3 |
|
新加坡 | asia-southeast1 |
|
悉尼 | australia-southeast1 |
|
台湾 | asia-east1 |
|
东京 | asia-northeast1 |
区域说明 | 区域名称 | 详情 |
---|---|---|
比利时 | europe-west1 |
|
芬兰 | europe-north1 |
|
法兰克福 | europe-west3 |
|
伦敦 | europe-west2 |
|
荷兰 | europe-west4 |
|
华沙 | europe-central2 |
|
苏黎世 | europe-west6 |
|
多区域
下表列出了可使用 BigQuery 的多区域。多区域说明 | 多区域名称 |
---|---|
欧盟成员国的数据中心1 | EU |
美国的数据中心 | US |
1 位于 EU
多区域的数据不会存储在 europe-west2
(伦敦)或 europe-west6
(苏黎世)数据中心中。
指定位置
在加载数据、查询数据或导出数据时,BigQuery 会根据请求中引用的数据集确定运行作业的位置。例如,如果查询引用了存储在 asia-northeast1
地区的数据集中的表,则查询作业将在该地区中运行。如果查询未引用数据集中的任何表或其他资源,并且未提供目标表,则查询作业将在 US
多区域中运行。如果项目在 US
以外的地区具有固定费率预留,并且查询未引用数据集中的任何表或其他资源,则您在提交作业时必须明确指定固定费率预留的位置。
您可以通过以下方式明确指定作业的运行位置:
- 使用 Cloud Console 查询数据时,点击更多 > 查询设置,在处理位置处,点击自动选择并选择数据的位置。
- 使用
bq
命令行工具时,请提供--location
全局标志并将值设为您的位置。 - 使用 API 时,在作业资源的
jobReference
部分的location
属性中指定区域。
如果指定的位置与请求中的数据集位置不匹配,BigQuery 将返回错误。 请求中涉及的每个数据集的位置(包括从其中读取数据和向其中写入数据的位置)都必须与推断或指定的作业的位置一致。
单区域位置与多区域位置不一致,即使单区域位置与多区域位置相关联也是如此。因此,如果关联的位置集同时包含单区域位置和多区域位置,则作业一定会失败。例如,在作业的位置设置为 US
的情况下,如果作业引用了 us-central1
中的数据集,则该作业将失败。同样,如果作业引用了 US
中的一个数据集和 us-central1
中的另一个数据集,则该作业也将失败。
位置注意事项
在选择数据的位置时,请考虑以下事项:
- 使用外部数据源时,共置 BigQuery 数据集。
- Cloud Storage:通过 BigQuery 外部表查询 Cloud Storage 中的数据时,您查询的数据必须与 BigQuery 数据集位于同一位置。例如:
- 单区域:如果您的 BigQuery 数据集位于华沙(“europe-central2”)区域,则相应的 Cloud Storage 存储桶也必须位于华沙区域,因为目前没有包含华沙的 Cloud Storage 双区域。
- 双区域:如果您的 BigQuery 数据集位于东京(“asia-northeast1”)区域,则相应的 Cloud Storage 存储桶必须是位于东京区域或“ASIA1”双区域(包含东京)的存储桶。
- 多区域:由于外部查询性能取决于最短延迟时间和最佳网络带宽,因此不建议将包含多区域 Cloud Storage 存储桶的多区域数据集位置用于外部表。
- Cloud Bigtable:通过 BigQuery 外部表查询 Cloud Bigtable 中的数据时,您的 Cloud Bigtable 实例必须位于 BigQuery 数据集所在的相同位置。
- 单区域:如果您的 BigQuery 数据集位于比利时 (europe-west1) 单区域位置,则相应的 Cloud Bigtable 实例必须位于比利时区域。
- 多区域:因为外部查询性能取决于最小延迟时间和最佳网络带宽,所以不建议对 Cloud Bigtable 上的外部表使用多区域数据集位置。
- Google 云端硬盘:位置注意事项不适用于 Google 云端硬盘外部数据源。
- 共置 Cloud Storage 存储分区,以便于加载数据。
- 如果您的 BigQuery 数据集位于多区域,则包含您要加载的数据的 Cloud Storage 存储桶必须位于同一多区域或该多区域内的位置。例如,如果您的 BigQuery 数据集位于“EU”多区域,则 Cloud Storage 存储桶可以位于欧盟内的“europe-west1”比利时区域。
- 如果您的数据集位于某个区域,则 Cloud Storage 存储桶必须位于同一区域。例如,如果您的数据集位于“asia-northeast1”东京区域,则 Cloud Storage 存储桶不能位于“ASIA”多区域。
- 例外情况:如果您的数据集位于“US”多区域,则您可以从任何位置的 Cloud Storage 存储桶加载数据。
- 共置 Cloud Storage 存储分区,以导出数据。
- 如果您的 BigQuery 数据集位于多区域,则包含您要导出的数据的 Cloud Storage 存储桶必须位于同一多区域或该多区域内的位置。例如,如果您的 BigQuery 数据集位于“EU”多区域,则 Cloud Storage 存储桶可以位于欧盟内的“europe-west1”比利时区域。
- 如果您的数据集位于某个区域,则 Cloud Storage 存储桶必须位于同一区域。例如,如果您的数据集位于“asia-northeast1”东京区域,则 Cloud Storage 存储桶不能位于“ASIA”多区域。
- 例外情况:如果您的数据集位于“US”多区域,则您可以将数据导出到任何位置的 Cloud Storage 存储桶。
- 制定数据管理计划。
- 如果您选择区域存储资源(如 BigQuery 数据集或 Cloud Storage 存储分区),请制定按地理位置管理数据的计划。
如需详细了解 Cloud Storage 位置,请参阅 Cloud Storage 文档中的存储分区位置。
限制位置
您可以使用组织政策服务来限制可以创建数据集的位置。如需了解详情,请参阅限制资源位置和支持资源位置的服务。
数据集安全性
如需控制对 BigQuery 中数据集的访问权限,请参阅控制对数据集的访问权限。 如需了解数据加密,请参阅静态加密。
后续步骤
- 了解如何创建数据集。
- 了解如何将数据加载到 BigQuery 中。
- 了解 BigQuery 价格。
- 查看可在全球位置使用的所有 Google Cloud 服务。
- 探索适用于其他 Google Cloud 服务的更多位置概念(如地区)。