Java embedded library on-disk key - база данных значений [закрыто]

Что Я думаю Я ищу базу данных без SQL, встроенную в библиотеку, на диске (т. е. не в памяти), доступную с java (и предпочтительно работает внутри моего экземпляра JVM). Это не очень большая база данных, и у меня есть соблазн свернуть свою собственную. В основном я ищу" должны ли мы сохранить это в памяти или поместить его на диск " часть базы данных.

наша модель выросла до нескольких гигабайт. Прямо сейчас все это делается в памяти, а это значит, что мы давим. JVM для нескольких гигабайт. В настоящее время все это хранится в плоском XML-файле, сериализованном и десериализованном с помощью xstream и сжатом с помощью Java, встроенных в библиотеки gzip. Это хорошо работает, когда наша модель остается под 100MB, но теперь, когда она больше, чем это становится проблемой.

грубо говоря, эта модель может быть разбита как

    1. компонент конфигурации (directed-acyclic-graph), совсем не база данных дружелюбный
    2. список дюжины" экспериментальных " структур
      • каждый из них содержит список около десятка структур "run-model".
        1. каждая модель запуска содержит сотни мегабайт данных. После написания они никогда не редактируются.

    то, что я хотел бы сделать, это иметь что-то, что соответствует интерфейсу карты, guid- > run-model. Эта мини-база данных будет содержать плоскую таблицу этих объектов. На наша экспериментальная модель, мы заменим список run-моделей списком GUID и добавим на уровне приложения вызов get к этой карте, который вытащит ее с диска и в память.

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

    Я вроде как чувствую себя Ганг-Хо об этом, и думаю, что я мог бы, вероятно, реализовать его с некоторыми из стратегий проверки XML X-Stream и пользовательской реализации карты, но что-то голос в моей голове говорит мне, что я должен найти библиотеку, чтобы сделать это вместо этого.

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

    спасибо ребята,

    -Джефф

    2 ответов


    http://www.mapdb.org/

    также взгляните на этот вопрос: альтернатива BerkeleyDB?


    поскольку MapDB является возможным решением вашей проблемы,Хроника Карте также стоит рассмотреть. Это встроенное хранилище ключей Java, необязательно постоянное, предлагающее очень похожую модель программирования для MapDB: это также через vanilla java.util.Map интерфейс и прозрачная сериализация ключей и значений.

    основное различие заключается в том, что согласно сторонним критериям,Хроника карта в разы быстрее, чем MapDB.

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

    отказ от ответственности: я разработчик карты Хроники.