☕ ☁️ 👍 Начало работы с IntelliJ IDEA и распределенным SQL

Всерьез задумались о переносе инфраструктуры в облако? Тогда этот материал придется вам кстати. Попробуем разбираться, что это такое и с чем его едят.

Перевод публикуется с сокращениями, автор оригинальной статьи Jimmy Guerrero.

IntelliJ IDEA – это интегрированная написанная на Java среда разработки (IDE). Создана она компанией JetBrains и доступна как лицензионное издание сообщества Apache 2, а также в проприетарном коммерческом формате. Поскольку YugabyteDB совместим с PostgreSQL, большинство сторонних инструментов и приложений будут работать “из коробки”.

В этом материале вы узнаете как:

  • установить кластер YugabyteDB на движке Google Kubernetes;
  • установить БД Northwind;
  • настроить IntelliJ для работы с YugabyteDB;
  • протестировать некоторые основные функции БД IntelliJ с помощью YugabyteDB.
☕ Подтянуть свои знания по Java вы можете на нашем телеграм-канале «Библиотека Java для собеса»

Что такое распределенный SQL?

Распределенные базы данных SQL пользуются популярностью среди организаций, заинтересованных в переносе инфраструктуры данных в облако. Это часто затевается ради уменьшения TCO (Total Cost of Ownership) или избавления от ограничений горизонтального масштабирования СУБД: Oracle, PostgreSQL, MySQL и Microsoft SQL Server. Основные характеристики распределенного SQL:

  • Наличие SQL API для запросов и моделирования данных, с поддержкой внешних ключей, частичных индексов, хранимых процедур и триггеров.
  • Интеллектуальное распределенное выполнение запросов позволяет отдалить обработку передаваемых по сети данных, уменьшая время отклика на запросы.
  • Поддержка автоматического и прозрачного распределенного хранения данных для обеспечения высокой производительности и доступности.
  • Обеспечение строго согласованной репликации и распределенных ACID-транзакций.

Для получения углубленных знаний о распределенном SQL, ознакомьтесь с официальной документацией.

Что такое YugabyteDB?

YugabyteDB – это высокопроизводительная распределенная СУБД с открытым исходным кодом, построенная на масштабируемом и отказоустойчивом дизайне, вдохновленном Google Spanner. YugabyteDB совместима с PostgreSQL, а также умеет интегрироваться с проектами GraphQL и поддерживает хранимые процедуры, триггеры, а также UDFs.

Остались вопросы – обратитесь к официальному форуму.

🧩☕ Интересные задачи по Java для практики можно найти на нашем телеграм-канале «Библиотека задач по Java»

Шаг 1: Установка YugabyteDB на кластер GKE с помощью Helm 3

Полный мануал можно найти по этой ссылке. Предположим, что у вас уже есть запущенный и работающий кластер GKE.

Первое, что нужно сделать – добавить репозиторий:

$ helm repo add yugabytedb https://charts.yugabyte.com

Получим обновления:

$ helm repo update

Создадим пространство имен yb-demo:

$ kubectl create namespace yb-demo

В ответ получим следующее:

namespace/yb-demo created

Теперь установим YugabyteDB и укажем значения для некоторых ограничений:

$ helm install yb-demo yugabytedb/yugabyte \
--set resource.master.requests.cpu=1,resource.master.requests.memory=1Gi,\
resource.tserver.requests.cpu=1,resource.tserver.requests.memory=1Gi,\
enableLoadBalancer=True --namespace yb-demo --wait

Проверим статус:

$ kubectl get services --namespace yb-demo

Обратите внимание на внешний IP-адрес и порт для сервиса yb-tserver, который мы собираемся использовать для установления соединения между YugabyteDB и IntelliJ: 35.224.XX.XX:5433.

Шаг 2: Создайте Northwind БД

Следующим шагом является загрузка образца схемы и данных. Вы можете найти множество примеров совместимых с YugabyteDB баз данных в документации для разработчиков. Для этого туториала будем использовать образец БД Northwind, содержащий данные о продажах компании “Northwind Traders”. Это отличная учебная схема для ERP-системы малого бизнеса с клиентами, заказами, закупками, поставщиками, доставкой и прочим.

