Подключение и работа в консоли¶
В данном разделе описаны способы подключения Picodata, а также первые шаги в консоли.
По умолчанию, консоль, в которой происходит запуск инстанса Picodata, служит для вывода диагностических сообщений инстанса. Для ввода команд следует подключиться к Picodata из другой консоли. При этом, возможны два типа подключения:
- подключение к консоли администратора для управления текущим инстансом
- подключение к кластерной SQL-консоли под заранее созданным пользователем для выполнения SQL-команд в рамках распределенного кластера
Консоль администратора¶
Доступ к консоли¶
Консоль администратора предоставляет доступ к учетной записи
Администратора СУБД (admin
). Для запуска
консоли используйте следующую команду с указанием файла unix-сокета:
picodata admin ./admin.sock
По умолчанию файл unix-сокета расположен в рабочей директории инстанса, указанной при запуске в параметре picodata run --data-dir. Размещение этого файла можно переопределить параметром picodata run --admin-sock.
При успешном подключении отобразится приглашение:
$ picodata admin ./admin.sock
Connected to admin console by socket path "./admin.sock"
type '\help' for interactive help
picodata>
Консоль администратора интерпретирует вводимые команды на языке SQL.
Задание пароля администратора¶
По умолчанию у Администратора СУБД отсутствует пароль, поэтому подключиться к консоли администратора возможно только при наличии доступа к ОС, в которой запущен инстанс Picodata. Для того чтобы подключаться к инстансу по сети, требуется задать пароль администратора:
ALTER USER "admin" WITH PASSWORD 'T0psecret'
После этого Администратор СУБД сможет подключиться, использую следующую команду:
picodata connect admin@localhost:3301
Создание учетной записи пользователя¶
Для того чтобы использовать пользовательскую консоль, нужно сначала создать учетную запись пользователя в административной консоли.
Для этого можно использовать следующую команду:
CREATE USER "alice" WITH PASSWORD 'T0psecret';
Чтобы новый пользователь мог создавать таблицы, ему понадобится соответствующая привилегия:
GRANT CREATE TABLE TO "alice";
SQL-консоль¶
SQL-консоль позволяет выполнять распределенные SQL-команды в рамках
кластера. После того как в системе создана пользовательская учетная
запись, можно подключиться к SQL-консоли любого локального или
удаленного инстанса. Для этого используется команда picodata connect
.
Пример для localhost
:
picodata connect alice@localhost:3301
В соответствие с доступными ему привилегиями, пользователь сможет
работать в консоли с таблицами. Возможность пользователя подключаться
может быть так же ограничена соответствующей привилегией LOGIN
.
См. также:
Специальные команды в консоли¶
Следующие специальные команды поддерживаются в консоли Picodata:
Alt+Enter
— переход к новой строке. Данная комбинация позволяет вводить многострочные команды. Для завершения ввода следует нажатьEnter
Ctrl+C
— отмена текущего вводаCtrl+D
— выход из консоли Picodata
См. также:
Pgproto¶
Модуль Pgproto реализует протокол PostgreSQL путем эмуляции сервера PostgreSQL. Основная цель Pgproto — предоставить пользователям возможность взаимодействовать с Picodata с помощью большого числа хорошо знакомых инструментов и библиотек, написанных для PostgreSQL.
Настройка Pgproto¶
Для запуска сервера Pgproto, принимающего подключения PostgreSQL по адресу
localhost:5432
, нужно запустить инстанс Picodata,
используя опцию --pg-listen
:
picodata run --pg-listen localhost:5432
Подключаться к серверу Pgproto могут только пользователи с паролем,
совместимым с PostgreSQL. Для создания пользователя postgres
с подходящим
паролем в консоли администратора нужно выполнить команду:
CREATE USER "postgres" WITH PASSWORD 'P@ssw0rd' USING md5
Примечание
В настоящее время только аутентификация по хешу MD5 совместима с PostgreSQL.
Для выдачи разрешения на создание таблиц пользователю postgres
в
консоли администратора нужно выполнить команду:
GRANT CREATE TABLE TO "postgres"
Полученное разрешение позволит пользователю postgres
отправить в Picodata
запрос CREATE TABLE, пример которого приведен далее.
Подключение к Pgproto через psql¶
Подключение к Picodata через Pgproto осуществляется с помощью интерактивного терминала PostgreSQL psql.
Команда для подключения к Pgproto через psql:
psql -U postgres -h localhost -p 5432 -W "sslmode=disable"
psql "user=postgres host=localhost port=5432 password=P@ssw0rd sslmode=disable"
По умолчанию SSL отключен в Pgproto, поэтому его также следует отключить
на стороне psql, используя опцию sslmode
.
Включение протокола SSL в Pgproto
Чтобы использовать протокол SSL при подключении к Pgproto, необходимо сделать следующее:
- Задать параметр
instance.pg.ssl: true
в файле конфигурации - Добавить в рабочую директорию инстанса
<DATA_DIR>
SSL-сертификаты:server.crt
server.key
Примеры¶
После подключения к Pgproto запросы можно будет отправлять в интерактивной сессии psql. Примеры:
postgres=> CREATE TABLE WAREHOUSE (
W_ID INTEGER NOT NULL,
W_NAME VARCHAR(10) NOT NULL,
W_TAX DOUBLE,
W_YTD DOUBLE,
PRIMARY KEY (W_ID)
)
USING MEMTX DISTRIBUTED BY (W_ID);
CREATE TABLE
postgres=> INSERT INTO WAREHOUSE (W_ID, W_NAME) VALUES (1, 'aaaa'), (2, 'aaab'), (3, 'aaac'), (4, 'aaad');
INSERT 0 4
postgres=> SELECT W_ID, W_NAME FROM WAREHOUSE;
"W_ID" | "W_NAME"
--------+----------
1 | aaaa
2 | aaab
3 | aaac
4 | aaad
(4 rows)
postgres=> SELECT W_NAME FROM WAREHOUSE WHERE W_ID=1;
"W_NAME"
----------
aaaa
(1 row)
См. также:
Ограничения Pgproto¶
- Поступающие запросы без изменений передаются в Picodata в текстовом виде, поэтому возможно выполнение только поддерживаемых в Picodata запросов
- Системные каталоги PostgreSQL пока не поддерживаются
- Pgproto работает в режиме autocommit, т. к. Picodata не поддерживает интерактивные транзакции