Telegram Group & Telegram Channel
DB Index и партиционирование

Некоторое время работаю с датамартами на Postgres. В этой связи, решил собрать в кучу мысли по партиционированию данных в DB. Сошлюсь на тред в stackoverflow и постгресовскую документацию

Организация индексов
- Один многоколоночный индекс лучше, чем несколько одноколоночных, если фильтруем по нескольким колонкам
- Несколько одноколоночных индексов эффективнее, если часто фильтруем только по одной колонке
- Если данные временные, то партиционируем. Ставим фильтр по временной колонке + добавляем в индекс те, по которым чаще всего фильтруем. В итоге получаем многоколоночный индекс вида (date, publisher, country, ...).

Что по датамартам?
- Для датамартов делаем партиции по колонкам, по которым чаще всего фильтруем
- Таблицы с разной степенью агрегации: raw час, hourly день, daily месяц
- materialized view поверх них
- Redash или Superset делает запрос уже к materialized view

Какие альтернативы Постгресу?

TimescaleDB
Это расширение под постгрес для временных данных. Разбиваем данные на гипертаблицы, которые автоматически партиционируются по времени + можно выбрать опционально партиционирование по ключу. При этом так же Постгрес не скейлится горизонтально

Apache Druid
Колоночная OLAP DB. Ее уже можно скейлить горизонтально. Но не поддерживает join'ы. SQL синтаксис доступен через Druid SQL



group-telegram.com/dsinsights/352
Create:
Last Update:

DB Index и партиционирование

Некоторое время работаю с датамартами на Postgres. В этой связи, решил собрать в кучу мысли по партиционированию данных в DB. Сошлюсь на тред в stackoverflow и постгресовскую документацию

Организация индексов
- Один многоколоночный индекс лучше, чем несколько одноколоночных, если фильтруем по нескольким колонкам
- Несколько одноколоночных индексов эффективнее, если часто фильтруем только по одной колонке
- Если данные временные, то партиционируем. Ставим фильтр по временной колонке + добавляем в индекс те, по которым чаще всего фильтруем. В итоге получаем многоколоночный индекс вида (date, publisher, country, ...).

Что по датамартам?
- Для датамартов делаем партиции по колонкам, по которым чаще всего фильтруем
- Таблицы с разной степенью агрегации: raw час, hourly день, daily месяц
- materialized view поверх них
- Redash или Superset делает запрос уже к materialized view

Какие альтернативы Постгресу?

TimescaleDB
Это расширение под постгрес для временных данных. Разбиваем данные на гипертаблицы, которые автоматически партиционируются по времени + можно выбрать опционально партиционирование по ключу. При этом так же Постгрес не скейлится горизонтально

Apache Druid
Колоночная OLAP DB. Ее уже можно скейлить горизонтально. Но не поддерживает join'ы. SQL синтаксис доступен через Druid SQL

BY ML Advertising




Share with your friend now:
group-telegram.com/dsinsights/352

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

So, uh, whenever I hear about Telegram, it’s always in relation to something bad. What gives? Investors took profits on Friday while they could ahead of the weekend, explained Tom Essaye, founder of Sevens Report Research. Saturday and Sunday could easily bring unfortunate news on the war front—and traders would rather be able to sell any recent winnings at Friday’s earlier prices than wait for a potentially lower price at Monday’s open. Again, in contrast to Facebook, Google and Twitter, Telegram's founder Pavel Durov runs his company in relative secrecy from Dubai. Despite Telegram's origins, its approach to users' security has privacy advocates worried.
from us


Telegram ML Advertising
FROM American