云计算-关系型数据库(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"));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity环绕物体的摄像机,添加了遮挡的适应

第三人人称摄像机 支持的功能 设定目标后使用鼠标可以环绕目标点旋转&#xff0c;且会进行遮挡的适配&#xff0c;当有遮挡的时候会移动差值移动到没有遮挡的位置。 使用方式 将vThirdPersonCamera 挂在与摄像机上然后为target赋值。 如果有需要检测遮挡的层级可以修改&…

早餐店燃气安全岂能马虎?探头选择与年检必须到位

在现代都市生活中&#xff0c;早餐店作为人们日常生活中的重要一环&#xff0c;其安全性问题日益受到人们的关注。其中&#xff0c;燃气泄漏引发的火灾和爆炸事故尤为令人担忧。 因此&#xff0c;点式可燃气体报警器在早餐店中的应用显得尤为重要。 在这篇文章中&#xff0c;…

AIGC产业链上下游解析及常见名词

文章目录 AIGC上游产业链 - 基础层AIGC中游产业链 - 大模型层与工具层AIGC下游产业链 - 应用层AIGC产业链常见的名词表 在上一章节为大家介绍了 “大模型的不足与解决方案” &#xff0c;这一小节呢为大家针对AIGC的相关产业进行一个拆解&#xff0c;以及相关的一些专业名词做出…

【编程题-错题集】奇数位丢弃(模拟 - 规律)

牛客对应题目链接&#xff1a;奇数位丢弃_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 通过⼀两个例子的模拟&#xff0c;可以发现&#xff1a;每次起始删除的下标都是 2 的次方。根据这个规律&#xff0c;找到最后⼀次删除的起始位置的下标即可。 二、代码 #include <io…

感知觉训练:解锁独立生活的钥匙

在日新月异的科技时代&#xff0c;一款名为“蝙蝠避障”的辅助软件以其独到之处&#xff0c;为盲人朋友的日常生活平添了诸多便利&#xff0c;不仅实现了实时避障&#xff0c;还通过拍照识别功能扩展了信息获取的边界。然而&#xff0c;科技辅助之外&#xff0c;提升盲人朋友的…

Android 深入系统源码探讨 Activity、Window 和 View 的关系与实践

文章目录 1、概括2、Android Window 设计2.1、Window 类2.2、PhoneWindow2.3、WindowManager2.4、ViewRootImpl2.5、DecorView 3、Android Activity 设计3.1、Activity的基本概念3.2.、Activity的生命周期3.3、Activity的内部结构 4、Android View 设计4.1、View的基本概念4.2、…

LangChain 0.2 - 构建RAG应用

本文翻译整理自&#xff1a;Build a Retrieval Augmented Generation (RAG) App https://python.langchain.com/v0.2/docs/tutorials/rag/ 文章目录 一、项目说明什么是 RAG &#xff1f;概念索引检索和[生成 二、预览三、详细演练1.索引&#xff1a;加载2. 索引&#xff1a;拆…

陈丽:人工智能赋能教育创新发展

5月20日&#xff0c;在顾明远先生莅临科大讯飞考察指导高端咨询会暨“人工智能与未来教育”的主题研讨会上&#xff0c;北京师范大学原副校长、中国教育技术协会副会长陈丽教授作了题为《人工智能赋能教育创新发展》的主旨报告。 &#xff08;以下内容根据陈丽教授在研讨会上的…

期权课程之第三节【什么是ITM,ATM,OTM】

我们可以根据正股行权价和股价关系 对期权进行一个分类 ITM 全称为In-the-money&#xff1a;行权后可以获得收益的期权 根据call和put &#xff0c;又可以分为两类 ITM call &#xff1a; 行权价< 股价 &#xff0c;IMT Put &#xff1a;行权价>股价 比如这个时候&a…

分享免费的手机清理软件app,一款国外开发的手机清理神器,让手机再战两年!

手机内存越来越大&#xff0c;软件却越来越占地方&#xff0c;就像微信这家伙&#xff0c;轻轻松松就吃了十几个G&#xff01; 害得阿星8128G的手机&#xff0c;本来想换新的&#xff0c;结果用了这款Avast Cleanup软件&#xff0c;瞬间感觉手机还能再战两年&#xff01; 注意…

云上聚智共创未来 | 移动云的项目实战,10分钟让你获得高度可玩的个人博客网站

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 随着互联网的发展各种以前看起来离我们比较遥远的词越来越近了&#xff0c;比如 云服务、大数据、区块链、容器这些听起来…

VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) ESXi 7 U3 标准版集成 Intel 网卡、Realtek USB 网卡 和 NVMe 驱动 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-7-u3-sysin/&#xff0c;查看最新版。原创作品…

Android network — 进程指定网络发包

Android network — 进程指定网络发包 0. 前言1. 进程绑定网络1.1 App进程绑定网络1.2 Native进程绑定网络 2. 源码原理分析2.1 申请网络requestNetwork2.2 绑定网络 BindProcessToNetwork 3. 总结 0. 前言 在android 中&#xff0c;一个app使用网络&#xff0c;需要在manifest…

X-CSV-Reader:一个使用Rust实现CSV命令行读取器

&#x1f388;效果演示 ⚡️快速上手 依赖导入&#xff1a; cargo add csv读取实现&#xff1a; use std::error::Error; use std::fs::File; use std::path::Path;fn read_csv<P: AsRef<Path>>(filename: P) -> Result<(), Box<dyn Error>> {le…

【Java面试】二、Redis篇(中)

文章目录 1、Redis持久化1.1 RDB1.2 AOF1.3 RDB与AOF的对比 2、数据过期策略&#xff08;删除策略&#xff09;2.1 惰性删除2.2 定期删除 3、数据淘汰策略4、主从复制4.1 主从全量同步4.2 增量同步 5、哨兵模式5.1 服务状态监控5.2 哨兵选主规则5.3 哨兵模式下&#xff0c;Redi…

商标注册申请名称的概率,多想名称选通过率好的!

近日给深圳客户申请的商标初审下来了&#xff0c;两个类别都下的初审&#xff0c;和当初的判断基本一致&#xff0c;普推知产老杨当时沟通说需要做担保申请注册也可以&#xff0c;后面选择了管家注册&#xff0c;最近大量的帮客户检索商标名称&#xff0c;分享下经验。 两个字基…

【PB案例学习笔记】-09滚动条使用

写在前面 这是PB案例学习笔记系列文章的第8篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee…

新书推荐:7.1 do while语句

本节必须掌握的知识点&#xff1a; 示例二十二 代码分析 汇编解析 ■do while语句其语法形式&#xff1a; do{ 语句块; }while(表达式) ■语法解析&#xff1a; ●执行do循环体内的语句块&#xff1b; ●判断while语句里的表达式&#xff0c;表达式为真继续下次循环&#…

stm32学习-串口收发(HEX/文本)数据包

串口收发HEX数据包 接线 TXDPA10RXDPA9按键PB1 配置流程 定义为固定包长&#xff0c;含包头包尾&#xff08;其中包头为0xFF&#xff0c;载荷数据固定为4字节&#xff0c;包围为0xFE&#xff09; 注意&#xff1a;固定包长/可变包长&#xff0c;或者包头包围是什么&#xf…

UI控件与视图层次:探索界面的无限可能

[OC]UI学习笔记 文章目录 [OC]UI学习笔记视图和视图层次结构CGRectUILabelUIButtonUIView控件UIView的层级关系UIWindow定时器和视图移动UISwitch进度条和滑动条控件步进器和分栏控件警告对话框与等待指示器UITextField 视图和视图层次结构 Objective-C中的UI编程主要围绕视图…