Решения для использования хранилища столбцов со сжатием, но с возможностью обновления последних строк — Greenplum

Я ищу конкретные примеры того, как кто-то решил следующую проблему в Greenplum (или в другой базе данных MPP):

У меня есть большие таблицы фактов, которые я хотел бы хранить в столбцовой ориентации и сжимать (в Greenplum это будет, в частности, сжатие zlib уровня 5).

Однако каждая новая строка имеет короткий период времени, в течение которого ее можно обновить, прежде чем она станет «статической» — например, значение может изменяться до тех пор, пока не будет поднят какой-либо флаг. В Greenplum для использования сжатия мне нужно использовать типы таблиц «только добавление», что означает, что строка не может быть безопасно обновлена ​​напрямую.

Итак, в моей неопытной голове я полагаю, что подход к этому может заключаться в том, чтобы иметь две таблицы: одна содержит строки, пока им разрешено обновляться, которая может использовать стандартное хранилище HEAP и не имеет сжатия, а другая содержит только те, которые стали «статические» (подавляющее большинство), которые имеют столбчатую ориентацию и сжаты.

Ясно, что задействована механика, которая усложняет жизнь (объединение двух, если я хочу просмотреть все, запуск удаления из одной таблицы и вставка в другую, когда строка становится статической, и т. д. и т. д.), поэтому Я был бы очень признателен, если бы услышал о реальном решении этой проблемы.

Спасибо

Энди.


person Andy Crellin    schedule 17.09.2014    source источник


Ответы (1)


Greenplum 4.3.x позволяет обновлять таблицы, ориентированные на столбцы, вам следует использовать эту версию

В общем можно иметь партиционированную таблицу, партицию по флагу "обновляемая" (одна партиция должна быть АО СО, одна куча). Таким образом, ваши выборочные запросы не будут затронуты, но перемещение данных из одного раздела в другой потребует удаления данных из раздела кучи и вставки их в раздел, ориентированный на столбцы (хотя это не так сложно реализовать)

person 0x0FFF    schedule 01.11.2014