2010-05-05 9 views
7

Kolega wspomniał, że słyszał o lekkiej kolekcji, która automatycznie wyświetlałaby się na dysku, gdy jej zawartość jest zbyt pełna - ale nie pamiętał nazwiska. Mogę sobie wyobrazić, że wygląda mniej więcej tak:Java Kolekcja, które strony na dysk, gdy jest pełny?

PagingCollection<Serializable> pagingCollection = new PagingArrayList<>(); 
pagingCollection.setMaxSizeInMemory(500); 
for (int x = 0; x < 1000; x++) { pagingcollection.add("x="+x); } 

które następnie wcisnąć x = 0 do x = 500 do dysku. Kluczem byłaby możliwość iteracyjne nad nim bez ładowania całość do pamięci ..

Jest za gruba klienta z małą ilością pamięci.

Czy ktoś o tym wie (lub coś podobnego)?

+1

Brzmi trochę jak Pamięć wirtualna .... – Tom

+0

Dlaczego nie można korzystać z niektórych cache zamiast tego? Jakie są zalety takiego API? –

+0

Po prostu jest lekki. Chociaż pełne rozwiązanie do buforowania może być naszą jedyną opcją, ale nie potrzebujemy większości z nich. Dzięki za myśli. –

Odpowiedz

6

Cóż, jedynymi dostępnymi narzędziami, które znam, są systemy prewalencji: prevayler i space4j. Chociaż ich interfejs wydaje się początkowo dziwny, są one jednak dość proste w obsłudze i oferują wygodny zestaw funkcji.

+0

Dzięki, wygląda na to, że jeden z nich powinien wykonać to zadanie. –

+2

space4j zapewnia również przezroczyste klastry i indeksację. – TraderJoeChicago

4

MapDB (mapdb.org) to biblioteka, która obsługuje kolekcje oparte na dysku: Zestawy, kolejek i map.

Można wybrać się, gdy utrzymują się to zrobić twardy lub po prostu utrzymują się na każdej aktualizacji.

Wspiera on także buforowanie więc wszystkie elementy będą na dysku, ale niektóre buforowane w pamięci.

+0

Jak widzę najnowszy (3.0.5) wersja mapdb nie obsługuje kolejek, tylko zestawy i mapy http://www.mapdb.org/javadoc/latest/mapdb/ lub nie znalazłem sposobu inicjowania kolejki Struktura... – MeetJoeBlack

Powiązane problemy