diff options
author | fomichev <fomichev@ydb.tech> | 2023-01-05 12:44:13 +0300 |
---|---|---|
committer | fomichev <fomichev@ydb.tech> | 2023-01-05 12:44:13 +0300 |
commit | 623889c371c86a635694885a8fcf725c9206fe5c (patch) | |
tree | 933d64337583f469c7264f7fca3aae67b8bf652b | |
parent | fc3de43ca56047d485bbfcb32d616fde605a9e80 (diff) | |
download | ydb-623889c371c86a635694885a8fcf725c9206fe5c.tar.gz |
refactor an article about parameterised queries ()
-rw-r--r-- | ydb/docs/ru/core/reference/ydb-sdk/feature-parity.md | 1 | ||||
-rw-r--r-- | ydb/docs/ru/core/reference/ydb-sdk/parameterized_queries.md | 31 | ||||
-rw-r--r-- | ydb/docs/ru/core/reference/ydb-sdk/toc_i.yaml | 10 |
3 files changed, 38 insertions, 4 deletions
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/feature-parity.md b/ydb/docs/ru/core/reference/ydb-sdk/feature-parity.md index 321e05243e5..5465f41c846 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/feature-parity.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/feature-parity.md @@ -1,4 +1,5 @@ # Сравнение возможностей SDK +Данный раздел позволяет сравнить возможности {{ ydb-short-name }} SDK, которые реализованы для разных языков программирования. |Feature|C\+\+|Python|Go|Java|NodeJS|C#|Rust|PHP| |:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| diff --git a/ydb/docs/ru/core/reference/ydb-sdk/parameterized_queries.md b/ydb/docs/ru/core/reference/ydb-sdk/parameterized_queries.md new file mode 100644 index 00000000000..eb290d54987 --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/parameterized_queries.md @@ -0,0 +1,31 @@ +## Параметризованные запросы + +{{ ydb-short-name }} поддерживает и рекомендует к использованию так называемые [параметризованные запросы](https://en.wikipedia.org/wiki/Prepared_statement). В таких запросах данные передаются отдельно от самого тела запроса, а в SQL-запросе используются специальные параметры для обозначения местоположения данных. + +Запрос с данными в теле запроса: + +```sql +SELECT sa.title AS season_title, sr.title AS series_title +FROM seasons AS sa INNER JOIN series AS sr ON sa.series_id = sr.series_id +WHERE sa.series_id = 15 AND sa.season_id = 3 +``` + +Соответствующий ему параметризованный запрос: + +```sql +DECLARE $seriesId AS Uint64; +DECLARE $seasonId AS Uint64; + +SELECT sa.title AS season_title, sr.title AS series_title +FROM seasons AS sa INNER JOIN series AS sr ON sa.series_id = sr.series_id +WHERE sa.series_id = $seriesId AND sa.season_id = $seasonId +``` + +Параметризованные запросы записываются в форме шаблона, в котором определенного вида имена заменяются конкретными параметрами при каждом выполнении запроса. Лексемы начинающиеся со знака ```$``` такие, как```$seriesId``` и ```$seasonId``` в запросе выше, используются для обозначения параметров. + +Параметризованные запросы обеспечивают следующие преимущества: + +* При повторяющихся запросах сервер базы данных имеет возможность кэшировать план запроса для параметризованных запросов. Это радикально снижает потребление CPU и повышает пропускную способность системы; +* Использование параметризованных запросов спасает от уязвимостей вида [SQL Injection](https://en.wikipedia.org/wiki/SQL_injection). + +{{ ydb-short-name }} SDK автоматически кэшируют планы параметризованных запросов по умолчанию, для этого обычно используется настройка ```KeepInCache = true```. diff --git a/ydb/docs/ru/core/reference/ydb-sdk/toc_i.yaml b/ydb/docs/ru/core/reference/ydb-sdk/toc_i.yaml index 42d30418109..f475bb66ff4 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/toc_i.yaml +++ b/ydb/docs/ru/core/reference/ydb-sdk/toc_i.yaml @@ -1,10 +1,12 @@ items: - name: Обзор href: index.md - - name: Установка + - name: Установка SDK href: install.md - - name: Аутентификация + - name: Аутентификация в SDK href: auth.md + - name: Параметризованные запросы + href: parameterized_queries.md - name: Работа с топиками href: topic.md - name: Тестовое приложение @@ -14,9 +16,9 @@ items: - name: gRPC API items: - name: Обзор - href: overview-grpc-api.md + href: overview-grpc-api.md - name: Health Check API - href: health-check-api.md + href: health-check-api.md - name: Рецепты кода include: { mode: link, path: recipes/toc_p.yaml } - name: Сравнение возможностей SDK |