云计算-关系型数据库(Relational Database)

关系数据库服务(RDS)(Relational Database Service (RDS))

        Amazon RDS 可用于在云中设置和运行关系数据库。它支持多种数据库实例类型以及多个数据库引擎,如 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 数据库和 SQL Server。本周我们将使用 Amazon Aurora 创建一个无服务器 MySQL 数据库。Amazon Aurora 是免费的。

        我们可以从 AWS 管理控制台找到 RDS 主页。页面如下所示。

        我们点击“创建数据库”按钮。这会带我们到一个长页面,在那里我们可以创建和配置数据库集群。

        我们选择以下选项,而不更改大多数默认选项。

  1. 在“选择数据库创建方法”下选择“标准创建”。
  2. 在“引擎选项”部分,将“引擎类型”更改为“Aurora(MySQL 兼容)”。我们将使用基于 MySQL 的引擎。
  3. 在“可用版本”中,我们选择一个旧版本,使用 MYSQL v5.x.y.z。
  4. “模板”选择“生产”。
  5. 在“设置”部分,为“数据库集群标识符”命名,在本例中为“database-1”。
  6. 然后我们提供用户名(“admin”)和密码。
  7. “集群存储配置”应选择“Aurora 标准”。
  8. 在“实例配置”中,我们选择“突发类”,然后选择“db.t3.small”,以便配置一个较小的虚拟机。
  9. “可用性和持久性”选择默认选项。
  10. 在“连接”部分,保持所有默认选择不变。这包括 - “不连接到 EC2 计算资源”、“IPv4”、“默认 VPC”、默认子网组、不公开访问、“现有”VPC 防火墙、“默认”VPC 安全组。
  11. 我们保持“数据库身份验证”选择“密码身份验证”。
  12. 非常重要:取消选中“启用增强监控”。否则在创建此数据库时会出现错误。
  13. 在“其他配置”部分,可以为“初始数据库名称”提供数据库名称,为“scudb”。或者,如果愿意,可以跳过此步骤,稍后使用命令创建数据库。
  14. 我们不需要保留数据库备份,因此取消选中“备份”部分的“将标签复制到快照”选项。
  15. 非常重要:在“删除保护”部分取消选中“启用删除保护”选项。我们这样做是因为需要在完成后删除 RDS 数据库实例。RDS 是一个高计算资源,消耗大量信用。如果不删除 RDS 实例,我们很快会耗尽信用。
  16. 最后点击“创建数据库”按钮。我们会被带到下面的页面。在数据库准备和创建之前可能需要一些时间。

        我们可以看到两个实例 - 写入和读取。读取实例是只读的,写入实例用于读写。如果我们点击“数据库标识符”下的“写入实例”,在“连接和安全”选项卡下,我们将看到以下详细信息。我们需要记下“端点和端口”信息,以备后用。

配置 RDS 数据库

        我们还没有完成,我们需要在创建 Java 应用之前配置 RDS 数据库和 Cloud9 之间的映射。要做到这一点,请按照以下步骤操作。

        我们需要使用另一个服务“VPC”来配置映射。可以通过在 AWS 管理控制台页面上搜索找到此服务。


        从“VPC”控制台,我们点击左侧菜单上的“安全组”。我们通常会看到两个安全组 - 一个用于 RDS 集群,另一个用于 Cloud9 环境。可以从“描述”选项卡中双重检查。

        我们需要复制 Cloud9 安全组的“安全组 ID”。
        然后点击 RDS 集群的安全组。在“入站规则”下,点击“编辑入站规则”按钮。

        然后点击“添加规则”。在“类型”列表中选择“MYSQL/Aurora”,并将复制的安全组 ID 粘贴到“来源”文本框中。点击“保存规则”按钮。
要测试连接,我们进入 Cloud9 环境(与其映射的环境)并在终端中输入以下命令。
        打开一个新终端并输入以下命令,以检查映射是否成功。

mysql --user=[你的主用户名] --password=[你的密码] -h [你的数据库端点]

        在本例中,这是:

mysql --user=admin --password=12345678 -h database-1.cluster-cb3hgqshailb.us-east-1.rds.amazonaws.com

        如果连接成功,我们会看到如下确认消息。MySQL 终端将打开,可以在其中运行 SQL 命令。

运行 SQL 命令

        登录 MySQL 终端后,可以运行任何类型的 SQL 命令。例如,我们想查看现有数据库的列表。可以运行以下命令,并会看到数据库列表。请注意,SQL 命令以分号(;)结束。

        可以使用以下两个命令创建新数据库并列出现有数据库:

create database scudb;
show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| scudb              |
+--------------------+
4 rows in set (0.00 sec)

        可以使用以下命令选择要使用的数据库:

use scudb;

        可以使用以下命令创建表:

create table units(id int primary key not null, name text not null, credit int not null);

        可以通过以下命令检查表列表,表“units”应出现在列表中:

show tables;

使用 Java 访问 RDS

        对于 MySQL,我们需要在 pom.xml 中使用以下依赖项。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

        需要在 App.java 中添加以下类。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

        在 main 方法中使用以下代码在我们的“scudb”数据库中创建一个新表(Units)。创建 Connection 和 Statement 实例。我们需要提供一个 JDBC URL、用户名和密码来创建数据库连接。JDBC URL 的格式如下:

jdbc:mysql:// [主机或端点] : [端口] / [数据库名称]

        主程序中的源码如下。我们将运行一个 SQL 查询来插入表:units(id, name, credit)。在数据库连接和执行查询之前,我们必须加载 MySQL 的类驱动程序(即‘com.mysql.jdbc.Driver’)。createStatement() 方法准备查询,executeUpdate() 方法执行该查询。

Connection c = null;
Statement stmt = null;

String endpoint = "database-1.cluster-cb3hgqshailb.us-east-1.rds.amazonaws.com";
String port = "3306";
String dbname = "scu_test_db";
String url = "jdbc:mysql://" + endpoint + ":" + port + "/" + dbname;
String username = "admin";
String password = "12345678";

try {
     Class.forName("com.mysql.jdbc.Driver");
     c = DriverManager
        .getConnection(url, username, password);

     stmt = c.createStatement();
     String sql = "insert into units(id, name, credit) values(1, 'Programming II', 4);";
     stmt.executeUpdate(sql);
     stmt.close();
     c.close();
     
} catch (Exception e) {
     System.err.println(e.getClass().getName()+": "+ e.getMessage());
     System.exit(0);
}

        为了确认插入,如果我们在 Cloud9 终端中运行选择查询,我们应该会看到以下输出。

MySQL [scudb]> select * from units;
+----+----------------+--------+
| id | name           | credit |
+----+----------------+--------+
|  1 | Programming II |      4 |
+----+----------------+--------+
1 row in set (0.01 sec)

        更新和删除条目非常简单,只需替换查询语句。使用以下源代码。executeUpdate() 方法用于插入、删除和更新项目。

sql = "update units set name=’NEW_NAME’ where id=1";
stmt.executeUpdate(sql);

sql = "delete from units where id=1";
stmt.executeUpdate(sql);

        从 RDS 数据库读取项目稍有不同。我们需要使用 ResultSet 类和 executeQuery() 方法。

import java.sql.ResultSet;
    
sql = "select name from units where id=1";
ResultSet res = stmt.executeQuery(sql);

while(res.next()) {
  System.out.println(res.getString("name"));
}

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yamai Yuzuru

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值