Подключитесь к yb-tserver-pod:

$ kubectl exec -n yb-demo -it yb-tserver-0 /bin/bash

Чтобы загрузить файлы схемы и данные, выполните следующие команды:

$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_ddl.sql
$ wget https://raw.githubusercontent.com/yugabyte/yugabyte-db/master/sample/northwind_data.sql

Выйдите из оболочки pod и подключитесь к службе YSQL:

$ exit
$ kubectl exec -n yb-demo -it yb-tserver-0 -- ysqlsh -h yb-tserver-0.yb-tservers.yb-demo

Создайте базу данных и подключитесь к ней:

yugabyte=# CREATE DATABASE northwind;
northwind=# \c northwind;

Теперь можно создать объекты БД и заполнить их данными, используя файлы, которые мы загрузили в yb-tserver-pod:

northwind=# \i 'northwind_ddl.sql';
northwind=# \i 'northwind_data.sql';

Убедитесь, что таблицы созданы:

northwind-# \d
                 List of relations

 Schema |          Name          | Type  |  Owner
-------+------------------------+-------+----------
 public | categories             | table | yugabyte
 public | customer_customer_demo | table | yugabyte
 public | customer_demographics  | table | yugabyte
 public | customers              | table | yugabyte
 public | employee_territories   | table | yugabyte
 public | employees              | table | yugabyte
 public | order_details          | table | yugabyte
 public | orders                 | table | yugabyte
 public | products               | table | yugabyte
 public | region                 | table | yugabyte
 public | shippers               | table | yugabyte
 public | suppliers              | table | yugabyte
 public | territories            | table | yugabyte
 public | us_states              | table | yugabyte

(14 rows)

Проверьте, что данные присутствуют, выполнив простой SELECT:

northwind=# SELECT count(*) FROM products;
 count
-------
    77

(1 row)

По умолчанию настроенная YugabyteDB поставляется без пароля для пользователя yugabyte. Изменение выполняется так же, как и в PostgreSQL:

northwind=# ALTER ROLE yugabyte WITH PASSWORD 'password';

Шаг 3: Настройка IntelliJ для работы с YugabyteDB

Откройте окно БД (View > Tool Windows > Database):

Добавьте источник данных PostgreSQL. (New (+) > Data Source > PostgreSQL):

На вкладке General заполните данные для подключения к БД:

  • Host: внешний IP-адрес, который GKE назначил YugabyteDB на предыдущем шаге.
  • Port: YugabyteDB использует порт 5433.
  • Database: образец БД northwind из предыдущего шага.
  • User: по умолчанию – это yugabyte.
  • Password: пароль из предыдущего шага.
  • Driver: установите последнюю версию драйвера PostgreSQL.

Прежде чем нажать кнопку “ОК”, убедитесь, что присутствует соединение.

Шаг 4: Выполнение запроса

Теперь давайте протестируем интеграцию, выполнив следующий запрос в IntelliJ:

В окне вывода должны увидеть следующий результат:

Шаг 5: Генерируем объяснение

IntelliJ умеет создавать визуализацию ваших запросов. Например, можно получить визуализацию последнего запроса, выбрав Explain Plan > Show Visualization.

Примечание: не все функции управления базами данных IntelliJ поддерживаются с помощью YugabyteDB.

Заключение

Теперь у вас есть кластер YugabyteDB на три узла и GKE с образцом базы данных Northwind, которые и дальше можно использовать в тестах на IntelliJ. Дополнительные сведения о взаимодействии с БД с помощью IntelliJ ищите в документации, а для получения информации о сторонних интеграциях с YugabyteDB ознакомьтесь с документацией для разработчиков.

Дополнительные материалы

Источники

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
05 апреля 2017

6 книг по Java для программистов любого уровня

Подборка материалов по Java. Если вы изучаете его, то обязательно найдете д...
admin
23 февраля 2017

SQL за 20 минут

Предлагаем вашему вниманию статью с кричащим названием "SQL за 20 минут". К...