Java embedded library on-disk key - база данных значений [закрыто]
Что Я думаю Я ищу базу данных без SQL, встроенную в библиотеку, на диске (т. е. не в памяти), доступную с java (и предпочтительно работает внутри моего экземпляра JVM). Это не очень большая база данных, и у меня есть соблазн свернуть свою собственную. В основном я ищу" должны ли мы сохранить это в памяти или поместить его на диск " часть базы данных.
наша модель выросла до нескольких гигабайт. Прямо сейчас все это делается в памяти, а это значит, что мы давим. JVM для нескольких гигабайт. В настоящее время все это хранится в плоском XML-файле, сериализованном и десериализованном с помощью xstream и сжатом с помощью Java, встроенных в библиотеки gzip. Это хорошо работает, когда наша модель остается под 100MB, но теперь, когда она больше, чем это становится проблемой.
грубо говоря, эта модель может быть разбита как
- компонент конфигурации (directed-acyclic-graph), совсем не база данных дружелюбный
- список дюжины" экспериментальных " структур
- каждый из них содержит список около десятка структур "run-model".
- каждая модель запуска содержит сотни мегабайт данных. После написания они никогда не редактируются.
- каждый из них содержит список около десятка структур "run-model".
то, что я хотел бы сделать, это иметь что-то, что соответствует интерфейсу карты, guid- > run-model. Эта мини-база данных будет содержать плоскую таблицу этих объектов. На наша экспериментальная модель, мы заменим список run-моделей списком GUID и добавим на уровне приложения вызов get к этой карте, который вытащит ее с диска и в память.
Это означает, что мы можем сохранить конфигурацию нашей программы в XML (что меня очень устраивает) и сохранить таблицу больших данных в СУБД, которая не позволит нам потреблять несколько ГБ памяти. При запуске и выходе программы я мог бы загрузить и выгрузить две части нашей модели (раздел конфигурации в XML, и run-модели в формате базы данных) из формата архивирования.
Я вроде как чувствую себя Ганг-Хо об этом, и думаю, что я мог бы, вероятно, реализовать его с некоторыми из стратегий проверки XML X-Stream и пользовательской реализации карты, но что-то голос в моей голове говорит мне, что я должен найти библиотеку, чтобы сделать это вместо этого.
должен ли я свернуть свой собственный или есть база данных, которая достаточно мала, чтобы соответствовать этому законопроекту?
спасибо ребята,
-Джефф
2 ответов
также взгляните на этот вопрос: альтернатива BerkeleyDB?
поскольку MapDB является возможным решением вашей проблемы,Хроника Карте также стоит рассмотреть. Это встроенное хранилище ключей Java, необязательно постоянное, предлагающее очень похожую модель программирования для MapDB: это также через vanilla java.util.Map
интерфейс и прозрачная сериализация ключей и значений.
основное различие заключается в том, что согласно сторонним критериям,Хроника карта в разы быстрее, чем MapDB.
в отношении стабильность, никаких ошибок не сообщалось о хранении данных карты хроники в течение нескольких месяцев, в то время как он активно используется во многих проектах.
отказ от ответственности: я разработчик карты Хроники.