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

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

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

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

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

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
Внешние данные
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.