database - sentencias - diferentes tipos de nosql
¿Qué tipo de base de datos NoSQL es más adecuada para almacenar datos jerárquicos? (11)
¿Qué tipo de base de datos NoSQL es más adecuada para almacenar datos jerárquicos?
Digamos, por ejemplo, que quiero almacenar publicaciones de un foro con estructura de árbol:
original post
+ re: original post
+ re: original post
+ re2: original post
+ re3: original post
+ re2: original post
Acabo de pasar el fin de semana en un curso de capacitación usando MUMUPS db como un back-end para un framework de desarrollo de aplicaciones de navegador javascript completo. ¡Buena cosa! Recomiendo la distribución GT.M de MUMPS bajo GPL. O pruebe http://sourceforge.net/projects/mumps/?source=recommended para vanilla MUMPS. Eche un vistazo a http://robtweed.wordpress.com/ para el framework ewd.js js y más información sobre MUMPS.
Aquí hay una falta de respuesta para ti. SQLServer 2008 !!!! Es ideal para consultas recursivas. O puede ir a la ruta antigua y almacenar datos de jerarquía en una tabla separada para evitar la recursión.
Creo que las bases de datos relacionales se prestan muy bien a los datos de árbol. Tanto en rendimiento de consulta como en facilidad de uso. Con una advertencia ... lo insertarás en una tabla indexada, y probablemente varias otras tablas indexadas cada vez que alguien haga una publicación. El rendimiento de inserción podría ser un problema en un foro de calibre de Facebook.
Echa un vistazo a MarkLogic . Puede descargar una copia de demostración desde el sitio web. Es una base de datos no estructurados y pertenece a la clasificación de bases de datos NoSQL. Sé que los datos no estructurados son un término bastante cargado, pero solo piensen en ello como datos que no encajan bien en las filas y columnas de un RDBMS (como datos jerárquicos).
El más común es el IMS de IBM . También hay una base de datos de caché
Vea esta pregunta publicada en la sección dba de stackexchange.
Enfrentando el mismo problema, decidí crear mi propia solución (muy simple) usando Lua + Redis https://github.com/qbolec/Redis-Tree/
Esta es la base de datos de gráficos. Se puede usar como una base de datos de árbol.
LDAP, obviamente. OpenLDAP haría un breve trabajo.
Las bases de datos de gráficos probablemente también resolverían este problema. Si neo4j no es suficiente para usted en términos de escalado, considere Titan , que se basa en varios back-ends de almacenamiento, incluido HBase, y debería escalar muy bien. No es tan maduro como neo4j, pero es un proyecto muy prometedor.
Lo que posiblemente necesite es una base de datos orientada a documentos como MongoDB o CouchDB .
Vea ejemplos de diferentes técnicas que le permiten almacenar datos jerárquicos en MongoDB: http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
MongoDB y CouchDB ofrecen soluciones, pero no están integradas en la funcionalidad. Vea esta pregunta sobre cómo representar la jerarquía en una base de datos relacional ya que la mayoría de las otras soluciones NoSQL que he visto son similares a este respecto; donde tiene que escribir sus propios algoritmos para volver a calcular esa información a medida que se agregan, eliminan y mueven los nodos. En términos generales, usted toma una decisión entre los tiempos de lectura rápida (por ejemplo, el conjunto anidado ) o los tiempos de escritura rápidos ( lista de adyacencia ). Consulte la pregunta SO anteriormente mencionada para obtener más opciones a lo largo de estas líneas: el enfoque de tabla plana parece estar más alineado con su pregunta.
Un estándar que abstrae estas consideraciones es Java Content Repository (JCR), tanto Apache JackRabbit como JBoss eXo son implementaciones. Tenga en cuenta que detrás de las escenas, ambos todavía están haciendo algún tipo de cálculos algorítmicos para mantener la jerarquía como se describió anteriormente. Además, el JCR también se encarga de los permisos, el almacenamiento de archivos y varios otros aspectos, por lo que puede ser excesivo para su proyecto.
Exist-db implementó un modelo de datos jerárquico para la persistencia xml