Skip to content

YDB FQ: docs for Redis as an external data source #17187

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Glebbs
Copy link
Contributor

@Glebbs Glebbs commented Apr 14, 2025

Changelog entry

  • YDB FQ: docs for Redis as an external data source

Changelog category

  • Documentation (changelog entry is not required)

Description for reviewers

...

@Glebbs Glebbs requested a review from a team as a code owner April 14, 2025 20:03
Copy link

Hi! Thank you for contributing!
The tests on this PR will run after a maintainer adds an ok-to-test label to this PR manually. Thank you for your patience!

Copy link

github-actions bot commented Apr 14, 2025

🟢 2025-04-15 08:15:01 UTC The validation of the Pull Request description is successful.

Copy link

✅ Documentation build

Revision built successfully
Revision preview link

@vitalyisaev2 vitalyisaev2 changed the title add doc YDB FQ: docs for Redis as external data source Apr 15, 2025
@vitalyisaev2 vitalyisaev2 changed the title YDB FQ: docs for Redis as external data source YDB FQ: docs for Redis as an external data source Apr 15, 2025
@vitalyisaev2 vitalyisaev2 added the ok-to-test Special label used to approve a PR for testing on our infrastructure label Apr 15, 2025
@github-actions github-actions bot added documentation Improvements or additions to documentation and removed new-feature ok-to-test Special label used to approve a PR for testing on our infrastructure labels Apr 15, 2025
Copy link

github-actions bot commented Apr 15, 2025

2025-04-15 08:17:30 UTC Pre-commit check linux-x86_64-relwithdebinfo for b1ae77a has started.
2025-04-15 08:17:46 UTC Artifacts will be uploaded here
2025-04-15 08:19:58 UTC ya make is running...
🟢 2025-04-15 08:20:03 UTC Tests successful.

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
0 0 0 0 0 0

🟢 2025-04-15 08:20:09 UTC Build successful.

Copy link

github-actions bot commented Apr 15, 2025

2025-04-15 08:18:27 UTC Pre-commit check linux-x86_64-release-asan for b1ae77a has started.
2025-04-15 08:18:48 UTC Artifacts will be uploaded here
2025-04-15 08:21:34 UTC ya make is running...
🟢 2025-04-15 08:21:42 UTC Tests successful.

Test history | Ya make output | Test bloat

TESTS PASSED ERRORS FAILED SKIPPED MUTED?
0 0 0 0 0 0

🟢 2025-04-15 08:21:49 UTC Build successful.

@@ -0,0 +1,97 @@
# Работа с базами данных Redis

