~ 50m satırlı çok büyük bir XML dosyasına sahibim.Java'ya gömülü neo4j'ye Büyük bir xml dosyasını içe aktarma
XML dosyasının Neo4j Grafik Veritabanı'nı oluşturmaya çalışıyorum. Java uygulaması
1) İthalat XML veri: Ben NetBeans IDE Java kullanıyorum
.
2) Verilere sahip bir Neo4j grafik veritabanı oluşturun.
1. adımda, bir seferde veriyi bir xml etiketi ile veren SAX çözümleyicisi kullanıyorum.
XML etiketleri şunlardır:
1) bir konferans kağıdı. (Dış etiket)
2) Ait olduğu konferans. (İç etiket)
3) Konferans kağıdının yazarları. (İç etiket) Neo4j grafik veritabanını oluştururken aşağıdaki düğümlere ve ilişkiye ihtiyacım var.
1) Her kağıt için yeni bir düğüm oluşturun. (Her kağıt sadece bir kez açıklandığı için kopyalar oluşmaz)
2) Her konferans için yeni bir düğüm oluşturun. (Grafikte yinelenen yok)
3) Her yazar için yeni bir düğüm oluşturun. (Grafikte kopya bulunmamalıdır)
İlişkilerde, her bir kağıt konferansa bağlanmalı ve her yazar yazar tarafından yazılan makalelere bağlanmalıdır.
Örnek:
Bu çok özel bir soru olduğunu biliyorum ama benim soruya mükemmel bir yanıt bekliyor değilim, ben sadece bunu çözmeye yönelik yaklaşımlar arıyorum.
Neo4j için tamamen yeni.
Bu sorunu nasıl giderim? Batch Insertion kullanması tavsiye edildi, ancak bir seferde 1 değer (düğüm) eklerken ve ayrıca grafik db'de yer alan koşulları ve kısıtlamaları da eklerken bunu kullanmak mümkündür. etiketi zaten (bir konferans düğüm zaten varsa, düğümü oluşturmaz, sadece kendi kimliğine göre düğümü bulmak ve ona kağıdı bağlantı) bir düğüm vardır
edin:
Bu
ben düşünüyorum ne yoksa, eğer varsa, düğüm oluşturun. (Varsa, konferans için yeni bir düğüm oluşturun ve ardından kağıdı yeni düğümle ilişkilendirin). Kağıt ve yazarlar için aynı süreç. (Yazar yoksa, yeni bir düğüm oluşturun ve yazarın kağıda bağlanması veya yazar zaten mevcutsa, düğümü bulun ve bu düğümü kağıda bağlayın). Bu süreç ne kadar zaman alır? Bu yaklaşımla devam etmek mümkün mü?Bu sorunu çözmek için başka hangi seçeneklerim var?
Herhangi bir yardım büyük memnuniyetle karşılanacaktır.
Çok önceden teşekkürler.
Ayrıca üzerinde kısıtlamalar olmalıdır: Conf (id),: Author (id) ve: Paper (id) –
Teşekkürler. Cevabımı güncelledim. – cybersam
Cevap @cybersam bir çok teşekkürler Soruyu ve cevabını sorduğum zaman arasında, düğüm üzerinde benzersiz kısıtlamalar yarattığım ve daha sonra veriyi içine sokmak için MERGE'yi kullandım. Hangi kağıdın hangi yazara ait olduğunu ve hangi konferansın hangi kağıda ait olduğunu öğrenmek için Grafik ve MATCH. Ben sizin önerdiklerinize benzediğini düşünüyorum, ancak kodumun tamamlanması için tahmini 4 günlük bir zaman alacağım. Kodum için biraz daha hızlı çalışabilmem için kullanabileceğim başka bir yaklaşım var (toplu yerleştirme gibi). –