Подключение и работа в консоли¶
В данном разделе описаны способы подключения Picodata, а также первые шаги в консоли.
По умолчанию консоль, в которой происходит запуск инстанса Picodata, служит для вывода отладочного журнала инстанса. Для ввода команд следует подключиться к Picodata из другой консоли. Возможны несколько вариантов:
- Подключение к консоли администратора (
picodata admin
) - Подключение к SQL-консоли (
picodata connect
) - Подключение по протоколу PostgreSQL (
psql
и др.)
См. также:
Консоль администратора¶
Настройка и подключение¶
Консоль администратора предоставляет доступ к учетной записи
Администратора СУБД (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.
Задание пароля администратора¶
По умолчанию у Администратора СУБД отсутствует пароль, поэтому подключиться к консоли администратора возможно только при наличии доступа к файлу сокета средствами ОС. Для того чтобы иметь возможность подключиться к инстансу по сети, задайте пароль администратора:
ALTER USER "admin" WITH PASSWORD 'T0psecret'
После этого Администратор СУБД сможет подключиться, используя следующую команду:
picodata connect admin@127.0.0.1:3301
Кроме того, задать пароль администратора можно при инициализации
кластера, установив переменную окружения PICODATA_ADMIN_PASSWORD
для его первого инстанса. При повторных запусках данная переменная
будет игнорироваться.
См. также:
Создание учетной записи пользователя¶
Для того чтобы использовать пользовательскую консоль, нужно сначала создать учетную запись пользователя в административной консоли. Используйте для этого следующую команду:
CREATE USER "alice" WITH PASSWORD 'T0psecret';
Чтобы новый пользователь мог создавать таблицы, выдайте ему соответствующую привилегию:
GRANT CREATE TABLE TO "alice";
Автоматизация первичной настройки¶
Первичную настройку пользователей и их прав в консоли администратора можно автоматизировать. Для этого сохраните следующий набор команд в виде скрипта:
setup.sql
\set delimiter ;
ALTER USER "admin" WITH PASSWORD 'T0psecret';
CREATE USER "alice" WITH PASSWORD 'T0psecret';
GRANT CREATE TABLE TO "alice";
GRANT READ TABLE TO "alice";
GRANT WRITE TABLE TO "alice";
Запустите этот скрипт в консоли администратора:
picodata admin ./admin.sock < ../setup.sql
Пример вывода:
Connected to admin console by socket path "admin.sock"
type '\help' for interactive help
Delimiter changed to ';'
1
1
1
1
1
Bye
Команды будут выполнены последовательно. Числа означают количество измененных строк после каждой команды.
SQL-консоль¶
SQL-консоль позволяет выполнять распределенные SQL-команды в рамках
кластера. После того как в системе создана пользовательская учетная
запись, можно подключиться к SQL-консоли любого локального или
удаленного инстанса. Для этого используйте команду picodata connect
.
Пример для 127.0.0.1
:
picodata connect alice@127.0.0.1:3301
В соответствии с доступными ему привилегиями, пользователь сможет работать в консоли с таблицами.
Перенаправление команд в консоли¶
При использовании административной или SQL-консоли поддерживается перенаправление ввода-вывода команд (pipe). Таким способом можно сделать как отдельный SQL-запрос, так и запустить файл со списком SQL-команд. Примеры:
echo "SELECT * FROM warehouse;" | picodata connect alice@127.0.0.1:3301
cat file.sql | picodata admin ./admin.sock
Пример файла с командами
\set delimiter ;
INSERT INTO customers VALUES (1, 'customer1');
SELECT name FROM customers limit 10;
DELETE FROM customers WHERE id > 100;
Встроенная справка в консоли¶
Встроенная справка Picodata доступна в административной и в
SQL-консоли. Справка содержит информацию о дополнительных командах в
консоли и поддерживаемых сочетаниях клавиш. Для вызова справки
введите \help
.
Дополнительные команды¶
В консоли Picodata доступны следующие дополнительные команды:
\e
— открыть текстовый редактор по умолчанию (в соответствии с переменнойEDITOR
)\set delimiter символ
— задатьсимвол
для разделения строк\set delimiter default
— сброситьсимвол
для разделения строк (перенос строки по нажатию Enter)
Сочетания клавиш¶
В консоли Picodata поддерживаются следующие сочетания клавиш:
- Enter — завершение ввода
- Alt+Enter — переход к новой строке
- Ctrl+C — отмена ввода
- Ctrl+D — выход из консоли
Протокол PostgreSQL¶
Picodata позволяет пользователям взаимодействовать с кластером при помощи большого числа хорошо знакомых инструментов и библиотек, написанных для PostgreSQL.
Настройка и подключение¶
Для включения протокола PostgreSQL укажите параметр picodata run --pg-listen при запуске инстанса Picodata:
picodata run --pg-listen 127.0.0.1:5432
Это позволит инстансу принимать подключения в качестве сервера PostgreSQL.
Перед подключением убедитесь, что в Picodata создана пользовательская учетная запись.
Подключитесь к Picodata через psql — интерактивный терминал PostgreSQL:
psql postgres://alice:T0psecret@127.0.0.1:5432?sslmode=disable
По умолчанию SSL для PostgreSQL-сервера в Picodata отключен, поэтому его также следует отключить
на стороне psql
, используя опцию sslmode
.
Включение протокола SSL
Чтобы использовать протокол SSL при подключении к Picodata по протоколу PostgreSQL, необходимо сделать следующее:
-
Задайте в файле конфигурации параметр
instance.pg.ssl: true
-
Добавьте в рабочую директорию инстанса
<DATA_DIR>
SSL-сертификат и ключserver.crt
,server.key
Примеры запросов¶
Примеры запросов в интерактивной сессии 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)
Ограничения¶
- Поступающие запросы без изменений передаются в Picodata в текстовом виде, поэтому возможно выполнение только поддерживаемых в Picodata запросов
- Системные каталоги PostgreSQL реализованы частично
- Подключение по протоколу PostgreSQL работает в режиме autocommit, т.к. Picodata не поддерживает интерактивные транзакции