¿Qué base de datos es mejor para trabajar con gráficos y datos estructurados por árbol?

dapper database graph hierarchy tree

Pregunta

Estoy planeando trabajar con Dapper.NET para un sitio familiar.

Una gran cantidad de datos arbóreos estarán presentes en la estructura. ¿Qué base de datos proporciona las mejores consultas para trabajar con relaciones de árbol cíclicas / acíclicas?

Quiero saber la comparación de rendimiento y facilidad de las consultas jerárquicas. es decir. como CTE en SQL Server, Connect By / Start with in Oracle, etc.

¿Es apta la mejor opción como Micro ORM para este tipo de datos estructurados por árbol?

Necesito una opinión al elegir la base de datos correcta y el Micro ORM adecuado para esto.

Perdón por mi mal ingles.

Respuesta popular

Mi pregunta sigue en pie: ¿cuántos datos esperas?

Pero aparte de eso, no es solo el tipo de base de datos que eliges para tus datos, sino también la estructura de la tabla. Los árboles de jerarquía se pueden almacenar de diferentes maneras según sus necesidades.

Estructura de la tabla

Las estructuras particulares pueden ser muy rápidas en lecturas transversales pero lentas en inserciones / actualizaciones (es decir, conjuntos anidados ), otras (listas de adyacencia) al revés. Para una relación de lectura: escritura de 99: 1 (la gran mayoría de las aplicaciones actuales leen mucho más que escribir) Probablemente elegiría una estructura de conjunto anidado modificado que tenga izquierda, derecha, profundidad y principal. Esto le da la mejor posibilidad de escenarios de lectura.

Tipo de base

A menos que esté apuntando a grandes cantidades de datos, le sugiero que vaya con cualquiera de las bases de datos SQL que mejor conozca (MSSQL, MySQL, Oracle). Pero si su base de datos contiene una enorme cantidad de nodos jerárquicos, entonces flirtear con una base de datos especializada orientada a gráficos puede ser una mejor opción.

80 millones de nodos

Si opta por una solución de conjuntos anidados modificados (también utilizando valores negativos, por lo tanto, número de actualizaciones en las mitades de inserción / actualización), le left tabla de jerarquía. right columnas right , ID y ParentID darían como resultado una tabla de aproximadamente 1,2 GB. Pero esa es su mejor estimación después de al menos dos años de uso.

Mi sugerencia

Vaya rápido y sin problemas: no sobreinforme utilizando la mejor base de datos posible para almacenar su jerarquía si resulta que no es necesaria después de todo. Por lo tanto, le sugiero que use DB relacional inicialmente para que pueda lanzarse al mercado rápidamente aunque la solución comience a tener problemas después de algunos millones de registros. Pero antes de que su base de datos comience a complicarse (estamos hablando de años aquí) obtendrá dos cosas:

  1. En primer lugar, verá si su producto despegará (ya hay muchos servicios de genealogía), por lo que no invertirá en el aprendizaje de nueva tecnología; Porque estarías usando tecnología probada y compatible te pondría en el mercado rápidamente
  2. Si su producto tiene éxito (y realmente espero que lo haga), todavía le dará tiempo suficiente para aprender una solución de almacenamiento diferente e implementarla; con las capas de código adecuadas, no debería ser difícil cambiar el almacenamiento más adelante cuando sea necesario


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué