Начало работы
В этой инструкции вы развернете одноузловой локальный кластер YDB и выполните простые запросы к базе данных.
Разверните кластер YDB
Разверните кластер YDB из архива с исполняемым файлом или используйте Docker-образ.
Примечание
В настоящее время поддерживается сборка только для Linux. Сборки для Windows и macOS будут добавлены позже.
-
Создайте рабочую директорию и перейдите в нее:
mkdir ~/ydbd && cd ~/ydbd
-
Скачайте и запустите скрипт установки:
curl https://binaries.ydb.tech/local_scripts/install.sh | bash
Будет загружен и распакован архив с исполняемым файлом
ydbd
, библиотеками, конфигурационными файлами, а также скриптами для запуска и остановки кластера. -
Запустите кластер в одном из режимов хранения данных:
-
Данные в памяти:
./start.sh ram
При хранении данных в памяти остановка кластера приведет к их потере.
-
Данные на диске:
./start.sh disk
При первом запуске скрипта в рабочей директории будет создан файл
ydb.data
размером 80 ГБ. Убедитесь, что у вас есть достаточно свободного места для его создания.
Результат:
Starting storage process... Initializing storage ... Registering database ... Starting database process... Database started. Connection options for YDB CLI: -e grpc://localhost:2136 -d /Root/test
-
-
Загрузите актуальную версию Docker-образа:
docker pull cr.yandex/yc/yandex-docker-local-ydb:latest
Убедитесь, что загрузка прошла успешно:
docker image list | grep cr.yandex/yc/yandex-docker-local-ydb
Результат:
cr.yandex/yc/yandex-docker-local-ydb latest c37f967f80d8 6 weeks ago 978MB
-
Запустите Docker-контейнер:
docker run -d --rm --name ydb-local -h localhost \ -p 2135:2135 -p 2136:2136 -p 8765:8765 \ -v $(pwd)/ydb_certs:/ydb_certs -v $(pwd)/ydb_data:/ydb_data \ -e YDB_DEFAULT_LOG_LEVEL=NOTICE \ -e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 \ cr.yandex/yc/yandex-docker-local-ydb:latest
При успешном запуске будет выведен идентификатор запущенного контейнера. Инициализация контейнера может занять несколько минут, до окончания инициализации база данных будет недоступна.
Подключитесь к БД
Вы можете использовать для подключения к базе данных YDB Embedded UI кластера или интерфейс командной строки YDB CLI.
-
Откройте в браузере страницу:
http://localhost:8765
-
В блоке Database list выберите базу данных:
/Root/test
— если вы развернули кластер с помощью исполняемого файла;/local
— если вы использовали Docker-образ.
-
Установите YDB CLI:
-
Для Linux или macOS:
curl -sSL https://storage.yandexcloud.net/yandexcloud-ydb/install.sh | bash
Примечание
Скрипт дополнит переменную
PATH
, только если его запустить в командной оболочке bash или zsh. Если вы запустили скрипт в другой оболочке, добавьте путь до CLI в переменнуюPATH
самостоятельно. -
Для Windows:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://storage.yandexcloud.net/yandexcloud-ydb/install.ps1'))"
Укажите, нужно ли добавить путь к исполняемому в переменную окружения
PATH
:Add ydb installation dir to your PATH? [Y/n]
Примечание
YDB CLI использует символы Юникода в выводе некоторых команд. При некорректном отображении таких символов в консоли Windows, переключите кодировку на UTF-8:
chcp 65001
Чтобы обновить переменные окружения, перезапустите сеанс командной оболочки.
-
-
Сохраните параметры соединения с БД в профиле YDB CLI:
ydb config profile create quickstart --endpoint grpc://localhost:2136 --database <path_database>
-
path_database
— путь базы данных. Укажите одно из значений:/Root/test
— если вы развернули кластер с помощью исполняемого файла;/local
— если вы использовали Docker-образ.
-
-
Проверьте подключение к БД:
ydb --profile quickstart scheme ls
Результат:
.sys_health .sys
Выполните запросы к БД
Выполните запросы к базе данных используя YDB Embedded UI кластера или интерфейс командной строки YDB CLI.
-
Создайте таблицы в базе данных:
В блоке Query введите текст запроса:
CREATE TABLE series ( series_id Uint64 NOT NULL, title Utf8, series_info Utf8, release_date Date, PRIMARY KEY (series_id) ); CREATE TABLE seasons ( series_id Uint64, season_id Uint64, title Utf8, first_aired Date, last_aired Date, PRIMARY KEY (series_id, season_id) ); CREATE TABLE episodes ( series_id Uint64, season_id Uint64, episode_id Uint64, title Utf8, air_date Date, PRIMARY KEY (series_id, season_id, episode_id) );
Нажмите кнопку Run Script.
-
Добавьте данные в созданные таблицы:
В блоке Query введите текст запроса:
UPSERT INTO series (series_id, title, release_date, series_info) VALUES ( 1, "IT Crowd", Date("2006-02-03"), "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Katherine Parkinson, and Matt Berry."), ( 2, "Silicon Valley", Date("2014-04-06"), "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky. The series focuses on five young men who founded a startup company in Silicon Valley." ) ; UPSERT INTO seasons (series_id, season_id, title, first_aired, last_aired) VALUES (1, 1, "Season 1", Date("2006-02-03"), Date("2006-03-03")), (1, 2, "Season 2", Date("2007-08-24"), Date("2007-09-28")), (2, 1, "Season 1", Date("2014-04-06"), Date("2014-06-01")), (2, 2, "Season 2", Date("2015-04-12"), Date("2015-06-14")) ; UPSERT INTO episodes (series_id, season_id, episode_id, title, air_date) VALUES (1, 1, 1, "Yesterday's Jam", Date("2006-02-03")), (1, 1, 2, "Calamity Jen", Date("2006-02-03")), (2, 1, 1, "Minimum Viable Product", Date("2014-04-06")), (2, 1, 2, "The Cap Table", Date("2014-04-13")) ;
Нажмите кнопку Run Script.
-
Выберите данных из таблицы
series
:В блоке Query введите текст запроса:
SELECT series_id, title AS series_title, release_date FROM series;
Нажмите кнопку Run Script.
Ниже отобразится результат выполнения запроса:
series_id series_title release_date 1 IT Crowd 13182 2 Silicon Valley 16166
-
Удалите данные из таблицы
episodes
:В блоке Query введите текст запроса:
DELETE FROM episodes WHERE series_id = 2 AND season_id = 1 AND episode_id = 2 ;
Нажмите кнопку Run Script.
-
Создайте таблицы в базе данных:
Сохраните текст запроса в файл
create-table.sql
:CREATE TABLE series ( series_id Uint64 NOT NULL, title Utf8, series_info Utf8, release_date Date, PRIMARY KEY (series_id) ); CREATE TABLE seasons ( series_id Uint64, season_id Uint64, title Utf8, first_aired Date, last_aired Date, PRIMARY KEY (series_id, season_id) ); CREATE TABLE episodes ( series_id Uint64, season_id Uint64, episode_id Uint64, title Utf8, air_date Date, PRIMARY KEY (series_id, season_id, episode_id) );
Выполните запрос:
ydb --profile quickstart yql --file create-table.sql
-
Добавьте данные в созданные таблицы:
Сохраните текст запроса в файл
upsert.sql
:UPSERT INTO series (series_id, title, release_date, series_info) VALUES ( 1, "IT Crowd", Date("2006-02-03"), "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris O'Dowd, Richard Ayoade, Katherine Parkinson, and Matt Berry."), ( 2, "Silicon Valley", Date("2014-04-06"), "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky. The series focuses on five young men who founded a startup company in Silicon Valley." ) ; UPSERT INTO seasons (series_id, season_id, title, first_aired, last_aired) VALUES (1, 1, "Season 1", Date("2006-02-03"), Date("2006-03-03")), (1, 2, "Season 2", Date("2007-08-24"), Date("2007-09-28")), (2, 1, "Season 1", Date("2014-04-06"), Date("2014-06-01")), (2, 2, "Season 2", Date("2015-04-12"), Date("2015-06-14")) ; UPSERT INTO episodes (series_id, season_id, episode_id, title, air_date) VALUES (1, 1, 1, "Yesterday's Jam", Date("2006-02-03")), (1, 1, 2, "Calamity Jen", Date("2006-02-03")), (2, 1, 1, "Minimum Viable Product", Date("2014-04-06")), (2, 1, 2, "The Cap Table", Date("2014-04-13")) ;
Выполните запрос:
ydb --profile quickstart yql --file upsert.sql
-
Выберите данных из таблицы
series
:Сохраните текст запроса в файл
select.sql
:SELECT series_id, title AS series_title, release_date FROM series;
Выполните запрос:
ydb --profile quickstart yql --file select.sql
Результат:
┌───────────┬──────────────────┬──────────────┐ | series_id | series_title | release_date | ├───────────┼──────────────────┼──────────────┤ | 1 | "IT Crowd" | "2006-02-03" | ├───────────┼──────────────────┼──────────────┤ | 2 | "Silicon Valley" | "2014-04-06" | └───────────┴──────────────────┴──────────────┘
-
Удалите данные из таблицы
episodes
:Сохраните текст запроса в файл
delete.sql
:DELETE FROM episodes WHERE series_id = 2 AND season_id = 1 AND episode_id = 2 ;
Выполните запрос:
ydb --profile quickstart yql --file delete.sql
Просмотрите таблицу
episodes
:ydb --profile quickstart yql --script "SELECT * FROM episodes;"
Результат:
┌──────────────┬────────────┬───────────┬───────────┬──────────────────────────┐ | air_date | episode_id | season_id | series_id | title | ├──────────────┼────────────┼───────────┼───────────┼──────────────────────────┤ | "2006-02-03" | 1 | 1 | 1 | "Yesterday's Jam" | ├──────────────┼────────────┼───────────┼───────────┼──────────────────────────┤ | "2006-02-03" | 2 | 1 | 1 | "Calamity Jen" | ├──────────────┼────────────┼───────────┼───────────┼──────────────────────────┤ | "2014-04-06" | 1 | 1 | 2 | "Minimum Viable Product" | └──────────────┴────────────┴───────────┴───────────┴──────────────────────────┘
Из таблицы удалена строка о сериале The Cap Table.
Остановите кластер
По окончании работы остановите кластер YDB.
Чтобы остановить кластер, выполните команду в директории ~/ydbd
:
./stop.sh
Чтобы остановить Docker-контейнер с кластером, выполните команду:
docker kill ydb-local
Что дальше
- Изучите концепции YDB.
- Узнайте подробнее об этих и других способах развертывания YDB.
- Посмотрите, как работать с БД YDB при помощи SDK.
- Ознакомьтесь с языком запросов YQL.