用于云数据的 SQL 数据库
本教程可能会发生成本。 使用 成本估算器 根据您的预计使用量生成成本估算。
本教程说明如何供应 SQL (关系) 数据库服务。 作为管理员,您可以创建表并将大型数据集 (城市信息) 装入到数据库中。 然后,将 Web 应用程序“world城市”部署到 IBM Cloud® Code Engine。 该应用程序允许常规用户从云数据库中查找记录。 该应用程序 使用Flask框架用 Python 编写。
目标
- 供应 SQL 数据库
- 创建数据库模式 (表) 并装入数据
- 将预先构建的容器化应用程序部署到 Code Engine
- 连接应用程序和数据库服务(共享凭证)
- 监控,保护,备份和恢复云数据库
准备工作
本教程需要:
- 带有 Code Engine 插件的 IBM Cloud CLI,
git
以克隆源代码存储库。
要避免安装这些工具,可以从 IBM Cloud 控制台使用 Cloud Shell。
您将在 教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。
- 克隆 此教程的 Github 存储库 并切换到其目录中。 在终端中,执行以下行:
git clone https://github.com/IBM-Cloud/cloud-sql-database.git cd cloud-sql-database
- 转至 GeoNames,然后下载并解压缩文件 cities1000.zip。 此文件包含有关人口超过 1000 的城市的信息。 您将使用此文件作为数据集。
供应 SQL 数据库
首先创建一个 IBM Db2 Warehouse SaaS 实例。
- 访问 IBM Cloud® 控制台。 单击顶部导航栏中的目录。
- 单击左侧窗格上的 数据库,然后选择 Db2 Warehouse。
- 选择 Flex One计划,并将建议的服务名称更改为sqldatabase (稍后您将使用该名称)。 选择用于部署数据库的资源组和位置。
- 单击创建。 供应将启动。
- 在 资源列表中,在 数据库 下找到新实例并等待其可用 (有时可能需要刷新页面)。 单击 IBM Db2 Warehouse SaaS 服务的条目。
- 点击 “打开控制台”启动数据库控制台。
创建表
您需要表来保存样本数据。 请使用控制台来创建表。
- 在 IBM Db2 Warehouse SaaS 的控制台中,单击左上方的菜单图标,然后在导航栏中单击 运行 SQL。
- 单击 无标题-1 选项卡旁边的 + 符号 (添加新脚本)。
- 单击 从文件,然后从先前克隆到本地目录的 GitHub 存储库中选择文件
cityschema.txt
并将其打开。 - 单击 全部运行 以执行该语句。 它应该显示成功消息。
装入数据
既然已创建了“cities”表,现在要将数据装入到该表中。 可以通过不同方式执行此操作,例如从本地机器或从云对象存储器 (COS) 或 Amazon S3 接口执行此操作。 在本教程中,将从计算机上传数据。 在此过程中,可以调整表结构和数据格式,以完全匹配文件内容。
-
在 IBM Db2 Warehouse SaaS 的控制台中,单击左上方的菜单图标,然后单击导航栏中的 数据。
-
作为 源,将选择保留在 我的计算机上。
-
在 “文件选择” 下,点击 “在此处拖动文件”或浏览文件,找到并选择您在指南第一部分下载的文件 cities1000.txt”。
-
单击 下一步 以获取具有 模式 选项的 目标 概述。 选择模式 BLUADMIN,然后选择表 CITIES。 再次单击下一步。
因为该表是空的,所以附加到现有数据或覆盖现有数据都是一样的效果。
-
现在,定制在装入过程中如何解释“cities1000.txt”文件中的数据。 首先,禁用第一行中的标题,因为文件只包含数据。
-
接下来,输入 0x09 作为分隔符。 这意味着文件中的值将用制表符分隔。
-
最后,选取“YYYY-MM-DD”作为日期格式。 现在,所有内容都应该类似于此截屏中显示的内容。
显示采样数据的截屏 -
单击下一步,即可查看装入设置。 同意并点击 “开始加载”,开始将数据加载到 “城市”表中。 系统将显示进度。 上传数据后,应该只需几秒钟就可完成装入,随即会显示一些统计信息。
-
单击 查看表 以浏览数据。 您可以向下滚动或单击列名以更改排序顺序。
使用 SQL 验证装入的数据
数据已装入到关系数据库中。 未发生错误,但仍应运行一些快速测试。 请使用内置 SQL 编辑器来输入并执行一些 SQL 语句。
-
在左侧导航中,单击 运行 SQL 以返回到 SQL 编辑器。 单击 + 符号 (添加新脚本) 和 新建 以创建新的编辑器选项卡。
您可以不使用内置 SQL 编辑器,而改为将桌面或服务器上基于云的和传统的 SQL 工具用于 IBM Db2 Warehouse SaaS。 可以在左侧导航中的 管理 菜单中找到连接信息。
-
在编辑器中键入或复制以下查询:
select count(*) from cities;
选择查询文本,然后在 全部运行旁边的下拉列表中选择 选定运行。 在结果部分,应显示与加载过程报告的行数相同的行数。
-
在“SQL 编辑器”中,在新行上输入以下语句:
select countrycode, count(name) from cities group by countrycode order by 2 desc;
标记上述语句的文本,然后单击 运行所选 按钮。 仅执行此语句,在结果部分按国家统计返回一些数据。
-
最后,运行以下语句以类似方式检索有关加利福尼亚州旧金山的详细信息:
select * from cities where name='San Francisco' and countrycode='US';
部署应用程序代码
切换回终端。 现在,您将使用预先构建的容器映像来部署应用程序代码。 您可以自行修改应用程序代码和构建容器映像。 请参阅 GitHub 存储库中的指示信息 以获取详细信息。
-
如果您尚未登录,请使用
ibmcloud login
或ibmcloud login --sso
进行交互式登录。 将区域和资源组设置为已供应数据库的区域和资源组。 相应地替换 RESOURCE_GROUP 和 REGION。ibmcloud target -g RESOURCE_GROUP -r REGION
-
创建名为 sqldatabase 的新 Code Engine 项目:
ibmcloud ce project create --name sqldatabase
选择新项目作为活动项目:
ibmcloud ce project select --name sqldatabase
-
然后,部署将其命名为 world城市的应用程序。
ibmcloud ce app create --name worldcities --image icr.io/solution-tutorials/tutorial-cloud-sql-database:latest --min-scale 1
-
最后,在现有 IBM Db2 Warehouse SaaS 数据库与应用程序之间创建服务绑定:
ibmcloud ce application bind --name worldcities --service-instance sqldatabase
创建绑定后,将启动新的应用程序修订版。
-
现在,您可以查看应用程序详情,了解其状态并获取其 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 模板以进行呈现。
清除
要清除本教程使用的资源,请执行以下步骤:
- 访问 IBM Cloud® 资源列表。
- 在 Code Engine 部分中,找到项目 sqldatabase。 单击三个点,然后选择 删除 以删除项目及其应用程序。
- 在 数据库下找到数据库
sqldatabase
。 再次单击三个点,然后选择 删除 以删除数据库。
根据资源的不同,可能不会立即将其删除,但会保留 (缺省情况下为 7 天)。 您可以通过永久删除该资源或在保留期内将其复原来回收该资源。 请参阅本文档,以了解如何 使用资源回收。
扩展教程
要扩展此应用程序吗? 下面是一些构想:
- 提供对备用名称的通配符搜索。
- 搜索特定国家/地区中仅特定人口值的城市。
- 通过替换 CSS 样式和扩展模板,更改页面布局。
- 允许基于表单创建新的城市信息,或允许更新现有数据,例如人口。