Büyük bir DBpedia dökümü yüklerken bellekten istisna

C # uygulamama büyük bir dbpedia veri dökümü yüklemeye çalışıyorum, her yüklemeyi denediğimde bir bellek getirisi alıyorum.

Dosyalar milyonlarca giriş içeren çok büyük metin dosyalarıdır ve boyutları her biri 250 MB'den büyüktür (bunlardan biri aslında 7 GB!). Uygulamama 250 MB'lık bir dosya yüklemeye çalıştığımda, yaklaşık 10 saniye bekler; bu sırada RAM'im (baş>

Hafızanın istisnasının tamamen boş bir komşu hafıza parçası ile ilgili olduğunu anladım, böyle bir dosyanın programıma yüklenmesini nasıl yöneteceğimi bilmek istiyorum.

İşte dosya yüklemek için kullandığım kod, dotNetRDF kütüphanesini kullanıyorum.

 TripleStore temp = new TripleStore(); //adding Uris to the store temp.LoadFromFile(@"C:\MyTripleStore\pnd_en.nt"); 
3
13 февр. SKandeel tarafından Şub 13 tarihinde ayarlandı 2012-02-13 16:31 '12, 04:31, 2012-02-13 16:31
ответ 1 cevap

dotNetRDF, bellekte depolanan bu veri miktarını işlemek için tasarlanmamıştır. Tüm veri sözdizimsel analizleri akışlıdır, ancak tüm belleği alan ve bir OOM istisnasıyla sonuçlanan verileri depolamak için bellek yapıları oluşturmanız gerekir.

Varsayılan olarak, üçlüler tam olarak dizine eklenir, böylece SPARQL kullanarak ve her üç kopya için yaklaşık 1,7 kb gerektiren kütüphanenin geçerli sürümüyle sorguları verimli bir şekilde işleyebilirler, böylece kitaplık büyük olasılıkla bağlı olarak 2-3 milyon üçlü ile çalışmanıza izin verir boş hafızan İlgili bir nokta olarak, mevcut sürümdeki SPARQL algoritması bu ölçekte korkunç, bu nedenle verilerinizi belleğe yükleyebilseniz bile, etkili bir şekilde sorgulayamazsınız.

Kütüphanenin bir sonraki sürümü, bellek kullanımını azaltıyor ve SPARQL'in performansını büyük ölçüde artırırken, yine de bu miktarda veri için tasarlanmamıştır.

Bununla birlikte, dotNetRDF çok çeşitli üç dahili mağazayı destekler (bkz. IQueryableGenericIOManager arayüzü ve uygulamaları), bu nedenle kendi indirme mekanizmasını depolayan bir DBPedia dökümü yüklemelisiniz (dotNetRDF ile yüklemekten daha hızlı olacak) dotNetRDF, taleplerinizi yerine getirebileceğiniz bir müşteri olarak

1
13 февр. Cevap 13 Şubat'ta RobV tarafından verildi . 2012-02-13 23:26 '12 11:26 pm 2012-02-13 23:26

etiketleri ile ilgili diğer sorular veya bir soru sorun