使用 DataStream API

Datastream

对于拥有许多独立数据源的企业而言,访问整个组织内的企业数据(尤其是实时访问)并非易事。这会导致数据访问受限且速度缓慢,因而造成组织无法进行检查。

Datastream 提供近乎实时的访问权限,让您能够更改各种本地和云端数据源中的数据以创建组织数据访问权限。Datastream 提供统一的使用 API,让组织普遍能够访问组织内可用的最新企业数据,从而为集成式近乎实时的场景提供支持。

其中一种场景是,将数据从来源数据库转移到云端存储服务或消息传递队列,然后将这些数据转换为可供与该存储服务或消息传递队列通信的其他应用和服务读取的形式。

在本教程中,您将学习如何使用 Datastream 将架构、表和数据从源 Oracle 数据库转移到 Cloud Storage 存储桶中的文件夹。Cloud Storage 是一种用于在 Google Cloud上存储和访问数据的 Web 服务。该服务将 Google 云的高性能和可扩展性与先进的安全和共享功能融合在一起。

在将此信息转移到目标 Cloud Storage 存储桶中的文件夹的过程中,Datastream 会将此信息转换为 Avro。Avro 由以 JavaScript 对象表示法 (JSON) 编写的架构定义。通过这种转换,您可以以统一的方式读取不同数据源中的数据。

目标

在本教程中,您将学习如何:

  • 设置环境变量。在您向 Datastream 发出请求来创建和管理连接配置文件数据流时将使用这些变量。
  • 创建和管理用于 Cloud Storage 中源数据库和目标存储桶的连接配置文件。创建这些连接配置文件后,您将创建包含来源数据库和 Cloud Storage 目标存储桶的相关信息的记录。Datastream 中的数据流使用连接配置文件中的信息将数据从源数据库转移到目标存储桶中的文件夹。
  • 创建和管理数据流。Datastream 使用此数据流将数据、架构和表从源数据库转移到目标存储桶中的文件夹。
  • 验证 Datastream 是否将与源 Oracle 数据库的架构关联的数据和表转移到目标存储桶中的文件夹,以及是否将这些数据转换为 Avro 文件格式。
  • 清理您在 Datastream 上创建的资源,以避免这些资源占用配额并在日后产生费用。

费用

在本文档中,您将使用 Google Cloud的以下收费组件:

  • Cloud Storage

如需根据您的预计使用情况来估算费用,请使用价格计算器

新 Google Cloud 用户可能有资格申请免费试用

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 启用 Datastream API。

    启用 API

  7. 确保您已为您的用户账号分配 Datastream Admin 角色。

    转到 IAM 页面

  8. 确保您有一个 Datastream 可以访问的来源数据库。本教程使用 Oracle 数据库作为来源。
  9. 配置来源数据库以允许来自 Datastream 公共 IP 地址的传入连接。如需访问所有 Datastream 区域的位置及其关联的公共 IP 地址,请参阅 IP 许可名单和区域
  10. 确保您已配置一个目标 Cloud Storage 存储分区,Datastream 可以使用 IP 许可名单、SSH 隧道或 VPC 对等互连网络连接方法对其进行访问。
  11. 确保来源数据库中存在 Datastream 可转移到 Cloud Storage 目标存储桶中的文件夹的数据、表和架构。
  12. 下载并安装 Cloud Shell。此客户端应用可让您通过命令行访问云资源(包括 Datastream)。
  13. 安装并配置 jq 实用程序。此实用程序是一个轻量级且灵活的命令行 JSON 处理器。您将使用此处理器,以简洁易懂的文本来展示复杂的 cURL 命令。

设置环境变量

