Базы данных: NoSQL

9 вопросов

1 Что такое Redis? Когда использовать?

Redis - хранилище ключ-значение в памяти с персистентностью (опционально). Поддерживает строки, списки, множества, хеши, sorted sets, потоки. Используют для кеша, сессий, очередей, rate limiting, pub/sub, реального времени. Очень быстрый (операции в памяти). Ограничение: данные должны помещаться в RAM (или используются как кеш с eviction).

$redis->set('user:1', json_encode($user), 'EX', 3600);
$redis->lPush('queue:emails', $payload);
$redis->zAdd('leaderboard', $score, $userId);
Открыть отдельно →
2 Какие структуры данных есть в Redis?

String - строка, целое, float. List - список строк (lPush, rPop, lRange). Set - неупорядоченное множество уникальных строк. Hash - поле-значение (hSet, hGetAll). Sorted Set - множество с весом (score), сортировка по весу (zAdd, zRangeByScore). Stream - лог сообщений (consumer groups). Bitmap, HyperLogLog - для подсчетов и статистики. Каждая структура имеет свой набор команд.

Открыть отдельно →
3 Как Redis обеспечивает персистентность?

RDB (snapshot) - периодический снимок данных на диск. Быстрое восстановление, но возможна потеря данных между снапшотами. AOF (Append Only File) - лог каждой операции записи. При перезапуске воспроизведение лога. Можно настроить fsync (everysec, always). Комбинация RDB + AOF: снапшот плюс инкрементальные записи в AOF. В режиме кеша персистентность часто отключают.

Открыть отдельно →
4 Что такое Redis Cluster?

Распределенный Redis: данные автоматически шардируются по слотам (16384 слота), каждый узел обслуживает подмножество слотов. Поддерживается репликация (master + replicas). Клиент направляет команды на нужный узел по ключу (hash slot). Транзакции и multi-key операции ограничены ключами в одном слоте (hash tags). Используется для масштабирования за пределы одной машины и отказоустойчивости.

Открыть отдельно →
5 Что такое MongoDB? Когда применять?

Документная NoSQL БД: данные в виде JSON-подобных документов (BSON), коллекции вместо таблиц. Гибкая схема, горизонтальное масштабирование (sharding), индексы, агрегации. Применяют для каталогов, контента, логов, когда схема часто меняется или данные иерархические. Не заменяет реляционную БД там, где нужны сложные JOIN, строгая целостность и транзакции на многих документах (хотя транзакции в MongoDB есть с 4.0).

Открыть отдельно →
6 Что такое Elasticsearch? Зачем нужен?

Поисковая и аналитическая движок на базе Lucene. Хранит документы в индексированном виде; полнотекстовый поиск, фасеты, агрегации, геопоиск. Используют для поиска по сайту/приложению, логов (ELK), метрик, рекомендаций. Данные распределены по шардам и репликам. Запросы через REST API (JSON). Не заменяет основную БД - обычно данные синхронизируются из БД в Elasticsearch для поиска.

Открыть отдельно →
7 Что такое ClickHouse?

Колоночная OLAP-СУБД для аналитики. Оптимизирована под агрегации и большие объемы данных (миллиарды строк). Данные хранятся по столбцам, сжатие эффективно. Запросы на выборку и группировку выполняются очень быстро. Подходит для логов, метрик, аналитических отчетов. Не для OLTP: нет UPDATE/DELETE в классическом виде (или редко), вставки батчами. Движки таблиц: MergeTree и варианты.

Открыть отдельно →
8 Materialized Views в ClickHouse?

В ClickHouse материализованное представление - это триггер на вставку: при INSERT в исходную таблицу данные автоматически преобразуются и записываются в целевую таблицу (движок MaterializedView). Используют для предварительной агрегации (например, по минутам/часам), денормализации, копирования в другой формат. Не "классический" REFRESH - данные подтягиваются потоково при каждой вставке.

Открыть отдельно →
9 Движки MergeTree в ClickHouse?

MergeTree - семейство движков хранения. MergeTree - базовый: данные сортируются по ключу сортировки, фоновые слияния. ReplacingMergeTree - дедупликация по ключу при слиянии. SummingMergeTree - суммирование числовых столбцов при слиянии. AggregatingMergeTree - хранение состояний агрегатных функций. CollapsingMergeTree - для обновлений через знак +1/-1. Выбор зависит от сценария: вставка логов, обновления, агрегаты.

Открыть отдельно →
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.