IBM Cloud Docs
用于云数据的 SQL 数据库

用于云数据的 SQL 数据库

本教程可能会发生成本。 使用 成本估算器 根据您的预计使用量生成成本估算。

本教程说明如何供应 SQL (关系) 数据库服务。 作为管理员,您可以创建表并将大型数据集 (城市信息) 装入到数据库中。 然后,将 Web 应用程序“world城市”部署到 IBM Cloud® Code Engine。 该应用程序允许常规用户从云数据库中查找记录。 该应用程序 使用Flask框架用 Python 编写。

caption-side=bottom"
结构图
结构图*

目标

  • 供应 SQL 数据库
  • 创建数据库模式 (表) 并装入数据
  • 将预先构建的容器化应用程序部署到 Code Engine
  • 连接应用程序和数据库服务(共享凭证)
  • 监控,保护,备份和恢复云数据库

准备工作

本教程需要:

  • 带有 Code Engine 插件的 IBM Cloud CLI,
  • git 以克隆源代码存储库。

要避免安装这些工具,可以从 IBM Cloud 控制台使用 Cloud Shell

您将在 教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。

  1. 克隆 此教程的 Github 存储库 并切换到其目录中。 在终端中,执行以下行:
    git clone https://github.com/IBM-Cloud/cloud-sql-database.git
    cd cloud-sql-database
    
  2. 转至 GeoNames,然后下载并解压缩文件 cities1000.zip。 此文件包含有关人口超过 1000 的城市的信息。 您将使用此文件作为数据集。

供应 SQL 数据库

首先创建一个 IBM Db2 Warehouse SaaS 实例。

  1. 访问 IBM Cloud® 控制台。 单击顶部导航栏中的目录
  2. 单击左侧窗格上的 数据库,然后选择 Db2 Warehouse
  3. 选择 Flex One计划,并将建议的服务名称更改为sqldatabase (稍后您将使用该名称)。 选择用于部署数据库的资源组和位置。
  4. 单击创建。 供应将启动。
  5. 资源列表中,在 数据库 下找到新实例并等待其可用 (有时可能需要刷新页面)。 单击 IBM Db2 Warehouse SaaS 服务的条目。
  6. 点击 “打开控制台”启动数据库控制台。

创建表

您需要表来保存样本数据。 请使用控制台来创建表。

  1. 在 IBM Db2 Warehouse SaaS 的控制台中,单击左上方的菜单图标,然后在导航栏中单击 运行 SQL
  2. 单击 无标题-1 选项卡旁边的 + 符号 (添加新脚本)。
  3. 单击 从文件,然后从先前克隆到本地目录的 GitHub 存储库中选择文件 cityschema.txt 并将其打开。
  4. 单击 全部运行 以执行该语句。 它应该显示成功消息。

装入数据

既然已创建了“cities”表,现在要将数据装入到该表中。 可以通过不同方式执行此操作,例如从本地机器或从云对象存储器 (COS) 或 Amazon S3 接口执行此操作。 在本教程中,将从计算机上传数据。 在此过程中,可以调整表结构和数据格式,以完全匹配文件内容。

  1. 在 IBM Db2 Warehouse SaaS 的控制台中,单击左上方的菜单图标,然后单击导航栏中的 数据

  2. 作为 ,将选择保留在 我的计算机上。

  3. “文件选择” 下,点击 “在此处拖动文件”或浏览文件,找到并选择您在指南第一部分下载的文件 cities1000.txt”。

  4. 单击 下一步 以获取具有 模式 选项的 目标 概述。 选择模式 BLUADMIN,然后选择表 CITIES。 再次单击下一步

    因为该表是空的,所以附加到现有数据或覆盖现有数据都是一样的效果。

  5. 现在,定制在装入过程中如何解释“cities1000.txt”文件中的数据。 首先,禁用第一行中的标题,因为文件只包含数据。

  6. 接下来,输入 0x09 作为分隔符。 这意味着文件中的值将用制表符分隔。

  7. 最后,选取“YYYY-MM-DD”作为日期格式。 现在,所有内容都应该类似于此截屏中显示的内容。

    显示采样数据的截屏
    显示采样数据的截屏

  8. 单击下一步,即可查看装入设置。 同意并点击 “开始加载”,开始将数据加载到 “城市”表中。 系统将显示进度。 上传数据后,应该只需几秒钟就可完成装入,随即会显示一些统计信息。

  9. 单击 查看表 以浏览数据。 您可以向下滚动或单击列名以更改排序顺序。

使用 SQL 验证装入的数据

