Работа с базами данных Managed Service for PostgreSQL
В этом разделе описана основная информация про работу с Managed Service for PostgreSQL.
Пример чтения данных из Managed Service for PostgreSQL:
SELECT * FROM postgresql_mdb_connection.my_table
где:
postgresql_mdb_connection
— название созданного подключения к БД.my_table
— имя таблицы в базе данных.
Для работы с базой данных Managed Service for PostgreSQL необходимо выполнить следующие шаги:
- Создать соединение, содержащее реквизиты для подключения к базе данных.
- Выполнить запрос к базе данных.
Настройка соединения
Чтобы создать соединение с Managed Service for PostgreSQL:
-
В консоли управления
выберите каталог, в котором нужно создать соединение. -
В списке сервисов выберите Yandex Query.
-
На панели слева перейдите на вкладку Соединения.
-
Нажмите кнопку
Создать. -
Укажите параметры соединения:
-
В блоке Общие параметры:
- Имя — название соединения с Managed Service for PostgreSQL.
- Тип —
Managed Service for PostgreSQL
.
-
В блоке Параметры типа соединения:
- Кластер — выберите существующий кластер Managed Service for PostgreSQL или создайте новый.
- Сервисный аккаунт — выберите существующий сервисный аккаунт Managed Service for PostgreSQL или создайте новый с ролью
managed-postgresql.viewer
, от имени которого будет выполняться подключение к кластерамManaged Service for PostgreSQL
. - База данных — выберите базу данных, которая будет использоваться при работе с кластером PostgreSQL.
- Схема — укажите пространство имен
, которое будет использоваться при работе с базой данных PostgreSQL. - Логин — имя пользователя, которое будет использоваться для подключения к базам данных PostgreSQL.
- Пароль — пароль пользователя, который будет использоваться для подключения к базам данных PostgreSQL.
-
-
Нажмите кнопку Создать.
Сервисный аккаунт необходим для обнаружения точек подключения к кластерам Managed Service for PostgreSQL внутри Yandex Cloud, для работы с данными логин и пароль пользователя задаются отдельно.
Важно
Необходимо предварительно разрешить сетевой доступ от Yandex Query до кластеров Managed Service for PostgreSQL. Для этого в настройках базы данных, к которой осуществляется подключение, установите пункт "Доступ из Yandex Query".
Синтаксис запросов
Для работы с PostgreSQL используется следующая форма SQL-запроса:
SELECT * FROM <соединение>.<имя_таблицы>
где:
<соединение>
— название созданного подключения к БД.<имя_таблицы>
— имя таблицы в базе данных.
Ограничения
При работе с кластерами PostgreSQL существует ряд ограничений.
Ограничения:
- Поддерживаются только запросы чтения данных -
SELECT
, остальные виды запросов не поддерживаются. - Максимальное поддерживаемое количество строк в таблице - 1000000. При превышении этого значения запрос завершается с ошибкой.
-
Если значение даты находится вне допустимого диапазона (все используемые даты должны быть старше 1970-01-1 и меньше 2105-12-31), то выполнение запроса завершается с ошибкой.
Пушдаун фильтров
Yandex Query умеет передавать обработку частей запросов в систему-источник данных. Это означает, что фильтрующие выражения передаются сквозь Yandex Query непосредственно в базу данных для обработки, обычно это условия запросов, указанных в WHERE
. Такой способ обработки называется пушдаун фильтров
.
Пушдаун фильтров возможен при использовании:
Описание | Пример |
---|---|
Фильтров вида IS NULL /IS NOT NULL |
WHERE column1 IS NULL или WHERE column1 IS NOT NULL |
Логических условий OR , NOT , AND . |
WHERE column IS NULL OR column2 is NOT NULL . |
Условий сравнения = , <> , < , <= , > , >= c другими колонками или константами. |
WHERE column3 > column4 OR column5 <= 10 . |
Поддерживаемые типы данных для пушдауна фильтров:
Тип данных Yandex Query |
---|
BOOL |
INT8 |
UINT8 |
INT16 |
UINT16 |
INT32 |
UINT32 |
INT64 |
UINT64 |
FLOAT |
DOUBLE |
Поддерживаемые типы данных
Ниже приведена таблица соответствия типов PostgreSQL и типов Yandex Query.
Тип данных PostgreSQL | Тип данных Yandex Query | Примечания |
---|---|---|
boolean |
BOOL |
|
smallint |
INT16 |
|
int2 |
INT16 |
|
integer |
INT32 |
|
int |
INT32 |
|
int4 |
INT32 |
|
serial |
INT32 |
|
serial4 |
INT32 |
|
bigint |
INT64 |
|
int8 |
INT64 |
|
bigserial |
INT64 |
|
serial8 |
INT64 |
|
real |
FLOAT |
|
float4 |
FLOAT |
|
double precision |
DOUBLE |
|
float8 |
DOUBLE |
|
date |
DATE |
Допустимый диапазон дат с 1970-01-01 и до 2105-12-31 |
timestamp |
TIMESTAMP |
Допустимый диапазон дат с 1970-01-01 00:00 и до 2105-12-31 23:59 |
bytea |
STRING |
|
character |
UTF8 |
Правила сортировки |
character varying |
UTF8 |
Правила сортировки |
text |
UTF8 |
Правила сортировки |
Остальные типы данных не поддерживаются.