YugabyteDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:30, 29 сентября 2020.
YugabyteDB
YugabyteDB.png
Логотип ПО
Разработчики: Yugabyte Inc.
Постоянный выпуск: version 2.3.1.0 / Сентябрь, 2020
Состояние разработки: Активная
Написана на: C and C++
Операционная система: Linux, OS X
Локализация: Английский
Тип ПО: Реляционная СУБД
Лицензия: С открытым исходным кодом
Веб-сайт www.yugabyte.com [Источник 1]


YugabyteDB - высокопроизводительная распределенная база данных SQL для глобальных интернет-приложений. Cовместима с PostgreSQL. Это 100% проект с открытым исходным кодом, лицензированный под разрешающей лицензией Apache 2.0. Не существует версии Enterprise Edition, которая бы коммерциализировала такие функции базы данных с открытым ядром, как резервное копирование и безопасность. Эти функции включены в основной проект с открытым исходным кодом.[Источник 2]

Описание

Yugabyte, компания, стоящая за YugabyteDB, предлагает два коммерческих предложения, ориентированных на управление базой данных.

  1. Платформа Yugabyte - платформа управления базами данных с самостоятельным управлением, которая позволяет пользователям создавать свои собственные службы YugabyteDB-as-a-Service в любом облаке или инфраструктуре Kubernetes. Цены основаны на количестве ядер ЦП (физических или виртуальных) в вашей среде.
  2. Облако Yugabyte - полностью управляемая служба YugabyteDB-as-a-Service, работающая в крупных публичных облаках. Предложение в настоящее время находится в бета-версии с ожидаемым GA летом 2020 года. Ценообразование с оплатой по факту будет объявлено на GA.[Источник 2]

Применение СУБД

YugabyteDB хорошо подходит для быстрорастущих облачных собственных приложений, которым необходимо надежно обслуживать критически важные для бизнеса данные с нулевой потерей данных, высокой доступностью и малой задержкой. Общие случаи использования включают в себя:

  • Приложения распределенной онлайн-обработки транзакций (OLTP), требующие масштабируемости нескольких регионов без ущерба для высокой согласованности и малой задержки. Например, идентификация пользователя, каталог розничных продуктов, служба финансовых данных.
  • Гибридная транзакционная / аналитическая обработка (HTAP), также известная как Translytical, - приложения, требующие аналитики данных транзакций в реальном времени. Например, персонализация пользователя, обнаружение мошенничества, машинное обучение.
  • Потоковые приложения, необходимые для эффективного приема, анализа и хранения постоянно растущих данных. Например, аналитика сенсоров IoT, метрики временных рядов, мониторинг в реальном времени.[Источник 2]

Преимущества перед другим СУБД

  • Объединяет три обязательные потребности облачных микросервисов: SQL как гибкий язык запросов, производительность чтения с малыми задержками и масштабируемость записи с глобальным распределением.
  • Монолитные базы данных SQL предлагают SQL с транзакциями ACID и чтениями с низкой задержкой, но не имеют возможности масштабировать записи по нескольким узлам и / или регионам.
  • Распределенные базы данных NoSQL обеспечивают производительность и масштабируемость при записи, но отказываются от семантики SQL, такой как многоключевой доступ, транзакции ACID и строгая согласованность.[Источник 2]

Основные возможности

  • СУБД Yugabyte SQL использует уровень запросов PostgreSQL, тем самым поддерживая большинство его функций (типы данных, запросы, выражения, операторы и функции, процедуры, триггеры, расширения и т. д.). Полная согласованность записей достигается за счет использования консенсуса Raft для репликации и распределенных транзакций ACID по всему кластеру с использованием гибридных логических часов. * Snapshot * и сериализуемые уровни изоляции поддерживаются. Запросы имеют строгую согласованность по умолчанию, но могут быть динамически настроены.
  • Непрерывная доступность YugabyteDB чрезвычайно устойчива к обычным сбоям благодаря отказоустойчивости и восстановлению. YugabyteDB можно настроить так, чтобы он автоматически переносил сбои диска, узла, зоны, региона и облака. Для типичного развертывания, где кластер YugabyteDB развертывается в одном регионе в нескольких зонах в общедоступном облаке, RPO равен 0 (что означает, что данные не потеряны при сбое), а RTO составляет 3 секунды (что означает, что данные, обслуживаемые сбойным узлом доступен через 3 секунды).
  • Горизонтальная масштабируемость Операция масштабирования кластера YugabyteDB для достижения большего количества операций ввода-вывода в секунду или хранения данных так же проста, как добавление узлов в кластер.
  • Геораспределенный многоблачный YugabyteDB может быть развернут в общедоступных облаках и непосредственно внутри сети Kubernetes. Он поддерживает развертывания, охватывающие три или более доменов, таких как развертывание в нескольких зонах, нескольких регионах и в нескольких облаках. Он также поддерживает асинхронную репликацию xCluster с однонаправленными конфигурациями master-slave и двунаправленной multi-master, которые можно использовать при развертывании в двух регионах. Для обслуживания данных с малыми задержками реплики чтения также поддерживаются.
  • Многофункциональный API-интерфейс В настоящее время YugabyteDB поддерживает два распределенных API-интерфейса SQL: Yugabyte SQL (YSQL), полностью реляционный API-интерфейс, повторно использующий уровень запросов PostgreSQL, и Yugabyte Cloud QL (YCQL), полу-реляционный SQL-подобный API с поддержкой документов / индексации с помощью Apache.
  • 100% открытый исходный код Версия с открытым исходным кодом имеет мощные корпоративные функции распределенного резервного копирования, шифрования данных в состоянии покоя, шифрования TLS, захвата изменений, обнаруживания реплик и других.[Источник 3]

