В памяти Java DB [закрыто]


Существуют ли какие-либо DBs для Java, которые можно запускать во встроенном режиме с сохранением одних таблиц в памяти при загрузке других с диска? H2 и JavaDB, похоже, являются двумя лидерами для Java DBs, и я знаю, что у них обоих есть режим в памяти, но заставляют ли они вас загружать всю БД в память или вы можете решить на основе таблицы за таблицей?

2 8

2 ответа:

Это кэшированная таблица FAQ, упомянутая на веб-сайте HSQL.

•хранит ли HSQLDB все данные в памяти. Разве в результате память не истощается?

•Он хранит все данные в памяти, только если вы хотите. По умолчанию создание таблицы приводит к таблице памяти, так как это лучший тип для небольших таблиц. Для больших таблиц используйте CREATE CACHED TABLE и отрегулируйте размер кэша в соответствии с требованиями к использованию памяти (всего 8 Мб или около того). см. управление системой и Вопросы развертывания глава руководства. Здесь нет простого правила и нет навязывания со стороны HSQLDB, так как максимальная гибкость допускается при использовании только нескольких настроек. Популярное использование HSQLDB используется для OLAP, ETL и приложений интеллектуального анализа данных, где используются огромные выделения памяти Java для хранения миллионов строк данных в памяти.

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

Из http://hsqldb.org/web/hsqlFAQ.html

Сравнение между таблицей кэша и таблицей памяти

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

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

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

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

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

Похоже, что эта функция еще не поддерживается H2 и Derby (JavaDB). Поправьте меня, если это не так.

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