2010-03-09 5 views
10

Hiyerarşik veri yapıları genellikle ilişkisel veritabanlarında depolanır. Bu tür bir depolama esnek fakat düzdür, bu nedenle ağaç yapısının her bir sorgu ile oluşturulması gerekir. Forum yazılarını bir ağaç yapısı olarak kaydetmek istiyorum, ancak örneğin tarih veya yazara göre gönderileri seçerek verimli bir şekilde sorgulamak mümkün olmalıdır.Java'da ağaç yapıları nasıl saklanır?

Java'dan erişilebilen bir açık kaynak veritabanı kullanmak istiyorum.

Bunu yapmanın en iyi yolu nedir? CouchDB? Neo4j? ...?

+1

ORM nasıl olur? –

+1

Bir ORM, kullanımı daha kolay hale getirir, ancak temel veri yapısı hala ilişkisel kalır ve muhtemelen performans o kadar iyi olmazdı. – deamon

+0

Ayrıca bakınız: [Bir İlişkisel Veritabanında Hiyerarşik Verilerin Saklanması için Seçenek Nedir?] (Http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in- a-ilişkisel veritabanı) – cbare

cevap

7

Bu sorunla ilk karşılaştığımda, harika makaleyi buldum (link). tho deyişle

: RDBMS dünyada 2 ana ağaç modeli depolama yaklaşımlar vardır:

  • İçiçe Seti Modeli
+0

Makale yalnızca Oracle girişinde mevcuttur. – zellus

+0

Link güncellendi (başka bir yerde aynı makaleyi bulun) –

+0

Hızlı tepki için teşekkürler. – zellus

4

İşte Neo4j üzerinde great article bitişiklik Liste Modeli

  • bu. Genel olarak, belge veritabanları hala nispeten düz olduğundan ve bazı awkward setup (yine de yapılabilir) ile sonuçlanabileceğinden, neo4j en iyi seçeneğinizdir. Bir grafik veritabanı olan Neo4j, ağacınızı saklamak için sağlam bir uyumluluk olmalıdır. Hiç kullanmadım, ama problem alanınıza bakıldığında, en iyi seçenek gibi görünüyor (en azından ilk araştırmak için).

    "En iyi yol" ne kadarıyla, bunun sizin uygulamanıza ve gereksinimlerinize bağlı olduğunu düşünüyorum. Bir grafik veritabanına, bir belge veritabanına, bir object database ve ilişkisel bir veritabanına (veya değil) karşı basit bir sınama yazmanız ve hangisinin çözmeyi denediğiniz soruna uygun olduğunu yazmanız gerektiğini düşünüyorum.