Типы таблиц
Обзор
ADB, как и Greenplum, поддерживает несколько типов таблиц, отличающихся способом хранения данных:
-
Heap. Этот тип таблиц используется по умолчанию и рекомендуется для OLTP-нагрузок. Heap-таблицы являются оптимальным выбором в случае частого обновления данных после первоначальной загрузки, а также подходят для однострочных операций
INSERT
,UPDATE
иDELETE
. -
Append-optimized. Эти таблицы предпочтительны для OLAP-нагрузок. Они также отлично подходят для пакетной загрузки данных (bulk data loading). Их рекомендуется использовать при редких обновлениях данных, то есть когда в системе преобладают read-only запросы. В отличие от Heap-таблиц (в которых возможна только строковая ориентация данных — row-oriented), таблицы append-optimized поддерживают две формы ориентации данных:
-
Строковая (row-oriented). Эта модель хранения данных рекомендуется для запросов, в которых одновременно извлекаются все либо большая часть столбцов таблицы.
-
Колоночная (column-oriented). Эта модель подходит для вычислений на базе небольшого набора столбцов таблицы. Ее также рекомендуется использовать при регулярных обновлениях незначительной части столбцов.
-
Тип хранения данных необходимо явно указывать на этапе создания таблицы. В последующих подразделах описаны основные отличия существующих типов таблиц. Эта информация может быть полезной для выбора модели хранения данных, наиболее подходящей для нужд проекта и используемых в нем нагрузок.
Сравнение таблиц Heap и Append-optimized
Критерий | Heap | Append-optimized |
---|---|---|
Профиль нагрузки |
OLTP |
OLAP |
Размер таблиц |
Небольшие таблицы. Например, таблицы измерений (dimension tables) |
Денормализованные таблицы фактов (fact tables), которые, как правило, являются самыми объемными в системе |
Частота обновлений данных после изначальной загрузки |
Часто |
Редко |
Преобладающий тип запросов |
Множество итеративных транзакций, включая однострочные, а также параллельные пакетные обновления данных |
|
Возможность настройки уникальных значений |
Поддерживается — за счет использования модификаторов |
— |
Сжатие данных |
— |
|
Синтаксис |
Heap-таблицы создаются по умолчанию:
|
Для создания таблицы append-optimized необходимо использовать опцию
|
Рекомендации по использованию |
OLTP-нагрузки — с множеством итеративных транзакций на базе небольших таблиц |
Хранилища Data Warehouse (OLAP) — с пакетной загрузкой данных и последующими запросами на чтение (read-only) на базе больших денормализованных таблиц |
ВНИМАНИЕ
Не рекомендуется применять следующие типы операций к таблицам append-optimized в силу их неэффективности:
|
Сравнение таблиц Row-oriented и Column-oriented
Критерий | Row-oriented | Column-oriented |
---|---|---|
Тип таблиц |
Heap и Append-optimized |
Append-optimized |
Частота обновлений данных после изначальной загрузки |
Часто |
Редко |
Частота добавления новых данных |
Часто |
Редко
|
Количество столбцов в таблицах |
Относительно небольшое |
Множество столбцов (десятки и более) |
Количество запрашиваемых столбцов |
Все или большая часть |
Небольшое подмножество столбцов |
Преобладающий тип запросов |
Любые |
|
Сжатие данных |
Возможно на уровне таблицы — в таблицах append-optimized.
|
Возможно на уровне таблицы и столбца — в таблицах append-optimized.
|
Синтаксис |
|
Только append-optimized:
|
Рекомендации по использованию |
|
Хранилища Data Warehouse (OLAP) — с агрегацией на основе одного столбца или регулярными выборками/обновлениями небольшого набора столбцов |