База данных в памяти — это специализированная база данных, которая использует для хранения данных в основном внутреннюю память . Она обеспечивает минимальное время отклика, устраняя необходимость в доступе к стандартным дискам (SSD). Базы данных в памяти идеальны для приложений, которые требуют отклика в пределах нескольких микросекунд, при этом резкое возрастание трафика возможно в любой момент. К таким приложениям относятся таблицы лидеров в играх, хранение сеансов и аналитические данные в режиме реального времени. Термины «база данных в основной памяти» (MMDB), «система баз данных в памяти» (IMDS) и «система баз данных в режиме реального времени» (RTDB) также относятся к базам данных в памяти.

Преимущества баз данных в памяти

База данных в памяти имеет ряд преимуществ, которые мы подробно рассмотрим ниже.

Низкая задержка, что позволяет предоставлять ответ в режиме реального времени

Задержка — это временной промежуток между запросом на доступ к данным и ответом приложения. Базы данных в памяти обеспечивают предсказуемые низкие задержки независимо от масштаба. Они обеспечивают задержку чтения в микросекундах, задержку записи в несколько миллисекунд и высокую пропускную способность.

В результате система хранения данных в памяти позволяет предприятиям принимать решения на основе данных в режиме реального времени. Можно разрабатывать приложения, обрабатывающие данные и своевременно реагирующие на изменения. Например, вычислительная обработка данных с датчиков беспилотных транспортных средств в оперативной памяти может дать желаемое время отклика для экстренного торможения — доли секунды.

Высокая пропускная способность

Базы данных в памяти известны своей высокой пропускной способностью. Пропускная способность — это количество операций чтения (пропускная способность чтения) или записи (пропускная способность записи) за определенный период времени. Она может измеряться, например, в байтах в минуту или в транзакциях в секунду.

Высокая масштабируемость

Можно масштабировать базы данных в памяти, чтобы удовлетворять меняющемуся спросу приложений. Масштабирование как при записи, так и при чтении возможно без ущерба для производительности. База данных остается в сети и поддерживает операции чтения и записи во время изменения размера.

Примеры использования баз данных в памяти

Базы данных в памяти — хороший вариант для банков, телекоммуникационной отрасли, игр и мобильной рекламы. Ниже мы приводим несколько примеров использования базы данных в памяти.

Кэширование

Кэш — это высокоскоростной слой хранения данных, в котором хранится подмножество обычно временных данных. Основная функция кэша – ускорение процесса извлечения данных. Он избавляет от необходимости обращаться к менее скоростному базовому уровню хранения. Это означает, что будущие запросы на эти данные обрабатываются быстрее, чем это возможно при доступе к основному хранилищу данных.

Кэширование обеспечивает эффективное повторное использование ранее полученных или вычисленных данных. Носители данных в памяти хорошо подходят для более быстрого доступа к кэшированным данным. Кэширование снижает надежность по времени отклика. Время отклика увеличивается, поскольку данные извлекаются из памяти, но кэширование не защищает от потери данных в памяти. Вот почему кэширование часто используется в сочетании с надежной базой данных на диске.

Торги в режиме реального времени

Торги в режиме реального времени — покупка и продажа показов онлайн-рекламы. Обычно предложение делается, когда пользователь загружает веб-страницу за 100-120 миллисекунд, а иногда и всего за 50 миллисекунд. В течение этого периода приложения для участия в торгах в режиме реального времени запрашивают предложения от всех покупателей на рекламное место, выбирают выигрышную ставку на основе нескольких критериев, отображают предложение и собирают информацию после показа рекламы. Базы данных в памяти идеально подходят для приема, обработки и анализа данных в режиме реального времени с задержкой менее миллисекунды.

Таблицы лидеров в играх

Относительная таблица лидеров в игре показывает позицию игрока по сравнению с другими игроками аналогичного ранга. Эти таблицы лидеров помогают повысить вовлеченность игроков и уберечь их от демотивации в результате сравнения с лучшими игроками. Базы данных в памяти позволяют быстро получать результаты сортировки и обновлять таблицу лидеров в режиме реального времени для игры с миллионами игроков.

Как работает кэш в памяти

Кэш в памяти использует оперативную память (RAM) для хранения данных. Технология хранит таблицы данных непосредственно в оперативной памяти, а не на внешних дисках. Специализированные структуры данных позволяют индексировать ваши записи данных. Индексы служат прямыми указателями на определенные строки и столбцы. Однако фактические физические данные сжаты и не имеют реляционного формата. Когда вы делаете запрос на доступ, база данных переходит к точному значению данных с помощью индекса. Сохраненные данные всегда доступны в формате, пригодном для непосредственного использования.