Системные требования

Минимальные системные требования:

  • 2 ядра;
  • 2 Гб оперативной памяти.

Рекомендуемые системные требования:

  • 16+ ядер;
  • 32 Гб оперативной памяти;
  • мощный процессор по сравнению с объёмами памяти. [Источник 4]

Лицензии

Исходный код данной БД имеет различные лицензии в соответствии с Apache License 2.0 и Polyform Free Trial License 1.0.0. Копию каждой лицензии можно найти в каталоге. Вся база данных со всеми ее функциями (включая корпоративные) лицензируется под лицензией Apache License 2.0. Двоичные файлы, которые содержат -managed, лицензируются в рамках лицензии Polyform Free Trial License 1.0.0.[Источник 5]

Архитектура YugabyteDB

На рисунке 1 изображена архитектура YugabyteDB.[Источник 6]

Рисунок 1 – Архитектура YugabyteDB

Пользовательские узлы управляются системой как несколько сегментов. На всех узлах выполняются процессы YB Tablet Server, которые отвечают за большинство задач хранения, репликации и запросов. Данные организованы в узлы (несколько узлов YCQL и один общий узел для всех данных YEDIS), и каждый узел автоматически разбивается на сегменты. Каждый сегмент автоматически назначается нескольким серверам, и эти узлы образуют группу Raft, связанную с этим сегментом, выбирают "лидера" и реплицируют обновления данных сегмента. Кроме того, на небольшом количестве узлов выполняются процессы YB Master, которые несут ответственность за хранение метаданных и координацию действий во всей системе, таких как автоматическая балансировка нагрузки, создание узлов или изменение схемы. Они также составляют группу репликации Raft, хранят специальный «главный сегмент» с системными метаданными и выбирают "лидера". Главный сегмент содержит системный узел, который знает о таких объектах, как узлы, сегменты, сервера сегментов и пространства ключей CQL.[Источник 7]

Установка на ОС Linux

1.Убедитесь, что у вас версия Ubuntu не ниже 16.04, а также установлен Python 2 или 3.

$ python --version

2.Убедитесь, что wget или curl установлен. Если вы предпочитаете использовать curl, вы можете заменить wget на curl -O. Для установки wget:

$ sudo apt install wget

3.Загрузите пакет YugabyteDB, используя следующую wget команду:

$ wget https://downloads.yugabyte.com/yugabyte-2.1.6.0-linux.tar.gz

4.Извлеките пакет YugabyteDB, а затем измените каталоги на домашнюю страницу YugabyteDB:

tar xvfz yugabyte-2.1.6.0-linux.tar.gz && cd yugabyte-2.1.6.0/

5.Чтобы настроить YugabyteDB, запустите следующий сценарий оболочки:[Источник 8]

$ ./bin/post_install.sh

Создание локального кластера

Вы можете использовать yb-ctl утилиту, расположенную в bin-каталоге пакета YugabyteDB, для создания и администрирования локального кластера. Каталог данных по умолчанию $HOME/yugabyte-data. Вы можете изменить местоположение каталога данных, используя --data_dir флаг. Чтобы быстро создать локальный кластер из 1 или 3 узлов, выполните следующие действия.

Создание кластера с 1 узлом с RF 1

Чтобы создать кластер из 1 узла с коэффициентом репликации (RF) 1, выполните следующую yb-ctl create команду.

$ ./bin/yb-ctl create

Первоначальное создание кластера может занять около минуты без каких-либо выводов.

Создание кластера с 3 узлами с RF 3

Чтобы локально запустить распределенный кластер SQL для тестирования и разработки, вы можете быстро создать кластер из 3 узлов с RF 3, выполнив следующую команду.

$ ./bin/yb-ctl --rf 3 create
Теперь вы можете проверить,
$HOME/yugabyte-data
, чтобы увидеть node-i каталоги, созданные где i представляет node_id узел. Внутри каждого такого каталога будет два диска, disk1 и disk2, чтобы подчеркнуть тот факт, что YugabyteDB может работать с несколькими дисками одновременно. Обратите внимание, что IP-адрес node-i по умолчанию установлен на 127.0.0.i.

