Короткий ответ: для аналитических данных хранилище столбцов будет быстрее, с меньшими затратами на настройку.
Хранилище строк, традиционная архитектура базы данных, хорошо вставляет небольшое количество строк, обновляет строки на месте и запрашивает небольшое количество строк. В хранилище строк эти операции можно выполнить с помощью одного или двух дисковых блоков ввода-вывода.
Аналитические базы данных обычно загружают тысячи записей одновременно; иногда, как в вашем случае, они перезагружают все. Они имеют тенденцию быть денормализованными, поэтому имеют много столбцов. И во время запроса они часто читают большую часть строк в таблице, но только некоторые из этих столбцов. Поэтому с точки зрения ввода / вывода имеет смысл хранить значения одного столбца вместе.
Оказывается, это дает базе данных огромную возможность для сжатия значений. Например, если строковый столбец имеет среднюю длину 20 байтов, но имеет только 25 различных значений, база данных может сжаться примерно до 5 битов на значение. Базы данных хранилища столбцов часто могут работать без распаковки данных.
Часто в информатике существует компромисс между вводом-выводом и временем ЦП, но в хранилищах столбцов усовершенствования ввода-вывода часто улучшают местность ссылок, уменьшают активность подкачки в кэш-памяти и допускают более высокие коэффициенты сжатия, так что ЦП также выигрывает.
Базы данных хранилища столбцов, как правило, имеют и другие аналитические функции, такие как растровые индексы (еще один случай, когда лучшая организация обеспечивает лучшее сжатие, уменьшает количество операций ввода-вывода и алгоритмы, которые более эффективны с точки зрения использования процессора), разделы и материализованные представления .
Другим фактором является использование массивно-параллельной (MMP) базы данных. Существуют базы данных MMP-хранилища строк и столбцов. Базы данных MMP могут масштабироваться до сотен или тысяч узлов и позволяют хранить огромные объемы данных, но иногда имеют компромиссы, такие как более слабое представление о транзакциях или не совсем SQL-язык запросов.
Я бы порекомендовал вам попробовать LucidDB. (Отказ от ответственности: я приверженец LucidDB.) Это база данных хранилища столбцов с открытым исходным кодом, оптимизированная для аналитических приложений, а также имеет другие функции, такие как растровые индексы. В настоящее время он работает только на одном узле, но эффективно использует несколько ядер и может обрабатывать разумные объемы данных без особых усилий.