-
Notifications
You must be signed in to change notification settings - Fork 695
YDB FQ: docs for MongoDB
as an external data source
#17978
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 |
🟢 |
⚪ Test history | Ya make output | Test bloat
🟢 |
🔄 New commits pushed — @blinkov please take a look. |
⚪ Test history | Ya make output | Test bloat
🟢 |
|
||
1. Создать [внешний источник данных](../datamodel/external_data_source.md), описывающий целевую базу данных внутри кластера MongoDB. Для соединения с MongoDB используется [нативный TCP-протокол](https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/) (`PROTOCOL="NATIVE"`). Параметр `LOCATION` содержит сетевой адрес экземпляра MongoDB, к которому осуществляется подключение. В `DATABASE_NAME` указывается имя базы данных (например, `master`). Для аутентификации во внешнюю базу используются значения параметров `LOGIN` и `PASSWORD_SECRET_NAME`. Включить шифрование соединений к внешней базе данных можно с помощью параметра `USE_TLS="TRUE"`. | ||
|
||
Параметр `READING_MODE` определяет то, каким образом документ из MongoDB будет представлен в реляционном формате: опция `TABLE` подразумевает отображение каждого корневого поля документа в отдельную колонку таблицы. |
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.
Не понятно как это всё работает, а также как «параметр READING_MODE» соотносится с «опцией TABLE». Предлагаю вынести в отдельный раздел рассказ о том как schemaless коллекции MongoDB преобразуются в таблицы и какие у этого последствия, прямо подробно и с примерами.
В частности, MongoDB вроде как не следила за тем, какие корневые поля встречаются во всех документах — откуда мы тогда берём метаданные для списка колонок, не full scan'ом коллекции же?
При работе с кластерами MongoDB существует ряд ограничений: | ||
|
||
1. {% include [!](_includes/supported_requests.md) %} | ||
1. {% include [!](_includes/predicate_pushdown.md) %} |
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.
Тут точно ровно те же ограничения, как и в источниках с поддержкой SQL?
|
||
MongoDB - это NoSQL-СУБД, предназначенная для работы с неструктурированными и полуструктурированными данными. В отличие от реляционных баз данных, MongoDB хранит JSON-подобные документы, которые как правило не соответствуют единому формату или структуре. В связи с этим, для преобразования данных MongoDB в реляционный формат, необходимый для выполнения SQL запросов, {{ ydb-full-name }} автоматически выводит схему MongoDB при выполнении запроса с помощью небольшого скана коллекции. В случае обработки документов, в которых одинаковые поля представлены разными неприводимыми типами (например, `Int32` и `String`), они будут представлены в запросе в сериализованном виде, а тип {{ ydb-full-name }} для них будет соответствовать `Optional<Utf8>`. | ||
|
||
Любые поля MongoDB кроме `_id` по умолчанию могут быть пропущены или содержать значения `NULL`, и в системе типов {{ ydb-full-name }} они должны отображаться в [опциональные](../../yql/reference/types/optional.md) типы. Поскольку поле `_id` разных документов одной коллекции может быть разных типов, в системе типов {{ ydb-full-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.
Не понятно почему разные типы в MongoDB приводят к опциональности _id и в каких случаях там окажется NULL. Я б скорее ожидал, что тип данных будет расширяться вплоть до бинарной строки.
|
||
## Поддерживаемые типы данных | ||
|
||
MongoDB - это NoSQL-СУБД, предназначенная для работы с неструктурированными и полуструктурированными данными. В отличие от реляционных баз данных, MongoDB хранит JSON-подобные документы, которые как правило не соответствуют единому формату или структуре. В связи с этим, для преобразования данных MongoDB в реляционный формат, необходимый для выполнения SQL запросов, {{ ydb-full-name }} автоматически выводит схему MongoDB при выполнении запроса с помощью небольшого скана коллекции. В случае обработки документов, в которых одинаковые поля представлены разными неприводимыми типами (например, `Int32` и `String`), они будут представлены в запросе в сериализованном виде, а тип {{ ydb-full-name }} для них будет соответствовать `Optional<Utf8>`. |
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.
Подробнее описать что означает «в сериализованном виде». Например, не понятно как произвольные бинарные данные будут запакованы в Optional<Utf8>
.
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.
Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.
Co-authored-by: Ivan Blinkov <[email protected]>
Co-authored-by: Ivan Blinkov <[email protected]>
Co-authored-by: Ivan Blinkov <[email protected]>
Co-authored-by: Ivan Blinkov <[email protected]>
🔄 New commits pushed — @blinkov please take a look. |
✅ Documentation buildRevision built successfully |
Some review comments are still unresolved. |
🔄 New commits pushed — @blinkov please take a look. |
⚪ Test history | Ya make output | Test bloat
🟢 |
⚪ Test history | Ya make output | Test bloat
🟢 |
Changelog entry
YDB FQ: docs for MongoDB as an external data source
Changelog category
Description for reviewers
...