Thank you for reading this post, don't forget to subscribe!
Облачные сервисы Amazon AWS дают шикарные варианты по использованию как реляционных, так и не реляционных СУБД.
Сервис, который позволяет использовать данный облачный сервис, у AWS называется — RDS (Relational Database Service). С помощью него можно создать и использовать MySQL, MariaDB, PostgreSQL, Oracle SQL, Microsoft SQL Server. Также есть вариант SQL СУБД от Amazon — Aurora. Он представляет собой прокачанный аналог полностью совместимый как с MySQL, так и с PostgreSQL. Amazon заявляет о чуть ли не 5 кратном увеличении производительности базы данных при использовании ее версии продукта. Как бы то ни было, возможность выбора облачной СУБД у Amazon, я думаю, удовлетворит большинство пользователей. В случае же использования специфичных вариантов и наличия соответствующих знаний, всегда можно развернуть СУБД на своей собственной инфраструктуре.
Пример работы с облачной СУБД
Дальше по тексту будем предполагать, что у Вас уже есть доступ к консоли Amazon AWS и сосредоточимся на взаимодействии с сервисом облачной SQL СУБД. Итак перейдем в панели управления AWS в Services -> Database -> RDS. Здесь выбираем сразу Create Database. Откроется страничка с мастером по созданию нужного нам сервера с SQL базой данных. Скриншот экрана с верхней частью страницы представлен ниже.
Как видите, можно выбрать несколько типов СУБД. В нашем конкретном примере мы остановимся на MySQL. При этом дальше в визарде мы можем указать нужную версию MySQL, объем дискового простанства, логин и пароль, а также возможность доступа из Интернета и другие базовые настройки. Заполнив нужные параметры, нажимаем внизу на кнопочку Create Database. Через несколько минут получим готовую СУБД. Скриншот из консоли AWS привожу ниже.
Итак, мы создали СУБД MySQL в облаке, давайте попробуем подключиться к ней и поиграться с ней. Для этого узнаем в свойствах созданной СУБД DNS имя хоста, куда надо подключаться. И в командной строке нашей рабочей системы воспользуемся стандартной утилитой mysql для подключения к СУБД.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# mysql -u admin -p -h mydb2.cj7vsecsdgn46.us-east-2.rds.amazonaws.com Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 814 Server version: 5.7.22 Source distribution Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> |
Все произойдет так, как будет мы работаем с обычно базой, установленной локально или на соседней виртуалке. Попробуем создать пользователя и отдельную базу для наших экспериментов. Выполним следующие команды в открывшемся mysql клиенте.
1 2 3 4 5 6 7 |
mysql> CREATE DATABASE `GlobeData`; mysql> CREATE USER 'myuser1' IDENTIFIED BY 'Some@Password1'; mysql> GRANT ALL PRIVILEGES ON `GlobeData`.* TO 'myuser1’@‘%’; mysql> FLUSH PRIVILEGES; |
После того как база будет создана, создадим тестовую таблицу, которую будем использовать для экспериментов по записи и чтению из нее. Это делается абсолютно теми же командами, которые используются и при работе с локальной MySQL. Пример команды ниже.
1 2 3 4 5 6 |
mysql> use GlobeData; mysql> CREATE TABLE IF NOT EXISTS Countries ( country_id INT AUTO_INCREMENT PRIMARY KEY, country_name VARCHAR(255) NOT NULL, quantity_infected INT ); |
После того как наша база и табличка в ней созданы, давайте попробуем с помощью скриптов на языке Python записать в них что-то, а после этого считать из базы информацию. Ниже содержание простенько скрипта mysql_insert_db.py, который запишет в нашу БД несколько записей.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import mysql.connector from mysql.connector import Error try: connection = mysql.connector.connect(host='mydb2.ccj7vsecsdgn46.us-east-2.rds.amazonaws.com', database='GlobeData', user='myuser1', password='Some@Password1') mySql_insert_query = """INSERT INTO Countries (country_id, country_name, quantity_infected) VALUES (%s, %s, %s) """ records_to_insert = [(1, 'China', 81554), (2, 'Italy', 110574), (3, 'Spain', 104118)] cursor = connection.cursor() cursor.executemany(mySql_insert_query, records_to_insert) connection.commit() print(cursor.rowcount, "Record inserted successfully into Countries table") except mysql.connector.Error as error: print("Failed to insert record into MySQL table {}".format(error)) finally: if (connection.is_connected()): cursor.close() connection.close() print("MySQL connection is closed") |
Наши скрипты для обращения к MySQL будут использовать модуль mysql-connector. Чтобы все работало необходимо его установить в систему с помощью команды pip.
# pip install mysql-connector-python |
Далее приведен скрипт mysql_query_db.py, который будет считывать данные из нашей базы. При этом так же будет использоваться библиотека mysql-connector.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import mysql.connector from mysql.connector import Error try: connection = mysql.connector.connect(host='mydb2.cj7vsecsdgn46.us-east-2.rds.amazonaws.com', database='GlobeData', user='myuser1', password='Some@Password1') mySql_query = """SELECT country_name, quantity_infected FROM Countries """ cursor = connection.cursor() cursor.execute(mySql_query) myresult = cursor.fetchall() for row in myresult: country = row[0] quantity = row[1] out = country + " " + str(quantity) print(out) except mysql.connector.Error as error: print("Failed to insert record into MySQL table {}".format(error)) finally: if (connection.is_connected()): cursor.close() connection.close() print("MySQL connection is closed") |
Попробуем запустить наши скрипты и посмотреть, что из этого получится.
1 2 3 4 5 6 7 8 |
# python ./mysql_insert_db.py (3L, 'Record inserted successfully into Countries table') MySQL connection is closed # python ./mysql_query_db.py China 81554 Italy 110574 Spain 104118 MySQL connection is closed |
Как видим, все работает. Мы можем писать в созданную базу и читать из нее, так как будто она находится на одной из наших виртуальных машин. Нам нужно только указать нужный хост, логин и пароль и все. Остальные заботы по поддержанию работоспособности нашей базы данных берет на себя Amazon.