Перейти к основному содержимому

Руководство по AWS Aurora RDS с Java

· 5 мин. чтения

1. Введение

Amazon Aurora — это реляционная база данных , совместимая с MySQL и PostgreSQL, созданная для облака , которая сочетает в себе производительность и доступность высококачественных коммерческих баз данных с простотой и экономичностью баз данных с открытым исходным кодом.

В этом руководстве мы расскажем, как создавать инстансы Amazon RDS и взаимодействовать с ними с помощью Java, а также подключать и выполнять тесты SQL в Amazon RDS.

Начнем с настройки проекта.

2. Зависимости Maven

Давайте создадим проект Java Maven и добавим в наш проект AWS SDK:

<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.377</version>
</dependency>

Чтобы просмотреть последнюю версию, проверьте Maven Central .

3. Предпосылки

Чтобы использовать AWS SDK, нам нужно настроить несколько вещей:

  • Аккаунт AWS
  • Учетные данные безопасности AWS
  • Выбор региона AWS

Нам нужна учетная запись Amazon Web Services . Если у вас его еще нет, создайте учетную запись.

Учетные данные AWS Security — это ключи доступа, которые позволяют нам выполнять программные вызовы действий AWS API . Мы можем получить эти учетные данные двумя способами: либо с помощью учетных данных корневой учетной записи AWS из раздела ключей доступа на странице «Учетные данные безопасности », либо с помощью учетных данных пользователя IAM из консоли IAM .

Нам нужно выбрать регион(ы) AWS, в котором мы хотим хранить наш Amazon RDS. Имейте в виду, что цены на RDS зависят от региона. Для получения более подробной информации перейдите к официальной документации .

В этом уроке мы будем использовать Азиатско-Тихоокеанский регион (Сидней) (регион ap-southeast-2 ).

4. Подключитесь к веб-сервисам AWS RDS

Во-первых, нам нужно создать клиентское соединение для доступа к веб-сервису Amazon RDS.

Для этого воспользуемся интерфейсом AmazonRDS :

AWSCredentials credentials = new BasicAWSCredentials(
"<AWS accesskey>",
"<AWS secretkey>"
);

Затем настройте RDS Builder с соответствующим регионом и учетными данными :

AmazonRDSClientBuilder.standard().withCredentials(credentials)
.withRegion(Regions.AP_SOUTHEAST_2)
.build();

5. Экземпляр Amazon Aurora

Теперь давайте создадим экземпляр Amazon Aurora RDS.

5.1. Создать экземпляр RDS

Чтобы создать экземпляр RDS, нам нужно создать экземпляр CreateDBInstanceRequest со следующими атрибутами:

  • Идентификатор экземпляра БД, уникальный для всех существующих имен экземпляров в Amazon RDS.
  • Класс экземпляра БД определяет конфигурацию ЦП, ЭБУ, памяти и т. д. из таблицы классов экземпляров .
  • Механизм базы данных. PostgreSQL или MySQL, мы будем использовать PostgreSQL
  • Мастер базы данных/суперимя пользователя
  • Мастер-пароль пользователя базы данных
  • Имя БД для создания исходной БД с указанным именем
  • В поле «Тип хранилища» укажите тип тома Amazon EBS . Список доступен здесь
  • Распределение памяти в ГиБ
CreateDBInstanceRequest request = new CreateDBInstanceRequest();
request.setDBInstanceIdentifier("foreach");
request.setDBInstanceClass("db.t2.micro");
request.setEngine("postgres");
request.setMultiAZ(false);
request.setMasterUsername("username");
request.setMasterUserPassword("password");
request.setDBName("mydb");
request.setStorageType("gp2");
request.setAllocatedStorage(10);

Теперь давайте создадим наш первый экземпляр, вызвав createDBInstance() : ``

amazonRDS.createDBInstance(request);

Экземпляр RDS будет создан через несколько минут.

Мы не получим URL-адрес конечной точки в ответе, так как этот вызов является асинхронным.

5.2. Список экземпляров БД

В этом разделе мы увидим, как получить список созданных экземпляров БД.

Чтобы перечислить экземпляр RDS, нам нужно использовать descriptionDBInstances интерфейса AmazonRDS : ``

DescribeDBInstancesResult result = amazonRDS.describeDBInstances();
List<DBInstance> instances = result.getDBInstances();
for (DBInstance instance : instances) {
// Information about each RDS instance
String identifier = instance.getDBInstanceIdentifier();
String engine = instance.getEngine();
String status = instance.getDBInstanceStatus();
Endpoint endpoint = instance.getEndpoint();
}

URL-адрес конечной точки — это URL-адрес подключения для нашего нового экземпляра БД . Этот URL-адрес будет предоставлен в качестве хоста при подключении к базе данных.

5.3. Запустить тест JDBC

Теперь давайте подключим наш экземпляр RDS и создадим нашу первую таблицу.

Давайте создадим файл db.properties и добавим информацию о базе данных:

db_hostname=<Endpoint URL>
db_username=username
db_password=password
db_database=mydb

После создания файла давайте подключимся к экземпляру RDS и создадим таблицу с именем jdbc_test :

Properties prop = new Properties();
InputStream input = AwsRdsDemo.class.getClassLoader().getResourceAsStream("db.properties");
prop.load(input);
String db_hostname = prop.getProperty("db_hostname");
String db_username = prop.getProperty("db_username");
String db_password = prop.getProperty("db_password");
String db_database = prop.getProperty("db_database");
Connection conn = DriverManager.getConnection(jdbc_url, db_username, db_password);
Statement statement = conn.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS jdbc_test (id SERIAL PRIMARY KEY, content VARCHAR(80))";
statement.executeUpdate(sql);

После этого мы будем вставлять и извлекать данные из таблицы:

PreparedStatement preparedStatement = conn.prepareStatement("INSERT INTO jdbc_test (content) VALUES (?)");
String content = "" + UUID.randomUUID();
preparedStatement.setString(1, content);
preparedStatement.executeUpdate();
String sql = "SELECT  count(*) as count FROM jdbc_test";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
String count = resultSet.getString("count");
Logger.log("Total Records: " + count);
}

5.4. Удалить экземпляр

Чтобы удалить экземпляр БД, нам нужно сгенерировать DeleteDBInstanceRequest. Для этого требуется идентификатор экземпляра БД и параметр skipFinalSnapshot.

skipFinalSanpshot указывает , хотим ли мы сделать снимок перед удалением экземпляра:

DeleteDBInstanceRequest request = new DeleteDBInstanceRequest();
request.setDBInstanceIdentifier(identifier);
request.setSkipFinalSnapshot(true);
DBInstance instance = amazonRDS.deleteDBInstance(request);

6. Заключение

В этой статье мы сосредоточились на основах взаимодействия с Amazon Aurora (PostgreSQL) RDS через Amazon SDK. Этот учебник посвящен PostgreSQL, но есть и другие варианты, включая MySQL.

Хотя способ взаимодействия останется прежним в RDS. Aurora является предпочтительным выбором для многих клиентов, поскольку она работает в пять раз быстрее, чем стандартные базы данных MySQL, и в три раза быстрее, чем стандартные базы данных PostgreSQL.

Для получения дополнительной информации посетите Amazon Aurora .

И, как всегда, код можно найти на Github .