-
Notifications
You must be signed in to change notification settings - Fork 695
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
base: main
Are you sure you want to change the base?
Conversation
Hi! Thank you for contributing! |
🟢 |
✅ Documentation buildRevision built successfully |
Redis
as external data sourceRedis
as an external data source
⚪ Test history | Ya make output | Test bloat
🟢 |
⚪ Test history | Ya make output | Test bloat
🟢 |
@@ -0,0 +1,97 @@ | |||
# Работа с базами данных Redis | |||
|
|||
В этом разделе описана основная информация про работу с внешней `NoSQL` базой данных [Redis](https://redis.io/), которая представляет собой `in-memory` `key-value` хранилище. |
There was a problem hiding this comment.
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"`. |
There was a problem hiding this comment.
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", |
There was a problem hiding this comment.
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 ключи: |
There was a problem hiding this comment.
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` следующим образом: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ключи с префиксом sample_session
, наверное?
2. Система обработки федеративных запросов {{ ydb-short-name }} умеет передавать исполнение некоторых частей запроса системе, выступающей в качестве источника данных. Фрагменты запроса передаются сквозь {{ ydb-short-name }} непосредственно во внешнюю систему и обрабатываются внутри неё. С помощью этой оптимизации, которая носит название «пушдауна предикатов» (predicate pushdown), удаётся значительно снизить объём данных, передаваемых от источника к движку обработки федеративных запросов. Благодаря этому снижается нагрузка на сеть и экономятся вычислительные ресурсы {{ ydb-short-name }}. | ||
|
||
В случае с Redis производится пушдаун фильтрации по `<key_prefix>`, описанной выше. |
There was a problem hiding this comment.
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 }}. |
There was a problem hiding this comment.
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 не имеют схемы, нам для отображения их в таблицу приходится выводить ее самостоятельно при каждом запросе. Делается это согласно следующему алгоритму: |
There was a problem hiding this comment.
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 или как-то ещё. Очень грубый пример прилагаю:
Там же можно сделать подраздел про type inferring. Вот этот п. 3 перенеси туда, но вместо списка представь его в виде отдельного абзаца, где лаконичным литературным языком опиши, зачем нам нужна система вывода типов, и как она функционирует. Не надо выделять ничего жирным. В ограничениях оставь более лаконичную запись, что вывод типов выполняется по первым нескольким пунктам, точное количество указывается в конфиге коннектора.
|
||
- Все ключи складываются в колонку `key` типа `String` | ||
- Все встреченные значения типа `string` складываются в колонку `string_values` | ||
- Все значения из `hash`, которые присутствуют в схеме, выведенной на этапе сканирования метаданных, заполняются, остальные помечаются `null` |
There was a problem hiding this comment.
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` аналогично. |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @ElenaAfina, it has been 166 business-hours since the author's last update, could you please review? |
Hey @ElenaAfina, it has been 196 business-hours since the author's last update, could you please review? |
Hey @ElenaAfina, it has been 226 business-hours since the author's last update, could you please review? |
@Glebbs привет! учти замечания выше, пожалуйста |
Heads-up: it's been 8 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author. |
Heads-up: it's been 16 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author. |
Heads-up: it's been 24 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author. |
Heads-up: it's been 32 business-days since a reviewer comment. @Glebbs, any updates? @ElenaAfina, please check the status with the author. |
Changelog entry
Changelog category
Description for reviewers
...