2013-08-20 2 views
0

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

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

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

+0

Как вы думаете, memcached? база данных в памяти ... вы не будете хранить банковскую базу данных в базе данных только для ram, но вы можете использовать этот ram-only db как быстрый кеш. –

+0

Вы использовали бы его, когда постоянное хранилище IO чрезвычайно дорого. Представьте себе какой-то датчик, который должен отправить данные на спутник. Или расходная электроника, такая как ракета или занятый веб-сервер под управлением MINIX 3;) В любом случае вы всегда можете время от времени сливаться с хранилищем. – rath

ответ

2

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

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

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

+0

О, хорошо, я не знал о периодическом кэшировании на диск. Да, я могу определенно понять желательность с точки зрения производительности. Еще один вопрос: как такие базы данных обычно обрабатывают восстановление данных из кэшированного материала на диске? Кажется, что если вы периодически кешируете, всегда будет некоторая потеря данных при восстановлении из-за времени между сбоем и последним кэшем на диск – dsw88

+0

@ dsw88 Я не знаю, как часто он записывает изменения в диск, он может сделать это сразу после получения запросов. И будет только несколько причин, почему база данных должна перестать работать, чаще всего я предполагаю, что это перезапуск сервера. Но программа получает уведомление (или какой-то другой способ узнать его закрытие), и имеет возможность записать на диск. Весь сервер может упасть и упасть, что маловероятно, но, вероятно, приведет к потере данных. – Shade

Смежные вопросы