Теперь клиенты могут подключаться к API-интерфейсам YSQL и YCQL по адресу localhost:5433 и localhost:9042 соответственно.

Проверка состояния кластера с помощью yb-ctl

Чтобы увидеть yb-master и yb-tserver процессы, запущенные локально, выполните yb-ctl status команду. Например, для кластера с 1 узлом yb-ctl status команда покажет, что на локальном хосте запущен 1 yb-master процесс и 1 yb-tserver процесс:

$ ./bin/yb-ctl status
----------------------------------------------------------------------------------------------------
| Node Count: 1 | Replication Factor: 1                                                            |
----------------------------------------------------------------------------------------------------
| JDBC                : jdbc:postgresql://127.0.0.1:5433/postgres                                  |
| YSQL Shell          : bin/ysqlsh                                                                 |
| YCQL Shell          : bin/cqlsh                                                                  |
| YEDIS Shell         : bin/redis-cli                                                              |
| Web UI              : http://127.0.0.1:7000/                                                     |
| Cluster Data        : /Users/yugabyte/yugabyte-data                                             |
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
| Node 1: yb-tserver (pid 20696), yb-master (pid 20693)                                            |
----------------------------------------------------------------------------------------------------
| JDBC                : jdbc:postgresql://127.0.0.1:5433/postgres                                  |
| YSQL Shell          : bin/ysqlsh                                                                 |
| YCQL Shell          : bin/cqlsh                                                                  |
| YEDIS Shell         : bin/redis-cli                                                              |
| data-dir[0]         : /Users/yugabyte/yugabyte-data/node-1/disk-1/yb-data                       |
| yb-tserver Logs     : /Users/yugabyte/yugabyte-data/node-1/disk-1/yb-data/tserver/logs          |
| yb-master Logs      : /Users/yugabyte/yugabyte-data/node-1/disk-1/yb-data/master/logs           |
----------------------------------------------------------------------------------------------------

Проверка состояния кластера с помощью интерфейса администратора

Интерфейс администратора YB-Master узла 1 доступен по адресу, http://127.0.0.1:7000 а интерфейс администратора YB-TServer доступен по адресу http://127.0.0.1:9000. Если вы создали многоузловой кластер, вы можете посещать интерфейсы администратора других узлов, используя их соответствующие IP-адреса.

Обзор и статус YB-Master

Главная страница главного интерфейса администратора узла 1, изображённая на рисунке 2, показывает, что у нас есть кластер (он же Universe) с Replication Factor1 и значением Num Nodes (TServers) 1. Значение Num User Tables равно 0, поскольку еще не создано ни одной пользовательской таблицы. Номер версии YugabyteDB также показан для вашей справки.

Рисунок 2 – Главный интерфейс

Нажав на See all nodes кнопку, мы переходим на страницу «Серверы планшетов», показанную на рисунке 3, где мы можем наблюдать за 1 сервером, а также временем, прошедшим с момента его последнего подключения к этому мастеру через регулярные импульсы. Поскольку пользовательских таблиц еще не создано, мы видим, что их значение Load (Num Tablets) равно 0. По мере добавления новых таблиц новые планшеты будут автоматически создаваться и равномерно распределяться по всем доступным планшетным серверам. [Источник 9]

Рисунок 3 – Серверы планшетов

Источники

  1. YugabyteDB URL:https://www.yugabyte.com/ (Дата обращения: 10.05.2020)
  2. 2,0 2,1 2,2 2,3 YugabyteDB System Properties // DB-engines. URL:https://db-engines.com/en/system/YugabyteDB (Дата обращения: 10.05.2020)
  3. What is YugabyteDB? // Github. URL:https://github.com/yugabyte/yugabyte-db#what-is-yugabytedb (Дата обращения: 10.05.2020)
  4. CPU and RAM // yugabyte-db. URL:https://docs.yugabyte.com/latest/deploy/checklist/#cpu-and-ram (Дата обращения: 10.05.2020)
  5. License // Github. URL:https://github.com/yugabyte/yugabyte-db#license (Дата обращения: 10.05.2020)
  6. Architecture // Github. URL:https://github.com/yugabyte/yugabyte-db#architecture (Дата обращения: 10.05.2020)
  7. YugabyteDB Architecture // YugabyteDB blog. URL:https://blog.yugabyte.com/yugabyte-db-architecture-diverse-workloads-with-operational-simplicity/ (Дата обращения: 10.05.2020)
  8. Install YugabyteDB : Quick start // YugabyteDB. URL:https://docs.yugabyte.com/latest/quick-start/install/linux/ (дата обращения: 10.05.2020)
  9. Create a local YugabyteDB cluster : Quick start // YugabyteDB URL:https://docs.yugabyte.com/latest/quick-start/create-local-cluster/linux/ (Дата обращения: 10.05.2020)