Вопрос

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

Это было полезно?

Решение

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

Другое использование баз данных в памяти уже включено в другие ответы, но позвольте мне перечислить использование:

  1. Кэш памяти. Обычно будет использоваться система базы данных, специализирующаяся на этом использовании (и, вероятно, известная как «кэш памяти», а не «база данных»).
  2. Тестирование кода, связанного с базой данных. В этом случае будет использоваться режим «в памяти» некоторой общей системы баз данных, но также можно использовать выделенную базу данных «в памяти» для замены другой базы данных «диск» для более быстрого тестирования.
  3. Сложные манипуляции с данными. Таким образом часто используются базы данных SQL в памяти. SQL является отличным инструментом для манипулирования данными, и иногда нет необходимости писать данные на диске при вычислении конечного результата.
  4. Хранение временного состояния выполнения. Существует приложение, которое необходимо хранить свое состояние в какой -то базе данных, но не нужно сохранять это перезапуск приложения. Подумайте о каком-то диспетчете процессов-он должен отслеживать выполнение подпроцессов, но эти данные действительны только до тех пор, пока приложение и подпроцессы выполняются.

Другие советы

Общий вариант использования - запуск тестов на единицу/интеграции.

Вы действительно не заботитесь о постоянных данных между каждым тестовым прогоном, и вы хотите, чтобы тесты работали как можно быстрее (чтобы побудить людей делать их часто). Разделение базы данных в процессе дает вам очень быстрый доступ к данным.

У вашего кэша памяти есть поддержка SQL?

Как насчет того, чтобы считать базу данных в памяти действительно умным кешем?

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

Поиск чего -либо среди 100000 элементов медленно, если вы не используете такие трюки, как индексы. Эти трюки уже реализованы в двигателе базы данных (будь то постоянный или в памяти).

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

Базы данных в памяти примерно на порядок быстрее, чем традиционные СУБД для запросов общего назначения (чтение).Большинство из них поддерживаются дисками, обеспечивая ту же согласованность, что и обычная СУБД - только весь набор данных должен помещаться в ОЗУ.

Основная идея заключается в том, что дисковое хранилище имеет огромные штрафы за произвольный доступ, которые не применяются к DRAM.Данные могут быть индексированы/организованы оптимизированным для произвольного доступа способом, что невозможно с использованием традиционных схем кэширования данных РСУБД.

Приложения, которые требуют ответов в реальном времени

База данных в памяти также полезна при программировании игры. Вы можете сохранить данные в базе данных в памяти, которая намного быстрее, чем постоянные базы данных.

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

Вам может понадобиться база данных, если несколько разных приложений будут обращаться к набору данных. База данных имеет согласованный интерфейс для доступа / изменения данных, которые ваша таблица хеш -таблицы (или что -то еще, что вы используете).

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

База данных в памяти лучше, чем выполнение кэширования базы данных. Кэширование базы данных работает аналогично базам данных в памяти, когда дело доходит до операций чтения.

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

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

Учитывая их скорость и снижение цены RAM, вполне вероятно, что базы данных в памяти станут доминирующей технологией в будущем. Уже есть некоторые, которые разработали сложные функции, такие как запросы SQL, вторичные индексы и двигатели для обработки наборов данных, превышающих ОЗУ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top