数据已装入到关系数据库中。 未发生错误,但仍应运行一些快速测试。 请使用内置 SQL 编辑器来输入并执行一些 SQL 语句。

  1. 在左侧导航中,单击 运行 SQL 以返回到 SQL 编辑器。 单击 + 符号 (添加新脚本) 和 新建 以创建新的编辑器选项卡。

    您可以不使用内置 SQL 编辑器,而改为将桌面或服务器上基于云的和传统的 SQL 工具用于 IBM Db2 Warehouse SaaS。 可以在左侧导航中的 管理 菜单中找到连接信息。

  2. 在编辑器中键入或复制以下查询:

    select count(*) from cities;
    

    选择查询文本,然后在 全部运行旁边的下拉列表中选择 选定运行。 在结果部分,应显示与加载过程报告的行数相同的行数。

  3. 在“SQL 编辑器”中,在新行上输入以下语句:

    select countrycode, count(name) from cities
    group by countrycode
    order by 2 desc;
    

    标记上述语句的文本,然后单击 运行所选 按钮。 仅执行此语句,在结果部分按国家统计返回一些数据。

  4. 最后,运行以下语句以类似方式检索有关加利福尼亚州旧金山的详细信息:

    select * from cities
    where name='San Francisco'
    and countrycode='US';
    

部署应用程序代码

切换回终端。 现在,您将使用预先构建的容器映像来部署应用程序代码。 您可以自行修改应用程序代码和构建容器映像。 请参阅 GitHub 存储库中的指示信息 以获取详细信息。

  1. 如果您尚未登录,请使用 ibmcloud loginibmcloud login --sso 进行交互式登录。 将区域和资源组设置为已供应数据库的区域和资源组。 相应地替换 RESOURCE_GROUPREGION

    ibmcloud target -g RESOURCE_GROUP -r REGION
    
  2. 创建名为 sqldatabase 的新 Code Engine 项目:

    ibmcloud ce project create --name sqldatabase
    

    选择新项目作为活动项目:

    ibmcloud ce project select --name sqldatabase
    
  3. 然后,部署将其命名为 world城市的应用程序。

    ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
    
  4. 最后,在现有 IBM Db2 Warehouse SaaS 数据库与应用程序之间创建服务绑定:

    ibmcloud ce application bind --name worldcities --service-instance sqldatabase
    

    创建绑定后,将启动新的应用程序修订版。

  5. 现在,您可以查看应用程序详情,了解其状态并获取其 URL:

    ibmcloud ce app get --name worldcities
    

    在输出中,查找以 URL 开头的行。 显示URL 应该类似于 https://worldcities.unique-subdomain.region.codeengine.appdomain.cloud。 单击链接以访问应用程序。 另一个获取应用程序详细信息的选项是访问 Code Engine

安全、备份与恢复、监控

IBM Db2 Warehouse SaaS 是一项受管服务。 IBM 负责确保环境安全、处理每日备份和系统监视。 当您使用其中一个企业套餐时,有 多个选项用于管理访问权 和配置 增强型数据加密

除了传统管理选项外,IBM Db2 Warehouse SaaS 服务还提供用于监视,用户管理,实用程序,装入,存储访问等的 REST API

测试应用程序

基于装入的数据集显示城市信息的应用程序已缩减至最小。 它提供了一个搜索表单,用于指定城市名称(区分大小写)和几个预置城市。 这些项将转换为 /search?name=cityname(搜索表单)或 /city/cityname(直接指定的城市)。 这两个请求都在后台通过相同的代码行进行处理。 出于安全考虑,cityname 作为值传递给预先准备的SQL语句,并使用参数标记。 从数据库中访存行,然后将其传递给 HTML 模板以进行呈现。

清除

要清除本教程使用的资源,请执行以下步骤:

  1. 访问 IBM Cloud® 资源列表
  2. 在 Code Engine 部分中,找到项目 sqldatabase。 单击三个点,然后选择 删除 以删除项目及其应用程序。
  3. 数据库下找到数据库 sqldatabase。 再次单击三个点,然后选择 删除 以删除数据库。

根据资源的不同,可能不会立即将其删除,但会保留 (缺省情况下为 7 天)。 您可以通过永久删除该资源或在保留期内将其复原来回收该资源。 请参阅本文档,以了解如何 使用资源回收

扩展教程

要扩展此应用程序吗? 下面是一些构想:

  1. 提供对备用名称的通配符搜索。
  2. 搜索特定国家/地区中仅特定人口值的城市。
  3. 通过替换 CSS 样式和扩展模板,更改页面布局。
  4. 允许基于表单创建新的城市信息,或允许更新现有数据,例如人口。

相关内容