diff options
author | bazeltsev <bazeltsev@ydb.tech> | 2023-04-05 16:13:50 +0300 |
---|---|---|
committer | bazeltsev <bazeltsev@ydb.tech> | 2023-04-05 16:13:50 +0300 |
commit | 88ed8f01edda1f7214899c218c9455492dde0b9e (patch) | |
tree | c0d764a5e54002d65db7d4df81a593eed42e25ce | |
parent | f46f5c0317224bbacf907298153f3a3225e9e5ec (diff) | |
download | ydb-88ed8f01edda1f7214899c218c9455492dde0b9e.tar.gz |
Revert commit 3b14683918a469d90db5829eb81c52026f70fceb
11 files changed, 4 insertions, 247 deletions
diff --git a/ydb/docs/ru/core/_includes/olap-data-types.md b/ydb/docs/ru/core/_includes/olap-data-types.md deleted file mode 100644 index e6d3c3c3744..00000000000 --- a/ydb/docs/ru/core/_includes/olap-data-types.md +++ /dev/null @@ -1,24 +0,0 @@ -|Тип данных|Можно использовать в колоночных таблицах|Можно использовать в качестве первичного ключа| -|-----|------|------| -|Bool|Нет|Нет| -|Int8|Да|Нет| -|Int16|Да|Нет| -|Int32|Да|Да| -|Int64|Да|Да| -|Uint8|Да|Да| -|Uint16|Да|Да| -|Uint32|Да|Да| -|Uint64|Да|Да| -|Float|Да|Нет| -|Double|Да|Нет| -|Decimal|Нет|Нет| -|String|Да|Да| -|Utf8|Да|Да| -|Json|Да|Нет| -|JsonDocument|Да|Нет| -|Yson|Да|Нет| -|Uuid|Нет|Нет| -|Date|Да|Да| -|Datetime|Да|Да| -|Timestamp|Да|Да| -|Interval|Нет|Нет|
\ No newline at end of file diff --git a/ydb/docs/ru/core/best_practices/_includes/pk_olap_scalability.md b/ydb/docs/ru/core/best_practices/_includes/pk_olap_scalability.md deleted file mode 100644 index 9769c77c8e9..00000000000 --- a/ydb/docs/ru/core/best_practices/_includes/pk_olap_scalability.md +++ /dev/null @@ -1,24 +0,0 @@ -# Выбор первичного ключа для максимальной производительности колоночных таблиц - -В отличие от строковых таблиц {{ ydb-short-name }}, колоночные таблицы партиционируют данные не по первичным ключам, а по специально выделенным ключам — ключам партиционирования. При этом внутри каждой партиции данные распределяются в порядке первичного ключа таблицы. - -Поэтому для эффективной работы с колоночными таблицами {{ ydb-short-name }} необходимо правильно выбирать первичный ключ и ключ партиционирования таблиц. - -Так как ключ партиционирования определяет партицию, в которой данных хранятся, то ключ партиционирования следует выбирать так, чтобы Hash(partition_key) приводил к равномерному распределению данных по партициям. Оптимально, если ключ партиционирования содержит в 100-1000 раз больше уникальных значений, чем число партиций в таблице. - -Ключи, у которых существует большое количество уникальных значений, называются высококардинальными, и, наоборот, если уникальных значений мало, то такие ключи называются низкокардинальными. Если в качестве ключа партиционирования используется низкокардинальный ключ, данные могут распределиться по партициями неравномерно, перегрузив часть партиций. Перегрузка партиций приведет к неоптимальной производительности запросов и/или ограничениям на максимальный поток вставляемых данных. - -Первичный ключ определяет порядок хранения данных внутри партиции, поэтому при выборе первичного ключа необходимо учитывать не только эффективность сценария чтения данных из партиции, но и эффективность вставки в партицию данных. Оптимальный сценарий вставки - запись данных в начало или в конец таблицы с редкими локальными обновлениями уже вставленных данных. Например, эффективен сценарий хранения журналов работы приложений, когда данные хранятся по временным меткам, а новые записи добавляются в конец партиции за счет использования текущего времени в первичном ключе. - -{% note warning %} - -В настоящий момент необходимо таким образом выбирать первичный ключ, чтобы в качестве первой колонки первичного ключа использовалась высококардинальная колонка. Примером эффективной первой колонки является колонка с типом Timestamp (временная метка). Примером неэффективной первой колонки является колонка с типом Uint16 и 1000 уникальных значений. - -{% endnote %} - - -В настоящий момент колоночные таблицы не поддерживают автоматического решардирования, поэтому важно указывать правильное число партиций при создании таблицы. Оценить необходимое количество партиций можно по предполагаемому объему добавляемых в таблицу данных. Средняя пропускная способность партции на добавление данных — 1 МБ/c. При этом пропускная способность в первую очередь определяется выбранным первичным ключом (необходимостью сортировки данных внутри партиции при добавлении новых данных). Для небольших потоков данных не рекомендуется задавать больше 128 партиций. - -Пример: - -При потоке данных в 1ГБ/с оптимально использовать аналитическую таблицу с 1000 партиций. При этом создавать таблицы с значительным запасом партиций не стоит, т.к. это приведет к росту потребляемых ресурсов в кластере и итоговому замедлению скорости выполнения запросов.
\ No newline at end of file diff --git a/ydb/docs/ru/core/best_practices/pk_olap_scalability.md b/ydb/docs/ru/core/best_practices/pk_olap_scalability.md deleted file mode 100644 index fd06159ce80..00000000000 --- a/ydb/docs/ru/core/best_practices/pk_olap_scalability.md +++ /dev/null @@ -1 +0,0 @@ -{% include [pk_scalability.md](_includes/pk_olap_scalability.md) %}
\ No newline at end of file diff --git a/ydb/docs/ru/core/best_practices/toc_i.yaml b/ydb/docs/ru/core/best_practices/toc_i.yaml index 536acfc6b8c..e6206980446 100644 --- a/ydb/docs/ru/core/best_practices/toc_i.yaml +++ b/ydb/docs/ru/core/best_practices/toc_i.yaml @@ -3,8 +3,6 @@ items: href: index.md - name: Выбор первичного ключа для максимальной производительности href: pk_scalability.md -- name: Выбор первичного ключа для максимальной производительности аналитических таблиц - href: pk_olap_scalability.md - name: Проектирование схемы href: schema_design.md hidden: true diff --git a/ydb/docs/ru/core/concepts/_includes/limits-ydb.md b/ydb/docs/ru/core/concepts/_includes/limits-ydb.md index 3300ad026ca..994cd44e615 100644 --- a/ydb/docs/ru/core/concepts/_includes/limits-ydb.md +++ b/ydb/docs/ru/core/concepts/_includes/limits-ydb.md @@ -30,14 +30,6 @@ | Максимальный суммарный размер всех столбцов в первичном ключе | 1 Мб | GENERIC_ERROR | | Максимальный размер значения строкового столбца | 8 Мб | GENERIC_ERROR | -## Ограничения аналитических таблиц - -| Параметр | Значение | -| :--- | :--- | -| Максимальный размер строки | 8 Мб | -| Максимальный размер вставляемого блока данных | 8 Мб | - - ## Ограничения при выполнении запросов В таблице ниже перечислены ограничения, действующие при выполнении запросов. В столбце _Вызов_ указан вызов public api, обращение к которому завершится со статусом ошибки, указанным в столбце _Статус_. diff --git a/ydb/docs/ru/core/concepts/datamodel/_includes/column_table.md b/ydb/docs/ru/core/concepts/datamodel/_includes/column_table.md deleted file mode 100644 index 47af5da9d9d..00000000000 --- a/ydb/docs/ru/core/concepts/datamodel/_includes/column_table.md +++ /dev/null @@ -1,56 +0,0 @@ -## Колоночные таблицы {#olap-tables} - -{% note warning %} - -Колоночные таблицы {{ ydb-short-name }} доступны в режиме Preview. - -{% endnote %} - -Колоночная таблица {{ ydb-short-name }} — это реляционная таблица, содержащая набор связанных данных, состоящий из строк и столбцов. В отличии от обычных, строковых, [таблиц {{ ydb-short-name }}](#table), предназначенных для [OLTP-нагрузки](https://ru.wikipedia.org/wiki/OLTP), колоночные таблицы оптимизированы для задач анализа данных, [OLAP-нагрузки](https://ru.wikipedia.org/wiki/OLAP). - -На данный момент основной сценарий использования колоночных таблиц — запись данных с возрастающим первичным ключом (например, время события), анализ этих данных и удаление устаревших данных по TTL. Оптимальным способом добавления данных в колоночные таблицы является пакетная запись, выполяемая блоками в единицы мегабайт. - -Вставка пакетов данных производится атомарно: данные будут записаны или во все партиции, или ни в одну из. При чтении анализируются только полностью записанные в колоночные таблицы данные. - - -### Особенности { #olap-vs-oltp-tables } -В большинстве случаев все описание работы строковых таблиц {{ ydb-short-name }} подходит и для описания колоночных таблиц, ниже приведены отличия. - -- В качестве ключевых колонок можно использовать только NOT NULL колонки. -- Данные партицируются не по первичному ключу, а по Hash от [колонок партиционирования](#olap-tables-partitioning). -- Поддерживается [ограниченный набор](#olap-data-types) типов данных. - -{% note info %} - -В настоящий момент не поддерживается: - - Чтение с реплик. - - Вторичные индексы. - - Фильтры Блума. - - Change Data Capture. - - Переименование таблиц. - - Пользовательские аттрибуты таблиц. - - Изменение списка колонок данных в колоночных таблицах. - - Добавление данных в колоночные таблицы с помощью SQL-команды `INSERT`. - - Удаление данных из колоночных таблиц с помощью SQL-команды `DELETE`. Фактически, удаление возможно только по истечению TTL времени хранения данных. - -{% endnote %} - -### Поддерживаемые типы данных { #olap-data-types } - -{% include [olap-data-types](../../../_includes/olap-data-types.md) %} - -### Партиционирование { #olap-tables-partitioning } - -В отличие от строковых таблиц {{ ydb-short-name }}, колоночные таблицы партиционируют данные не по первичным ключам, а по специально выделенным ключам — ключам партиционирования. Ключи партиционирования являются подмножеством первичных ключей таблицы. В отличие от партиционирования данных в строковых таблиц {{ ydb-short-name }}, партиционирование данных для колоночных таблиц выполняется не по значениям ключей, а по hash-значениям от ключей, что позволяет равномерно распределить данные во все существующие партиции. -Такое партиционирование позволяет избежать хотспотов при вставке и ускоряет аналитические запросы, обрабатывающие (считывающие) большие объемы данных. - -Выбор ключей партиционирования существенно влияет на производительность колоночных таблиц. Подробнее про выбор ключей для партиционирования колоночных таблиц описано в разделе [Выбор ключа для максимальной производительности для колоночных таблиц](../../../best_practices/pk_olap_scalability.md). - -Для управления партиционированием данных используется параметр AUTO_PARTITIONING_MIN_PARTITIONS_COUNT. Остальные параметры партиционирования для колоночных таблиц игнорируются. - -#### AUTO_PARTITIONING_MIN_PARTITIONS_COUNT { #auto_partitioning_min_partitions_count } - -* Тип: `Uint64`. -* Значение по умолчанию: `1`. - -Определяет минимальное физическое количество партиций для хранения данных. С учетом, что остальные параметры партиционирования игнорируются, фактически это же значение определяет и верхнее число партиций для партиционирования. diff --git a/ydb/docs/ru/core/concepts/datamodel/_includes/table.md b/ydb/docs/ru/core/concepts/datamodel/_includes/table.md index eb38b6fc4e7..634e7a29c00 100644 --- a/ydb/docs/ru/core/concepts/datamodel/_includes/table.md +++ b/ydb/docs/ru/core/concepts/datamodel/_includes/table.md @@ -169,4 +169,3 @@ * максимальный общий размер атрибутов (сумма длин всех ключей и значений) — 10240 байт. О том, как добавить, изменить, получить текущие значения или удалить атрибуты читайте в статье [{#T}](../../../operations/manage-users-attr.md). - diff --git a/ydb/docs/ru/core/concepts/datamodel/column_table.md b/ydb/docs/ru/core/concepts/datamodel/column_table.md deleted file mode 100644 index 304d0db2dcf..00000000000 --- a/ydb/docs/ru/core/concepts/datamodel/column_table.md +++ /dev/null @@ -1 +0,0 @@ -{% include [column_table.md](_includes/column_table.md) %}
\ No newline at end of file diff --git a/ydb/docs/ru/core/concepts/datamodel/toc_i.yaml b/ydb/docs/ru/core/concepts/datamodel/toc_i.yaml index 1a1f94a055d..636277756d8 100644 --- a/ydb/docs/ru/core/concepts/datamodel/toc_i.yaml +++ b/ydb/docs/ru/core/concepts/datamodel/toc_i.yaml @@ -2,5 +2,4 @@ items: - { name: Обзор, href: index.md } - { name: Директория, href: dir.md } - { name: Таблица, href: table.md } -- { name: Колоночная таблица, href: column_table.md } - { name: Топик, href: ../topic.md } diff --git a/ydb/docs/ru/core/getting_started/_includes/yql.md b/ydb/docs/ru/core/getting_started/_includes/yql.md index d115be43acb..727d66d8b4b 100644 --- a/ydb/docs/ru/core/getting_started/_includes/yql.md +++ b/ydb/docs/ru/core/getting_started/_includes/yql.md @@ -82,36 +82,6 @@ CREATE TABLE episodes ( Для исполнения скрипта через {{ ydb-short-name }} CLI выполните инструкции, приведенные в пункте [Исполнение в {{ ydb-short-name }} CLI](#cli) данной статьи. -### Создание колоночных таблиц {#create-olap-table} - -Таблица с заданными колонками создается [командой YQL `CREATE TABLE`](../../yql/reference/syntax/create_table.md). В таблице обязательно должен быть определен первичный ключ и ключ партиционирования. Типы данных для колонок приведены в статье [Типы данных YQL](../../yql/reference/types/index.md), а допустимые для использования в аналитических таблицах типы данных описаны в разделе [Поддерживаемые типы данных колоночных таблиц](../../concepts/datamodel/table.md#olap-data-types). - -Колонки, входящие в первичный ключ, должны быть описаны с ограничением `NOT NULL`. Остальные колонки по умолчанию опциональные и могут содержать `NULL`. Ограничения `FOREIGN KEY` {{ ydb-short-name }} не поддерживает. - -Создайте таблицы каталога сериалов: `views` (Просмотры), выполнив следующий скрипт: - -```sql -CREATE TABLE views ( - series_id Uint64 NOT NULL, - season_id Uint64, - viewed_at Timestamp NOT NULL, - person_id Uint64 NOT NULL, - PRIMARY KEY (viewed_at, series_id, person_id) -) -PARTITION BY HASH(viewed_at, series_id) -WITH ( - STORE = COLUMN, - AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10 -) -``` - -Описание всех возможностей работы с таблицами приведены в разделах документации по YQL: - -* [CREATE TABLE](../../yql/reference/syntax/create_table.md) — создание таблицы и определение начальных параметров. -* [DROP TABLE](../../yql/reference/syntax/drop_table.md) — удаление таблицы. - -Для исполнения скрипта через {{ ydb-short-name }} CLI выполните инструкции, приведенные в пункте [Исполнение в {{ ydb-short-name }} CLI](#cli) данной статьи. - ### Получение перечня существующих таблиц в БД {#scheme-ls} Проверьте, что таблицы фактически созданы в БД. diff --git a/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/create_table.md b/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/create_table.md index 7b6adc7d05b..c9a78cdde07 100644 --- a/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/create_table.md +++ b/ydb/docs/ru/core/yql/reference/yql-core/syntax/_includes/create_table.md @@ -1,12 +1,5 @@ # CREATE TABLE -{% if feature_olap_tables %} -{{ ydb-short-name }} поддерживает несколько видов таблиц: [строковые](../../../../concepts/datamodel/table.md) и в режиме превью [колоночные](../../../../concepts/datamodel/column_table.md). Тип таблицы определяется параметром `STORE`, где `ROW` означает [строковую таблицу](#row), а `COLUMN` означает [колоночную](#olap-tables). По умолчанию, если параметр `STORE` не указан, создается строковая таблица. - - -{%endif%} - -{% if feature_olap_tables %}## Строковые таблицы {#row}{%endif%} {% if feature_bulk_tables %} Таблица создается автоматически при первом [INSERT INTO](insert_into.md){% if feature_mapreduce %}, в заданной оператором [USE](../use.md) базе данных{% endif %}. Схема при этом определяется автоматически. @@ -35,7 +28,7 @@ WITH ( key = value, ... ) {% endif %} -{% if feature_olap_tables %}#{%endif%}## Колонки {#columns} +## Колонки {#columns} {% if feature_column_container_type == true %} Для неключевых колонок допускаются любые типы данных, для ключевых - только [примитивные](../../types/primitive.md). При указании сложных типов (например, `List<String>`) тип заключается в двойные кавычки. @@ -71,7 +64,7 @@ {% if feature_secondary_index %} -{% if feature_olap_tables %}#{%endif%}## Вторичные индексы {#secondary_index} +## Вторичные индексы {#secondary_index} Конструкция INDEX используется для определения {% if concept_secondary_index %}[вторичного индекса]({{ concept_secondary_index }}){% else %}вторичного индекса{% endif %} на таблице: @@ -105,7 +98,7 @@ CREATE TABLE my_table ( {% endif %} {% if feature_map_tables and concept_table %} -{% if feature_olap_tables %}#{%endif%}## Дополнительные параметры {#additional} +## Дополнительные параметры {#additional} Для таблицы может быть указан ряд специфичных для {{ backend_name }} параметров. При создании таблицы, используя YQL, такие параметры перечисляются в блоке ```WITH```: @@ -138,7 +131,7 @@ WITH ( ); ``` -{% if feature_olap_tables %}#{%endif%}## Группы колонок {#column-family} +## Группы колонок {#column-family} Колонки одной таблицы можно объединять в группы, для того чтобы задать следующие параметры: @@ -176,91 +169,3 @@ CREATE TABLE series_with_families ( {% endif %} {% endif %} - -{% if feature_olap_tables %} -## Колоночные таблицы {#olap-tables} - -{% note warning %} - -Колоночные таблицы {{ ydb-short-name }} доступны в режиме Preview. - -{% endnote %} - -Вызов `CREATE TABLE` создает [колоночную таблицу](../../../../concepts/datamodel/column_table.md) с указанной схемой данных и ключевыми колонками (`PRIMARY KEY`). - -```sql -CREATE TABLE table_name ( - column1 type1, - column2 type2 NOT NULL, - column2 type2, - ... - columnN typeN, - PRIMARY KEY ( column, ... ), - ... -) -PARTITION BY HASH(column1, column2, ...) -WITH ( - STORE = COLUMN, - key = value, - ... -) -``` - -### Колонки {#columns} - -Поддерживаемые типы данных в колоночных таблицах и ограничение на использование типов в первичных ключах или колонках данных описаны в разделе [поддерживаемые типы данных](../../../../concepts/datamodel/column_table.md#olap-data-types) колоночных таблиц. - -Обязательно указание `PRIMARY KEY` и `PARTITION BY` с непустым списком колонок. - -Без дополнительных модификаторов колонка приобретает [опциональный тип](../../types/optional.md) тип, и допускает запись `NULL` в качестве значений. Для получения неопционального типа необходимо использовать `NOT NULL`. - - -**Пример** - -```sql -CREATE TABLE my_table ( - a Uint64 NOT NULL, - b String, - c Float, - PRIMARY KEY (b, a) -) -PARTITION BY HASH(b) -WITH ( -STORE = COLUMN -) -``` - - -### Дополнительные параметры {#additional} - -Для таблицы может быть указан ряд специфичных для {{ backend_name }} параметров. При создании таблицы, используя YQL, такие параметры перечисляются в блоке ```WITH```: - -```sql -CREATE TABLE table_name (...) -WITH ( - key1 = value1, - key2 = value2, - ... -) -``` - -Здесь key — это название параметра, а value — его значение. - -Поддерживаемые параметры колоночных таблиц: -- [AUTO_PARTITIONING_MIN_PARTITIONS_COUNT](../../../../concepts/datamodel/column_table.md#auto_partitioning_min_partitions_count) - -Например, следующий код создает колоночную таблицу с 10-ю партициями: - -<small>Листинг 5</small> -```sql -CREATE TABLE my_table ( - id Uint64, - title Utf8, - PRIMARY KEY (id) -) -PARTITION BY HASH(id) -WITH ( - AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10 -); -``` -{%endif%}
\ No newline at end of file |