🖥 Оптимизация хранения данных в СУБД Greenplum
Greenplum — это open source MPP СУБД, основанная на PostgreSQL.
Архитектура СУБД укрупненно представляет собой систему, состоящую из n-го количества Segment Host — процессов/серверов, на которых производится хранение и обработка данных, и одного Master Host – процесса/сервера, являющегося точкой входа клиента, который также хранит внутри себя метаданные таблиц и распределяет обработку данных между сегментами.
Вопрос выбора способа хранения данных для меня встал достаточно остро из-за относительно большого объема анализируемых данных. Кратко опишу набор таблиц витрины и примерное количество строк в них на данный момент:
1. Таблица с пользователями маркетплейса (более 4 млн.);
2. Корзина товаров (более 150 млн.);
3. Покупки пользователей в маркетплейсе (более 40 млн.);
4. Таблица с начислениями бонусов за покупки (более 20 млн.)
5. И т.д. (суммарно еще около 5-10 млн. строк уходят на перечень продаваемых товаров, различные справочники и другую сопутствующую информацию)
Аналитические запросы, в особенности с объединением этих таблиц, занимают достаточно большое количество времени и ресурсов, что негативно складывается на работе СУБД, коллег и меня в частности.
В связи с этим, оптимизация хранения таблиц является одним из основных вариантов оптимизации запросов (вкупе с объяснением того, как эти оптимальные запросы строить, но это уже совсем другая история).
Рассмотрим задачу выбора оптимального способа хранения данных подробнее. 👇
Читать
@sqlhub
Post #736
4.7K

- ❤ 9
- 👍 6
- 🔥 3