# Базы данных

**Реляционные базы**\
\- PostgreSQL - предпочтительна к использованию\
\- MySQL (MariaDb) - для распределения нагрузки поддерживает кластеризацию

**NoSQL базы данных**\
\- MongoDb (replica sets для шардирования)\
\
**Колоночные базы данных**\
\- Vertica - Быстро строятся агрегаты, но очень дорого\
\- TimescaleDB - модуль для PostgreSQL. Отлично себя показал для time series данных\
\- ClickHouse - очень быстрая вставка (нет удаления и редактирования записей)\
\
**Полнотекстовый индекс**\
\- ElasticSearch (NoSQL)\
\- Apache SOLR (NoSQL) - быстрое индексирование и поиск на движке Apache Lucene\
\
**Способы масштабирования баз данных**\
\- Multi-table - Разделение одной таблицы на подтаблицы (у каждой компании своя таблица Empolyee, например employee\_123, где 127 это id компании)\
\- Шардирование — разнесение баз данных по ключу (данные конкретных доменов на отдельный сервер или четные и нечетные пользователи по разным базам)\
\- Master - Detail репликация (пишем в Master читаем из реплик Slave)\
\
**Изоляция данных**\
\- Multi-tenant database\


