Share This
Связаться со мной
Крути в низ
Categories
//Начало работы с IntelliJ IDEA и распределенным SQL

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

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

nachalo raboty s intellij idea i raspredelennym sql e607a84 - Начало работы с IntelliJ IDEA и распределенным SQL

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

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

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

  • установить кластер YugabyteDB на движке Google Kubernetes;
  • установить БД Northwind;
  • настроить IntelliJ для работы с YugabyteDB;
  • протестировать некоторые основные функции БД IntelliJ с помощью YugabyteDB.

Что такое распределенный 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.

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

Шаг 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     

nachalo raboty s intellij idea i raspredelennym sql 19a7e1a - Начало работы с IntelliJ IDEA и распределенным SQL

Обратите внимание на внешний 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):

nachalo raboty s intellij idea i raspredelennym sql 2a28551 - Начало работы с IntelliJ IDEA и распределенным SQL

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

nachalo raboty s intellij idea i raspredelennym sql b2fcfb8 - Начало работы с IntelliJ IDEA и распределенным SQL

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

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

nachalo raboty s intellij idea i raspredelennym sql c77ced3 - Начало работы с IntelliJ IDEA и распределенным SQL

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

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

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

nachalo raboty s intellij idea i raspredelennym sql ccaa042 - Начало работы с IntelliJ IDEA и распределенным SQL

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

nachalo raboty s intellij idea i raspredelennym sql a8fbc81 - Начало работы с IntelliJ IDEA и распределенным SQL

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

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

nachalo raboty s intellij idea i raspredelennym sql 609a483 - Начало работы с IntelliJ IDEA и распределенным SQL

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

Заключение

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

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

  • Советы по IntelliJ IDEA Pro
  • 50 советов, хитростей и ссылок для Android Studio и Intellij IDEA
  • Наиболее полный гайд по работе с SQL в Data Science
  • Взламываем сайты: шпаргалка по SQL инъекциям
  • Работа с PostgreSQL: от полного нуля до полного просветления

  • 91 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close