Potrzebuję struktury mapy opartej na dysku, która będzie używana w aplikacji Java. Musi posiadać następujące kryteria:Poleć szybką i skalowalną mapę trwałą - Java
- Zdolne do przechowywania miliony rekordów (nawet miliardy)
- Szybka Lookup - większość operacji na Mapie będzie po prostu sprawdzić, czy klucz już istnieje. To i 1 powyżej to najważniejsze kryteria. Powinien istnieć skuteczny mechanizm buforowania pamięci dla często używanych kluczy.
- Trwały, ale nie musi być transakcyjny, może żyć z pewną awarią. tzn. z przyjemnością synchronizuje się z dyskiem okresowo i nie musi być transakcyjne.
- Zdolne do przechowywania prostych typów pierwotnych - ale nie trzeba przechowywać serializowanych obiektów.
- Nie trzeba jej rozprowadzać, tzn. Uruchamiać wszystko na jednym komputerze.
- Prosty w konfiguracji & za darmo.
- Brak zapytań relacyjnych wymagane
Records klawisze będą ciągi lub tęskni. Jak opisano powyżej, odczyty będą znacznie częstsze niż zapisy, a większość odczytów będzie po prostu sprawdzać, czy klucz istnieje (tj. Nie będzie musiał czytać powiązanych danych kluczy). Każdy rekord będzie aktualizowany tylko jeden raz, a zapisy nie zostaną usunięte.
Obecnie używam Bdb JE, ale szukam innych opcji.
Aktualizacja
od tego czasu poprawy wydajności zapytań na mojego istniejącej konfiguracji BDB poprzez zmniejszenie uzależnienia od kluczy wtórnych. Niektóre zapytania wymagały sprzężenia na dwóch pomocniczych kluczach, a łącząc je w klucz złożony, usunąłem poziom pośredni w wyszukiwaniu, co przyspiesza ładowanie.
Jedną z opcji, którą rozważam, jest zmiana sposobu korzystania z istniejącej implementacji BDB. Obecnie mam jedną dużą bazę danych dla wszystkich moich rekordów. Powinienem jednak móc podzielić dane na zestawy i mieć jedną bazę danych na zbiór - jeśli wiem, że w dowolnym momencie będę potrzebował tylko dostępu do niektórych zestawów, to mogę zamknąć te zestawy, których nie używam, co powinno pomóc mi bardziej efektywnie zarządzać danymi. – Joel
użyłem bdb je. dla twoich kryteriów, to jest świetne dopasowanie. Byłem jednak bardzo rozczarowany jej kruchością i nie polecałem go do celów produkcyjnych. każda czkawka w procesie java spowodowała konieczność ponownego uruchomienia podsystemu bdb, blech! – james
Nie jestem pewien, co masz na myśli przez "kruchość" BDB JE. BDB JE jest skalowalny dla Terabajtów danych i cały czas używam go w systemach produkcyjnych. To cudowny kawałek techniki. – jasonmp85