NoSQL

NoSQL #

1. NoSQL типы БД #

ТипПримерОсобенностиКогда использовать
ДокументныеMongoDBJSON-документы, гибкая структураДинамические, неструктурированные данные
Ключ-значениеRedis, DynamoDBМаксимально быстрый доступКэш, данные с уникальными ключами
Колоночные (wide-column)CassandraХранение колонок внутри других колонок, объединение в групппыАналитика, обработка больших данных
ПоисковыеElasticsearchОбратный индекс, по факту документная бдПолнотекстовый поиск, поиск по логам
ГрафовыеNeo4jУзлы и связиМоделирование сложных связей между данными


2. Для чего используется Redis? #

Redis - это высокопроизводительная NoSQL база данных, которая работает в оперативной памяти (in-memory), обеспечивая минимальные задержки. Основное назначение Redis - хранение данных в виде ключ-значение


3. Что такое Кэш? #

Статья про кэш на Хабре

Кэш - это временное хранилище данных, созданное для ускорения повторного доступа к ним

Преимущества

  • Ускорение - данные быстрее извлекаются из кэша, чем из основного хранилища
  • Экономия ресурсов - уменьшение нагрузки на сервер базы данных
  • Снижение задержек - быстрый доступ к часто используемым данным

Пример Кэширование результата SQL-запроса:

  1. пользователь делает запрос к базе данных
  2. результат сохраняется в Redis
  3. повторный запрос возвращает данные из кэша Redis

Подходы к настройке инвалидации кэша Инвалидация кэша необходима для обеспечения актуальности данных в кэше. Существует несколько основных подходов:

1. Time-to-Live (TTL) Устанавливается время жизни данных в кэше. После истечения этого времени данные удаляются автоматически

Преимущества:

  • Простота настройки, минимальная нагрузка на систему Недостатки:
  • Возможна работа с устаревшими данными до истечения TTL

Установка времени жизни 60 секунд:

redis.set(key, value, 60);

2. Manual Invalidation Инвалидация данных выполняется вручную, например, при обновлении данных в основной базе данных

Преимущества

  • Полный контроль над процессом Недостатки
  • Возможен человеческий фактор - забыть удалить данные из кэша

Удаление ключа после изменения записи в базе:

redis.del("user:123");

3. Инвалидация по событию Данные инвалидируют при наступлении некоего события - обычно это обновление данных в источнике (write through и write aside стратегии кэширования). Также в качестве события для инвалидации данных может выступать время последней модификации данных