Jaki rodzaj bazy danych NoSQL najlepiej nadaje się do przechowywania danych hierarchicznych?

Jaki rodzaj bazy danych NoSQL najlepiej nadaje się do przechowywania danych hierarchicznych?

Powiedzmy na przykład, że chcę przechowywać posty forum o strukturze drzewa:

original post
 + re: original post
 + re: original post
   + re2: original post
     + re3: original post
   + re2: original post
Author: feeling abused and harassed, 2011-01-22

11 answers

To jest grafowa baza danych. Może być używana jako baza drzew.

Http://neo4j.com/

 10
Author: Ripal Barot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-01 12:18:29

MongoDB i CouchDB oferują rozwiązania, ale nie wbudowane w funkcjonalność. Zobacz to pytanie na reprezentowanie hierarchii w relacyjnej bazie danych jak większość innych rozwiązań NoSQL, które widziałem, jest podobna pod tym względem; gdzie musisz napisać własne algorytmy do przeliczania tych informacji, gdy węzły są dodawane, usuwane i przenoszone. Ogólnie rzecz biorąc, podejmujesz decyzję pomiędzy szybkimi czasami odczytu (np. zagnieżdżony zestaw) lub szybkimi czasami zapisu (Lista adjacency). Zobacz też wyżej wymienione pytanie o więcej opcji w tych liniach - podejście z płaską tabelą wydaje się najbardziej zgodne z twoim pytaniem.

Jednym ze standardów, który nie usuwa tych rozważań, jest Java Content repozytorium (JCR), zarówno Apache JackRabbit, jak i JBoss eXo są implementacjami. Zauważ, że za kulisami obaj nadal wykonują jakieś algorytmiczne obliczenia, aby utrzymać hierarchię, jak opisano powyżej. Ponadto JCR zajmuje się również uprawnienia, Przechowywanie plików i kilka innych aspektów - więc może to być przesada dla Twojego projektu.

 29
Author: orangepips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:11

Prawdopodobnie potrzebujesz bazy danych zorientowanej na dokumenty, takiej jak MongoDB lub CouchDB .

Zobacz przykłady różnych technik, które pozwalają na przechowywanie danych hierarchicznych w MongoDB: http://www.mongodb.org/display/DOCS/Trees + in + MongoDB

 17
Author: Maxim Gueivandov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-23 17:31:00
 3
Author: Gandalf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:42:39

Wobec tego samego problemu postanowiłem stworzyć własne (bardzo proste) rozwiązanie przy użyciu Lua + Redis https://github.com/qbolec/Redis-Tree/

 3
Author: qbolec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-03 04:28:44

Exist-db zaimplementowany hierarchiczny model danych dla XML persistence

 2
Author: lisak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 00:26:48

Grafowe bazy danych prawdopodobnie również rozwiążą ten problem. Jeśli neo4j nie jest dla Ciebie wystarczający pod względem skalowania, rozważ Titan , który opiera się na różnych back-endach pamięci, w tym HBase i powinien być bardzo dobrze skalowany. Nie jest tak dojrzały jak neo4j, ale to bardzo obiecujący projekt.

 2
Author: user1234883,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-13 16:43:40

LDAP, oczywiście. OpenLDAP zrobiłby to krótko.

 2
Author: hyc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-19 12:53:33

Zobacz MarkLogic . Możesz pobrać wersję demonstracyjną ze strony internetowej. Jest to baza danych dla nieustrukturyzowanych danych i podlega klasyfikacji baz danych NoSQL. Wiem, że dane nieustrukturyzowane to dość załadowany termin, ale pomyśl o tym jako o danych, które nie pasują dobrze do wierszy i kolumn RDBMS (jak dane hierarchiczne).

 0
Author: Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-04 15:01:02

Właśnie spędziłem weekend na szkoleniu, używając MUMUPS db jako zaplecza dla pełnego stosu JavaScript browser development framework. Świetny towar! Polecam GT.M distro świnki na GPL. Lub spróbuj http://sourceforge.net/projects/mumps/?source=recommended na waniliową świnkę. Sprawdź http://robtweed.wordpress.com / dla ewd.JS JS framework i więcej informacji na temat świnki.

 0
Author: chris topinka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-11 20:51:26

Oto Brak odpowiedzi dla Ciebie. SQLServer 2008!!!! Świetnie nadaje się do zapytań rekurencyjnych. Możesz też przejść staromodną trasą i przechowywać dane hierarchii w osobnej tabeli, aby uniknąć rekursji.

Myślę, że relacyjne bazy danych bardzo dobrze nadają się do danych drzewa. Zarówno pod względem wydajności zapytań, jak i łatwości obsługi. Z jednym zastrzeżeniem.... będziesz wstawiać do zindeksowanej tabeli i prawdopodobnie kilka innych zindeksowanych tabel za każdym razem, gdy ktoś tworzy post. Wydajność Insert może być problemem na forum na facebook ' u.

 -1
Author: Lord Tydus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-22 14:04:41