2011-01-27 10 views
13

java.util.Map'un disk üzerinde uygulanması için arıyorum. Çok süslü bir şey değil, sadece bir dizine veya dosyaya gösterebileceğim ve içeriğini bir şekilde seçebileceği bir şekilde seçebileceğim bir şey. Böyle bir şey bilen var mı?Java'nın Map'in iyi disk üstü uygulamaları var mı?

cevap

10

Disk-Backed-map projesine bakabilirsiniz.

Java

önemli değer çiftleri sayıda depolanması için bir diskin destekli harita uygulama sağlamak küçük bir kütüphane de, bir disk destekli ilk uygulayan bir kütüphane. Harita uygulamaları (HashMap, HashTable), çok basit anahtar/değer çiftleri için yaklaşık 3-4 Milyon tuşa/GB belleğe sahiptir ve çoğu durumda limit çok daha düşüktür. DiskBacked haritası, key/value çiftlerinin büyüklüğüne bakılmaksızın, 16Million (64bit JVM) 'yi 20Million (32bit JVM) anahtarlara/GB'ye kaydedebilir.

+0

Bu, web sitelerinden doğru bir alıntıdır, ancak yanlış olması gerekir. 64-bit JVM'nin 32-bit JVM'den daha küçük koleksiyonlara sahip olması mantıklı değildir. –

1

Basit bir EHCache uygulaması kullanabilirsiniz? EHCache hakkında 'un gerçekten çok iyi uygulanması :-)

Gerçek bir Map örneğini serileştirme/serileştirme kararını aldınız mı?

+0

Evet, buna karar verdim. Her şeyi hafızada tutmak zorunda kalmak istemiyorum. – jjujuma

+0

Isnt EHCache ödendi? Herhangi bir ücretsiz sürümü var mı –

+0

Bu Açık Kaynak, bu yüzden hiçbir lisans maliyeti – Brian

6

verileri ısrar key-object bazlı yapılar için arıyorsanız o zaman NoSQL veritabanları çok iyi bir seçimdir. Bunlardan bazılarının MongoDB veya Redis ölçeklerini bulup büyük veri kümeleri için performans gösterdiğini ve karma tabanlı görünümler dışında ilginç sorgulama ve işlem özellikleri sağladığını göreceksiniz.

Özünde bu tür sistemler bir Harita uygulamasıdır. Ve onları köprülemek için java.util.Map'u uygulayan kendi bağdaştırıcınızı uygulamak çok karmaşık olmamalı.

Bu soruna nispeten yeni bir açık kaynak çözüm gibi görünüyor
5

MapDB (mapdb.org) tam aradığınız şeyi öğrenirsin. Disk destekli TreeMap ve HashMap'in yanı sıra size başka koleksiyon türleri sunar.

Bu haritalar ayrıca iş parçacığı için güvenli ve gerçekten iyi bir performansa sahip.

Features

+0

Kağıt üzerinde güzel görünüyor, ama benim deneyimim ne yazık ki yavaş yavaş ve hiç güvenli değil ('transactionEnable' ile bile). – dagnelies

0

Chronicle Map bu soruna modern ve the fastest çözümdür bakın. Bu, ConcurrentMap arabirimini uygular ve verileri diske yazdırır (başlık altında, Chronicle Map'in belleğini bir dosyaya eşleyerek yapılır).

İlgili konular