В этом разделе описана основная информация про работу с внешней `NoSQL` базой данных [Redis](https://redis.io/), которая представляет собой `in-memory` `key-value` хранилище.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В этой строчке надо убрать подсветку кода, она ни к чему. Англицизмы, которые имеют явные русские аналоги, надо тоже убрать. Например key value можно переделать в база данных типа "ключ-значение".

CREATE OBJECT redis_datasource_user_password (TYPE SECRET) WITH (value = "<password>");
```

1. Создать [внешний источник данных](../datamodel/external_data_source.md), описывающий определённую базу данных Redis. Включить шифрование соединений к внешней базе данных можно с помощью параметра `USE_TLS="TRUE"`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В этом абзаце надо расписать смысл всех параметров. Пример https://ydb.tech/docs/ru/concepts/federated_query/ms_sql_server

AUTH_METHOD="BASIC",
LOGIN="default",
PASSWORD_SECRET_NAME="redis_datasource_user_password",
--PROTOCOL="NATIVE",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

раз работает без него, убираем

- `redis_datasource` - идентификатор внешнего источника данных;
- `<key_prefix>` - префикс ключа внешнего источника данных.

например, если у вас в Redis ключи:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Избегай в рассуждениях местоимений "вы" / "мы". Язык этого документа должен быть максимально сухым и техническим.

user:email:3
```

то вы можете получить все ключи `sample_session` следующим образом:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ключи с префиксом sample_session, наверное?

Comment on lines +66 to +68
2. Система обработки федеративных запросов {{ ydb-short-name }} умеет передавать исполнение некоторых частей запроса системе, выступающей в качестве источника данных. Фрагменты запроса передаются сквозь {{ ydb-short-name }} непосредственно во внешнюю систему и обрабатываются внутри неё. С помощью этой оптимизации, которая носит название «пушдауна предикатов» (predicate pushdown), удаётся значительно снизить объём данных, передаваемых от источника к движку обработки федеративных запросов. Благодаря этому снижается нагрузка на сеть и экономятся вычислительные ресурсы {{ ydb-short-name }}.

В случае с Redis производится пушдаун фильтрации по `<key_prefix>`, описанной выше.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Соедини эти два абзаца, это же один пункт у тебя. Явно напиши, что в Redis пушдаунятся только ключи, а по колонкам пушдаун невозможен.


1. {% include [!](_includes/supported_requests.md) %}

2. Система обработки федеративных запросов {{ ydb-short-name }} умеет передавать исполнение некоторых частей запроса системе, выступающей в качестве источника данных. Фрагменты запроса передаются сквозь {{ ydb-short-name }} непосредственно во внешнюю систему и обрабатываются внутри неё. С помощью этой оптимизации, которая носит название «пушдауна предикатов» (predicate pushdown), удаётся значительно снизить объём данных, передаваемых от источника к движку обработки федеративных запросов. Благодаря этому снижается нагрузка на сеть и экономятся вычислительные ресурсы {{ ydb-short-name }}.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В нумерованных списках все пункты начинаются с единицы - такой синтаксис


В случае с Redis производится пушдаун фильтрации по `<key_prefix>`, описанной выше.

3. Поскольку данные в Redis не имеют схемы, нам для отображения их в таблицу приходится выводить ее самостоятельно при каждом запросе. Делается это согласно следующему алгоритму:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Сделай в начале документа нормальный вводный раздел, где опишешь саму концепцию интеграции. Начни с того, что YDB реляционная база, а Redis - NoSQL база, и в этом есть проблема, потому что в табличном виде надо отобразить нетабличные данные. Далее, распиши саму суть нашей идеи - что мы создаём именованные колонки под каждый тип данных. Приведи наглядные примеры, желательно в виде рисунка draw.io или как-то ещё. Очень грубый пример прилагаю:
image

Там же можно сделать подраздел про type inferring. Вот этот п. 3 перенеси туда, но вместо списка представь его в виде отдельного абзаца, где лаконичным литературным языком опиши, зачем нам нужна система вывода типов, и как она функционирует. Не надо выделять ничего жирным. В ограничениях оставь более лаконичную запись, что вывод типов выполняется по первым нескольким пунктам, точное количество указывается в конфиге коннектора.


- Все ключи складываются в колонку `key` типа `String`
- Все встреченные значения типа `string` складываются в колонку `string_values`
- Все значения из `hash`, которые присутствуют в схеме, выведенной на этапе сканирования метаданных, заполняются, остальные помечаются `null`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это официальный документ, здесь всё строго с орфографией и пунктуацией. Везде должны стоять знаки препинания.

- Все встреченные значения типа `string` складываются в колонку `string_values`
- Все значения из `hash`, которые присутствуют в схеме, выведенной на этапе сканирования метаданных, заполняются, остальные помечаются `null`

Таким образом, для каждого ключа, который хранит в себе значение типа `string`, ячейка в колонке `string_values` будет заполнена, а в `hash_values` будет равна `null`. Для `hash` аналогично.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NULL принято писать в CAPS LOCK

@@ -0,0 +1,97 @@
# Работа с базами данных Redis
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поставь плашку с ворнингом
image

Исходники тут: https://ydb.tech/docs/ru/devops/manual/federated-queries/connector-deployment

@ydbot
Copy link
Collaborator

ydbot commented Apr 23, 2025

Hey @ElenaAfina, it has been 166 business-hours since the author's last update, could you please review?

@ydbot
Copy link
Collaborator

ydbot commented Apr 25, 2025

Hey @ElenaAfina, it has been 196 business-hours since the author's last update, could you please review?

@ydbot
Copy link
Collaborator

ydbot commented Apr 28, 2025

Hey @ElenaAfina, it has been 226 business-hours since the author's last update, could you please review?

@ElenaAfina
Copy link
Collaborator

@Glebbs привет! учти замечания выше, пожалуйста

@ydbot
Copy link
Collaborator

ydbot commented May 9, 2025

Heads-up: it's been 8 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author.

@ydbot
Copy link
Collaborator

ydbot commented May 21, 2025

Heads-up: it's been 16 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author.

@ydbot
Copy link
Collaborator

ydbot commented Jun 2, 2025

Heads-up: it's been 24 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author.

@ydbot
Copy link
Collaborator

ydbot commented Jun 12, 2025

Heads-up: it's been 32 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation external
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants