0

Практическая работа. Создание базы данных

26.04.2022

В этой практической работе вы создадите БД Yandex DataBase в dedicated режиме, научитесь подключаться к ней и добавлять данные из тестового приложения.Создание базы данных

  1. На стартовой странице консоли управления перейдите в каталог, в котором будете создавать БД, нажмите кнопку Создать ресурс и выберите в списке сервисов База данных YDB.
image
  1. В открывшемся окне выберите тип БД dedicated. Появившийся интерфейс создания новой БД практически идентичен уже знакомым вам интерфейсам создания кластеров управляемых БД.
image
  1. Выберите для вашей БД имя, назначьте необходимые вычислительные ресурсы (для этой и следующих практических работ достаточно одного хоста конфигурации medium), тип и количество групп хранения (достаточно одной группы).Группа хранения – это массив независимых дисковых накопителей, объединенных по сети в единый логический элемент. В YDB такой массив состоит из 9 дисков, расположенных по три в каждой из трех зон доступности. Такая конфигурация обеспечивает устойчивость при одновременном отказе одной из зон и отказе диска в другой зоне. Стандартный размер группы хранения — 100 ГБ.
  2. Выберите облачную сеть и подсети для работы с БД. Вы можете оставить сеть по умолчанию или выбрать ту, которую создали на предыдущем курсе. БД будет доступна для всех виртуальных машин, которые подключены к той же облачной сети.

Также выберите опцию присвоения публичного IP-адреса, чтобы иметь возможность подключаться к БД из интернета.

image
  1. Нажмите кнопку Создать базу данных.Создание БД занимает несколько минут. Когда статус БД изменится с Provisioning на Running, она готова к работе.
  2. Кликнув на созданную БД в консоли управления, вы перейдете на вкладку Обзор.
image

В разделе YDB эндпоинт на этой странице приведена информация, которая вам понадобится для подключения к БД:

  • Эндпоинт — точка подключения, представляющая собой в данном случае адрес, на который посылаются сообщения;
  • База данных — полный путь к БД;
  • Протокол — протокол для доступа к БД.Примеры подключений из командной строки и приложений вы можете посмотреть, нажав на кнопку Подключиться.

Подключение к базе данных и запуск тестового приложенияВ этой части практической работы вы подключитесь к БД и запустите тестовое приложение, чтобы создать в ней несколько таблиц с данными о популярных сериалах.

  1. Для того, чтобы выполнить эту задачу, вам понадобится сервисный аккаунт с ролями viewer и editor. Перейдите в дашборд каталога и выберите вкладку Сервисные аккаунты. Создайте сервисный аккаунт, назначив для него указанные роли. Сохраните идентификатор этого аккаунта.
  2. Вы можете запускать тестовое приложение со своего компьютера или с виртуальной машины в Yandex.Cloud. В данном примере используется OC Ubuntu и приложение на Python.

Если при создании БД вы не присвоили ей публичный IP-адрес, то подключиться к ней вы сможете только с виртуальной машины, расположенной в той же облачной сети.Для запуска приложения нужно склонировать на свою машину репозиторий YDB Python SDK, из которого оно будет вызываться, а также установить библиотеки ydbiso8601 и yandexcloud. Воспользуйтесь для этого следующими командами:

Скопировать кодgit clone https://github.com/yandex-cloud/ydb-python-sdk.git
sudo pip3 install iso8601 ydb yandexcloud 
  1. Создайте авторизованный ключ для вашего сервисного аккаунта и сохраните его в файл с помощью интерфейса командной строки Yandex.Cloud.
Скопировать кодmkdir ~/.ydb
yc iam key create \
  --folder-id <идентификатор каталога> \
  --service-account-name <имя сервисного аккаунта> \
  --output ~/.ydb/sa_name.json 
  1. Получите SSL-сертификат:
Скопировать кодwget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
  -O ~/.ydb/CA.pem 

Установите переменную окружения SA_KEY_FILE и переменную окружения с SSL-сертификатом.

Скопировать кодexport SA_KEY_FILE=~/.ydb/sa_name.json
export YDB_SSL_ROOT_CERTIFICATES_FILE=~/.ydb/CA.pem 
  1. Запустите тестовое приложение basic_example_v1 из репозитория ydb-python-sdk, указав в качестве параметров подключения значения протокола, эндпоинта и полного пути к БД.
Скопировать кодcd ./ydb-python-sdk/examples/basic_example_v1
python3 __main__.py \
-e grpcs://<Эндпоинт> \
-d /<База данных> 

Результат выполнения приложения должен выглядеть так:

Скопировать код> describe table: series
column, name: series_id , Uint64
column, name: title , Utf8
column, name: series_info , Utf8
column, name: release_date , Uint64
column, name: comment , Utf8
 
> select_simple_transaction:
series, id:  1 , title:  IT Crowd , release date:  b'2006-02-03'
 
> select_prepared_transaction:
episode title: To Build a Better Beta , air date: b'2016-06-05'
 
> select_prepared_transaction:
episode title: Bachman's Earnings Over-Ride , air date: b'2016-06-12'
 
> explicit TCL call
 
> select_prepared_transaction:
episode title: TBD , air date: b'2019-05-10' 
  1. Вернитесь в консоль управления Yandex.Cloud, чтобы посмотреть на результаты работы приложения. Переключитесь на вкладку Навигация.
image

В вашей БД созданы три таблицы: seriesseasons и episodes с информацией о двух популярных сериалах IT Crowd и Silicon Valley. Кликнув по названию таблицы, вы увидите содержащиеся в ней данные. А если подвести к названию таблицы курсор и кликнуть на значок «информация» справа, то внизу появится дополнительное окно с вкладками ОбзорСхема и Партиции.

image

Кнопка Создать на панели Навигация служит для создания директорий и таблиц. С ее помощью можно создать новую таблицу, не прибегая к командам YQL.

image

В следующей практической работе вы научитесь работать с данными в вашей БД при помощи YQL-запросов.

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:380 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(837): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(417): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 380