Berkeley DB будет лучшим выбором, но я не могу использовать его из-за проблем с лицензированием.
Есть ли альтернативы?
Berkeley DB будет лучшим выбором, но я не могу использовать его из-за проблем с лицензированием.
Есть ли альтернативы?
Вы можете попробовать Hazelcast. Просто добавьте hazelcast.jar в свой путь к классам. И начать кодирование
java.util.Map map = Hazelcast.getMap("myMap");
Вы получите встроенную, распределенную, динамически масштабируемую сетку данных, которая быстро выполняет команду.
Ваш вопрос может означать одну из двух вещей.
Если вы имеете в виду структуру данных для хранения пар ключ-значение, используйте один из Map
экземпляров, которые являются стандартной частью JDK.
Если вы после хранилища значений в памяти в памяти, я бы предложил взглянуть на EHCache или даже memcached.
Chronicle-Map является сильной альтернативой.
java.util.Map
реализацияjdbm отлично работает для такого рода вещей. Он предназначен для хранения на диске в выгружаемом файле, обеспечивает базовую поддержку транзакций (никаких гарантий по изоляции, кроме ACD). Мы использовали его в производственной системе с довольно широким развертыванием и были очень довольны производительностью, стабильностью и т.д.
Рассмотрите возможность использования jredis. Это клиент Java для Redis, постоянного хранилища ключей. Там также есть драйвер JDBC: code.google.com/p/jdbc-redis/.
Я знаю, что это двухлетний пост, но я недавно общался с Infinispan, и мне это нравится, Я не эксперт каким-либо образом, но мне было не слишком сложно настраивать распределенный кеш с несколькими узлами, и я собирал некоторые данные из них примерно через час.
MapDb является альтернативой Berkley с дружественной лицензией Apache 2.
Есть lightweigh или embedded dbs, такие как HSQLDB, Derby, SQLite Но, как и другие, вы не понимаете, зачем вам нужен db для хранения ключей/значений...
Почему не карта? Нужно ли сохранять ключ/значения при перезагрузке приложения?
Кроме того, возможно, это не то, что вам нужно, но с html5 на современных браузерах у вас есть localStorage, который позволяет вам хранить ключ/значения в браузере с помощью javascript.
Я бы рекомендовал попробовать Redisson. Вы можете использовать распределенные и масштабируемые версии Map
или ConcurrentMap
и другие (Set, List, Queue, Lock...) поверх высокопроизводительного ключевого значения Redis.
Простой пример:
Redisson redisson = Redisson.create();
ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");
...
redisson.shutdown();