Зачем кому-то нужна база данных в памяти? - PullRequest
23 голосов
/ 02 июня 2010

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

Ответы [ 11 ]

16 голосов
/ 02 июня 2010

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

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

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

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

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

4 голосов
/ 02 июня 2010

Поддерживает ли ваш кеш памяти поддержку SQL?

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

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

3 голосов
/ 02 июня 2010

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

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

2 голосов
/ 02 июня 2010

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

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

1 голос
/ 16 августа 2011

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

1 голос
/ 02 июня 2010

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

0 голосов
/ 28 сентября 2017

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

0 голосов
/ 13 декабря 2016

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

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

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

0 голосов
/ 02 июня 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...