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

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

1. Вступление

Amazon Aurora is a MySQL and PostgreSQL compatible relational database built for the cloud, сочетающий в себе производительность и доступность коммерческих баз данных высокого класса с простотой и экономичностью баз данных с открытым исходным кодом.

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

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

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

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


    com.amazonaws
    aws-java-sdk
    1.11.377

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

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

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

  • Аккаунт AWS

  • Учетные данные безопасности AWS

  • Выбор региона AWS

We need an Amazon Web Services account. Если у вас их все еще нет, продолжайте иcreate an account

AWS Security Credentialsare the access keys that allow us to make programmatic calls to AWS API actions. Мы можем получить эти учетные данные двумя способами: с помощью учетных данных корневой учетной записи AWS из раздела ключей доступаhttps://console.aws.amazon.com/iam/home?security_credential[Security Credentials] page or by using IAM user credentials from https://console.aws.amazon.com/iam/home? [консоль IAM]

We have to select an AWS region(s), где мы хотим хранить наш Amazon RDS. Имейте в виду, что цены на RDS зависят от региона. Для получения более подробной информации перейдите кofficial documentation.

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

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

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

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

AWSCredentials credentials = new BasicAWSCredentials(
  "",
  ""
);

Затем настройтеRDS Builder w с соответствующимиregion иcredentials:

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

5. Amazon Aurora Instance

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

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

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

  • Идентификатор экземпляра БД, уникальный для всех существующих имен экземпляров в Amazon RDS

  • Класс инстанса БД определяет конфигурацию для ЦП, ЭБУ, памяти и т. Д. ОтInstance Class Table

  • База Движка. PostgreSQL или MySQL, мы будем использовать PostgreSQL

  • База данных master / super username

  • Пароль главного пользователя базы данных

  • Имя БД для создания исходной базы данных с указанным именем

  • В поле Тип хранилища укажите типAmazon EBS volume. Список доступенhere

  • Распределение памяти в ГиБ

CreateDBInstanceRequest request = new CreateDBInstanceRequest();
request.setDBInstanceIdentifier("example");
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, нам нужно использоватьdescribeDBInstances интерфейсаAmazonRDS:

DescribeDBInstancesResult result = amazonRDS.describeDBInstances();
List 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();
}

Endpoint URL is the connection URL for our new DB instance. Этот URL будет указан как хост при подключении к базе данных.

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

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

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

db_hostname=
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.It requires the DB instance identifier and skipFinalSnapshot parameter.

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.

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