В памяти Java DB [закрыто]
есть ли какие-либо DBs для Java, которые могут быть запущены во встроенном режиме с некоторыми таблицами, хранящимися в памяти при загрузке других с диска? H2 и JavaDB, похоже, являются двумя лидерами для Java DBs, и я знаю, что у них есть режим в памяти, но они заставляют вас загружать всю БД в память или вы можете принять решение по таблице за таблицей?
2 ответов
Это кэшированная таблица FAQ, упомянутая на веб-сайте HSQL.
•хранит ли HSQLDB все данные в памяти. Разве в результате не заканчивается память?
•Он хранит все данные в памяти, только если вы хотите. По умолчанию создание таблицы приводит к таблице памяти, так как это лучший тип для небольших таблиц. Для больших таблиц используйте CREATE CACHED TABLE и настройте размер кэша в соответствии с требованиями к использованию памяти (всего 8 Мб или около того). посмотреть Вопросы управления системой и развертывания глава руководства. Нет простого правила и нет наложения со стороны HSQLDB, поскольку максимальная гибкость разрешена с использованием только нескольких настроек. Популярное использование HSQLDB для приложений OLAP, ETL и интеллектуального анализа данных, где огромные выделения памяти Java используются для хранения миллионов строк данных в памяти.
Я думаю, что кэшированная таблица уже достаточно мощная, чтобы удовлетворить ваши потребности.
от http://hsqldb.org/web/hsqlFAQ.html
сравнение между таблицей кэша и таблицей памяти
таблицы памяти и кэшированные таблицы обычно используются для хранения данных. Разница между ними заключается в следующем:--1-->
данные для всех таблиц памяти считываются из *.файл сценария при запуске базы данных и ее хранении в памяти. Напротив, данные для кэшированных таблиц не считываются в память до тех пор, пока к таблице не будет получен доступ. Кроме того, только часть данных для каждой кэшированной таблицы хранится в памяти, что позволяет хранить в ней больше данных, чем в памяти.
когда база данных выключается обычным способом, все данные для таблиц памяти записываются на диск. Для сравнения, измененные данные в кэшированных таблицах записываются во время работы и при завершении работы.
размер и емкость кэша данных для всех кэшированных таблиц настраивается. Это позволяет разрешить все данные в кэшированных таблицах будут кэшироваться в памяти. В этом случае скорость доступа хорошая, но немного медленнее, чем у таблиц памяти.
для обычных приложений рекомендуется использовать таблицы памяти для небольших объемов данных, оставляя кэшированные таблицы для больших наборов данных. Для специальных применений в которых скорость первостепенна и большое количество свободной памяти доступно, таблицы памяти можно использовать для больших таблиц также.
кажется, эта функция не поддерживается по H2 и Derby (JavaDB) пока нет. Поправьте меня, если это не так.
большинство баз данных в памяти (например,HSQLDB иметь возможность кэшировать некоторые (или все) данные на диск. Обычно это достаточно низкий уровень, поэтому он прозрачен для программиста, но, безусловно, настраивается