Java имеет (или есть ли доступная библиотека), который позволяет мне иметь находящийся на диске HashMap? Это не должно быть атомарным или ничто, но к этому получат доступ через несколько потоков и не должно отказывать, если два получат доступ к тому же элементу одновременно.
Кто-либо знает о чем-нибудь?
Возможно, вы ищете файлы свойств или Berkeley DB . Сам java.util.Properties
реализует java.util.Map
и предоставляет методы для загрузки
из и сохранения
в файл. Berkeley DB часто рекомендуют как облегченное хранилище пар ключ-значение.
Project Voldemort также является очень быстрым / масштабируемым / репликационным "Hashmap". Он используется в LinkedIn, и производительность также довольно высока:
Цитата с их сайта:
Вот пропускная способность, которую мы видим от одного многопоточного клиента, разговаривающего с одним сервером. где набор "горячих" данных находится в памяти под искусственно большой нагрузкой в нашей лаборатории производительности:
Считывает: 19 384 запросов / сек
Записывает: 16 559 запросов / сек
Похоже, вам нужно что-то вроде легкого БД. Вы смотрели / рассматривали Java DB? Легкая база данных с единственной индексированной таблицей в основном была бы дисковой поточно-ориентированной хэш-картой.