Являются ли они достойными реализациями Java Map на диске? - PullRequest
13 голосов
/ 27 января 2011

Я ищу реализацию на диске java.util.Map.Ничего особенного, просто что-то, что я могу указать на каталог или файл и заставить его хранить там свое содержимое, каким-то образом по своему выбору.Кто-нибудь знает о такой вещи?

Ответы [ 6 ]

10 голосов
/ 27 января 2011

Вы могли бы взглянуть на проект Disk-Backed-map .

Библиотека, которая реализует карту с дисковым резервированием в Java

Небольшая библиотека, предоставляющая реализацию карты на основе диска для хранения большого числа пар ключ-значение.Реализации карт (HashMap, HashTable) максимально используют 3-4 миллиона ключей / ГБ памяти для очень простых пар ключ / значение, и в большинстве случаев ограничение намного ниже.Карта DiskBacked, с другой стороны, может хранить от 16 миллионов (64-битных JVM) до 20 миллионов (32-битных JVM) ключей / ГБ, независимо от размера пар ключ / значение.

6 голосов
/ 27 января 2011

Если вы ищете структуры key-object для сохранения данных, то базы данных NoSQL - очень хороший выбор. Вы обнаружите, что некоторые из них, такие как MongoDB или Redis , масштабируются и работают для больших наборов данных, и, кроме поиска на основе хеш-функции, они предоставляют интересные функции запросов и транзакций.

По сути, эти типы систем являются реализацией Map. И это не должно быть слишком сложно, чтобы реализовать свой собственный адаптер, который реализует java.util.Map для их соединения.

5 голосов
/ 19 февраля 2014

MapDB ( mapdb.org ) делает именно то, что вы ищете.Помимо поддерживаемой на диске TreeMap и HashMap, она предоставляет вам другие типы коллекций.

Карты также поточнобезопасны и имеют действительно хорошую производительность.

См. Особенности

1 голос
/ 27 января 2011

Вы могли бы использовать простую реализацию EHCache? Хорошая особенность EHCache в том, что он может быть очень простым в реализации: -)

Я так понимаю, вы исключили сериализацию / десериализацию реального экземпляра карты?

0 голосов
/ 19 марта 2017

Хроническая карта - это современное и самое быстрое решение этой проблемы. Он реализует интерфейс ConcurrentMap и сохраняет данные на диск (под капотом это делается путем сопоставления памяти Chronicle Map с файлом).

0 голосов
/ 18 сентября 2012

Похоже, это относительно новое решение проблемы с открытым исходным кодом, я его использовал, и мне нравится до сих пор

https://github.com/jankotek/JDBM4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...