Такие факторы, как 64-разрядные вычисления, снижение цен на оперативную память и многоядерные серверы, сделали системы хранения в памяти более распространенными. Кроме того, облачные хранилища данных позволяют масштабировать ресурсы оперативной памяти по мере необходимости, делая технологию хранения в памяти более универсальной и доступной.

Разница между кэшем в памяти и традиционными дисковыми базами данных

Традиционная база данных сохраняет все данные на внешних дисках или твердых накопителях. Для каждой операции чтения и записи требуется доступ к диску. Кэш в памяти, наоборот, не уделяет приоритетного внимания сохранению данных. Например, кэши могут лишь периодически сохранять данные на внешних носителях. Ниже мы обобщили различия между кэшами в памяти и традиционными базами данных.

В чем разница между кэшем в памяти и базой данных в памяти

Кэши в памяти обеспечивают более высокую производительность, поскольку записи не сохраняются, что устраняет дополнительное время, необходимое для сохранения данных. База данных в памяти сохраняет записи, что делает изменения данных устойчивыми. Такая надежность достигается за счет снижения производительности записи. Однако базы данных в памяти по-прежнему обеспечивают более высокую производительность, чем дисковые базы данных. С точки зрения производительности они занимают промежуточное положение между кэшем в памяти и дисковой базой данных.

Каковы ограничения кэшей в памяти

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

Файлы снимков состояния

Файлы снимков состояния записывают состояние базы данных в определенный момент времени. Кэш в памяти периодически или во время контролируемого отключения генерирует снимки состояния. Хотя создание снимков состояния в некоторой степени повышает надежность, между периодами снимков состояния все же может произойти потеря данных.

Ведение журналов транзакций

Изменения базы данных записываются во внешний файл журнала транзакций. Ведение журнала не зависит от чтения/записи данных и не влияет на производительность. Файл журнала облегчает автоматическое восстановление кэша в памяти.

Репликация

Некоторые кэши в памяти используют резервируемость для обеспечения высокой доступности. Они хранят несколько копий одних и тех же данных в разных модулях памяти. Сбой модуля приводит к автоматическому переключению на дублирующую резервную копию. Это снижает риск потери данных при использовании кэша.

Как поддержка AWS может удовлетворить ваши требования к кэшу в памяти и базе данных

AWS предоставляет несколько различных полностью управляемых сервисов кэша и баз данных в памяти, которые могут подойти именно вам.

База данных в памяти

Amazon MemoryDB для Redis

Amazon MemoryDB для Redis — это совместимый с Redis надежный сервис базы данных в памяти, который обеспечивает сверхбыструю производительность. Он совместим с Redis — популярным хранилищем данных с открытым исходным кодом. Это позволяет клиентам быстро создавать приложения, используя те же гибкие и удобные структуры данных, API и команды Redis, которые они уже используют. MemoryDB также надежно хранит данные в нескольких зонах доступности (AZ), используя журнал транзакций Multi-AZ, чтобы обеспечить быстрое восстановление после отказов, восстановление базы данных и перезапуск узла.

Кэши в памяти

Amazon ElastiCache для Redis

Amazon ElastiCache для Redis — это очень быстрый сервис кэша в памяти, который обеспечивает задержки в доли миллисекунды приложениям, работающим в режиме реального времени в масштабе глобальной сети. Разработчики могут использовать ElastiCache для Redis в качестве кэша в памяти или в случаях, не требующих высокой надежности данных. Конфигурация кластера ElastiCache для Redis позволяет клиентам запускать рабочие нагрузки Redis с объемом оперативной памяти до 6,1 ТБ в одном кластере. ElastiCache для Redis предоставляет возможность добавлять и удалять сегменты из работающего кластера. Это позволяет динамически масштабировать рабочие нагрузки кластера Redis, чтобы адаптироваться к изменениям спроса.

Amazon ElastiCache для Memcached

Amazon ElastiCache для Memcached — это совместимый с Memcached сервис кэша в памяти для данных типа «ключ‑значение». Он обеспечивает те же простоту использования, удобство и высокую производительность, что и Memcached. ElastiCache для Memcached является полностью управляемым, масштабируемым и безопасным сервисом, что делает его идеальным вариантом для использования в случаях, когда часто запрашиваемые данные должны храниться в памяти.

Начните работу с кэшем или базами данных в памяти на AWS, создав бесплатный аккаунт уже сегодня.

Знакомство с Amazon MemoryDB для Redis
Знакомство с Amazon ElastiCache для Redis