Перейти к основному содержимому
Перейти к основному содержимому

Движки таблиц

Движок таблицы (тип таблицы) определяет:

  • Как и где хранятся данные, куда их записывать и откуда их читать.
  • Какие запросы поддерживаются и как.
  • Параллельный доступ к данным.
  • Использование индексов, если они имеются.
  • Возможно ли многопоточное выполнение запросов.
  • Параметры репликации данных.

Семейства движков

MergeTree

Наиболее универсальные и функциональные движки таблиц для высоконагруженных задач. Общим свойством этих движков является быстрая вставка данных с последующей обработкой данных в фоновом режиме. Движки семейства MergeTree поддерживают репликацию данных (в версиях с Replicated*), партиционирование, вторичные индексы пропуска данных и другие функции, которые не поддерживаются в других движках.

Движки в семействе:

Движки MergeTree
MergeTree
ReplacingMergeTree
SummingMergeTree
AggregatingMergeTree
CollapsingMergeTree
VersionedCollapsingMergeTree
GraphiteMergeTree
CoalescingMergeTree

Log

Легковесные движки с минимальной функциональностью. Они наиболее эффективны, когда нужно быстро записывать много мелких таблиц (до примерно 1 миллиона строк) и читать их позже целиком.

Движки в семействе:

Движки Log
TinyLog
StripeLog
Log

Интеграционные движки

Движки для взаимодействия с другими системами хранения и обработки данных.

Движки в семействе:

Интеграционные движки
ODBC
JDBC
MySQL
MongoDB
Redis
HDFS
S3
Kafka
EmbeddedRocksDB
RabbitMQ
PostgreSQL
S3Queue
TimeSeries

Специальные движки

Движки в семействе:

Специальные движки
Distributed
Dictionary
Merge
Executable
File
Null
Set
Join
URL
View
Memory
Buffer
External Data
GenerateRandom
KeeperMap
FileLog

Виртуальные колонки

Виртуальная колонка — это неотъемлемый атрибут движка таблицы, который определяется в исходном коде движка.

Вы не должны указывать виртуальные колонки в запросе CREATE TABLE, и вы не можете их увидеть в результатах запросов SHOW CREATE TABLE и DESCRIBE TABLE. Виртуальные колонки также являются только для чтения, поэтому вы не можете вставить данные в виртуальные колонки.

Чтобы выбрать данные из виртуальной колонки, вы должны указать ее имя в запросе SELECT. SELECT * не возвращает значения из виртуальных колонок.

Если вы создаете таблицу с колонкой, имеющей то же имя, что и одна из виртуальных колонок таблицы, виртуальная колонка становится недоступной. Мы не рекомендуем делать это. Чтобы помочь избежать конфликтов, имена виртуальных колонок обычно начинаются с символа подчеркивания.

  • _table — Содержит имя таблицы, из которой были прочитаны данные. Тип: String.

    Независимо от используемого движка таблицы, каждая таблица включает универсальную виртуальную колонку с именем _table.

    При запросе таблицы с движком merge таблицы вы можете установить постоянные условия на _table в предложении WHERE/PREWHERE (например, WHERE _table='xyz'). В этом случае операция чтения выполняется только для тех таблиц, где условие на _table удовлетворено, так что колонка _table действует как индекс.

    При использовании запросов, отформатированных как SELECT ... FROM (... UNION ALL ...), мы можем определить, из какой фактической таблицы происходят возвращаемые строки, указав колонку _table.