在此过程中,您将设置以下变量:

  • $PROJECT:此变量与您的 Google Cloud 项目相关联。您分配和使用的任何Google Cloud 资源都必须属于一个项目。
  • $TOKEN:此变量与访问令牌相关联。访问令牌提供了一个会话,Cloud Shell 在此会话中可以使用 REST API 在 Datastream 中执行任务。
  1. 启动 Cloud Shell 应用。

  2. 使用您的 Google 账号向应用进行身份验证后,输入以下命令:

    gcloud auth login
    
  3. Do you want to continue (Y/n)? 提示符处,输入 Y

  4. 打开网络浏览器,然后将网址复制到浏览器中。

  5. 使用您的 Google 账号向 Google Cloud SDK 进行身份验证。登录页面上会显示一个代码。此代码是您的访问令牌。

  6. 复制访问令牌,将其粘贴到 Cloud Shell 应用中的 Enter verification code: 参数中,然后按 Enter

  7. 在提示符处,输入 PROJECT=\"YOUR_PROJECT_NAME\" 以将 $PROJECT 环境变量设置为您的 Google Cloud项目。

  8. 在提示符处,输入 gcloud config set project YOUR_PROJECT_NAME 以将您希望处理的项目设置为您的 Google Cloud项目。

    命令提示符会更新以反映您当前活跃的项目,并遵循以下格式:USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$

  9. 在提示符处,输入 TOKEN=$(gcloud auth print-access-token) 以检索访问令牌并将其存储为变量。

  10. 在提示符处,输入以下命令,以确保已正确设置 $PROJECT$TOKEN 变量:

    • echo $PROJECT
    • echo $TOKEN

现在您已设置了变量,可以向 Datastream 发出请求来创建和管理连接配置文件和数据流。

创建和管理连接配置文件

在本部分中,您将为源 Oracle 数据库和 Cloud Storage 中的目标存储桶创建和管理连接配置文件。

创建这些连接配置文件后,您将创建包含来源数据库和 Cloud Storage 目标存储桶的相关信息的记录。Datastream 使用连接配置文件中的信息将数据从来源数据库转移到目标存储桶中的文件夹。

创建和管理连接配置文件的操作包括:

  • 为来源 Oracle 数据库和 Cloud Storage 中的目标存储桶创建连接配置文件
  • 检索有关连接配置文件的信息
  • 修改连接配置文件
  • 对来源 Oracle 连接配置文件执行 Discover API 调用。通过此调用,您可以在数据库中查找以查看与其关联的对象。这些对象包含数据库数据所属的架构和表。使用 Datastream 配置数据流时,您可能不希望从数据库中拉取所有对象,而是想要提取对象的一部分(例如,只有数据库的特定表和架构)。使用 Discover API 可帮助您查找(或发现)要拉取的那部分数据库对象。

创建连接配置文件

在此过程中,您将创建两个连接配置文件:一个与来源 Oracle 数据库相关联,另一个与 Cloud Storage 中的目标存储桶相关联。

  1. 为源 Oracle 数据库创建连接配置文件。在提示符处,输入以下命令:
ORACLE="{\"displayName\":\"DISPLAY_NAME\",\"oracle_profile\":{\"hostname\":\"HOSTNAME\",\"username\":\"USERNAME\",\"password\":\"PASSWORD\",\"database_service\":\"DATABASE_SERVICE\",\"port\":"PORT_NUMBER\"},\"no_connectivity\":{}}"
  

下表可以帮助您了解源 Oracle 数据库的参数值:

参数值替换为
DISPLAY_NAME到源数据库的连接配置文件的显示名称。
HOSTNAME源数据库服务器的主机名。
USERNAME来源数据库账号的用户名(例如 ROOT)。
PASSWORD来源数据库账号的密码。
DATABASE_SERVICE用于确保来源数据库受到保护和监控的服务。对于 Oracle 数据库,数据库服务通常为 ORCL
PORT_NUMBER为源数据库预留的端口号。对于 Oracle 数据库,端口号通常为 1521。

  1. 在提示符处,输入 echo $ORACLE | jq 命令以查看以简单易读的文本创建的源连接配置文件。

    {
      "displayName": "DISPLAY_NAME",
      "oracle_profile": {
        "hostname": "HOSTNAME",
        "username": "USERNAME",
        "password": "PASSWORD",
        "database_service": "DATABASE_SERVICE",
        "port": PORT_NUMBER
       },
      "no_connectivity": {}
    }
  2. 提交 Oracle 连接配置文件,以便创建该配置文件。在提示符处,输入以下命令:

    curl -X POST -d $ORACLE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles?