Начало работы с IntelliJ IDEA и распределенным SQL
Всерьез задумались о переносе инфраструктуры в облако? Тогда этот материал придется вам кстати. Попробуем разбираться, что это такое и с чем его едят. Обсудить Перевод публикуется с сокращениями, автор оригинальной статьи Jimmy Guerrero. IntelliJ IDEA – это интегрированная написанная на Java среда разработки (IDE). Создана она компанией JetBrains и доступна как лицензионное издание сообщества Apache 2, а также в проприетарном коммерческом формате. Поскольку YugabyteDB совместим с PostgreSQL, большинство сторонних инструментов и приложений будут работать “из коробки”. В этом материале вы узнаете как: Что такое распределенный SQL? Распределенные базы данных SQL пользуются популярностью среди организаций, заинтересованных в переносе инфраструктуры данных в облако. Это часто затевается ради уменьшения TCO (Total Cost of Ownership) или избавления от ограничений горизонтального масштабирования СУБД: Oracle, PostgreSQL, MySQL и Microsoft SQL Server. Основные характеристики распределенного SQL: Для получения углубленных знаний о распределенном SQL, ознакомьтесь с официальной документацией. Что такое YugabyteDB? YugabyteDB – это высокопроизводительная распределенная СУБД с открытым исходным кодом, построенная на масштабируемом и отказоустойчивом дизайне, вдохновленном Google Spanner. YugabyteDB совместима с PostgreSQL, а также умеет интегрироваться с проектами GraphQL и поддерживает хранимые процедуры, триггеры, а также UDFs. Остались вопросы – обратитесь к официальному форуму. Полный мануал можно найти по этой ссылке. Предположим, что у вас уже есть запущенный и работающий кластер GKE. Первое, что нужно сделать – добавить репозиторий: Получим обновления: Создадим пространство имен yb-demo: В ответ получим следующее: Теперь установим YugabyteDB и укажем значения для некоторых ограничений: Проверим статус: Обратите внимание на внешний IP-адрес и порт для сервиса yb-tserver, который мы собираемся использовать для установления соединения между YugabyteDB и IntelliJ: 35.224.XX.XX:5433. Следующим шагом является загрузка образца схемы и данных. Вы можете найти множество примеров совместимых с YugabyteDB баз данных в документации для разработчиков. Для этого туториала будем использовать образец БД Northwind, содержащий данные о продажах компании “Northwind Traders”. Это отличная учебная схема для ERP-системы малого бизнеса с клиентами, заказами, закупками, поставщиками, доставкой и прочим. Подключитесь к yb-tserver-pod: Чтобы загрузить файлы схемы и данные, выполните следующие команды: Выйдите из оболочки pod и подключитесь к службе YSQL: Создайте базу данных и подключитесь к ней: Теперь можно создать объекты БД и заполнить их данными, используя файлы, которые мы загрузили в yb-tserver-pod: Убедитесь, что таблицы созданы: Проверьте, что данные присутствуют, выполнив простой SELECT: По умолчанию настроенная YugabyteDB поставляется без пароля для пользователя yugabyte. Изменение выполняется так же, как и в PostgreSQL: Откройте окно БД (View > Tool Windows > Database): Добавьте источник данных PostgreSQL. (New (+) > Data Source > PostgreSQL): На вкладке General заполните данные для подключения к БД: Прежде чем нажать кнопку “ОК”, убедитесь, что присутствует соединение. Теперь давайте протестируем интеграцию, выполнив следующий запрос в IntelliJ: В окне вывода должны увидеть следующий результат: IntelliJ умеет создавать визуализацию ваших запросов. Например, можно получить визуализацию последнего запроса, выбрав Explain Plan > Show Visualization. Примечание: не все функции управления базами данных IntelliJ поддерживаются с помощью YugabyteDB. Заключение Теперь у вас есть кластер YugabyteDB на три узла и GKE с образцом базы данных Northwind, которые и дальше можно использовать в тестах на IntelliJ. Дополнительные сведения о взаимодействии с БД с помощью IntelliJ ищите в документации, а для получения информации о сторонних интеграциях с YugabyteDB ознакомьтесь с документацией для разработчиков.Шаг 1: Установка YugabyteDB на кластер GKE с помощью Helm 3
$ helm repo add yugabytedb https://charts.yugabyte.com
$ helm repo update
$ kubectl create namespace yb-demo
namespace/yb-demo created
$ 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
Шаг 2: Создайте Northwind БД
$ 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
$ 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;
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)
northwind=# SELECT count(*) FROM products; count ------- 77 (1 row)
northwind=# ALTER ROLE yugabyte WITH PASSWORD 'password';
Шаг 3: Настройка IntelliJ для работы с YugabyteDB
Шаг 4: Выполнение запроса
Шаг 5: Генерируем объяснение
Дополнительные материалы
- 91 views
- 0 Comment