2012-01-15 19 views
9

“Una base de datos Gráfico -transforms a-> RDBMS”¿Qué puede hacer un RDBMS que Neo4j (y las bases de datos de gráficos) no pueden?

El sitio de Neo4j parece dar a entender que todo lo que se puede hacer en RDBMS, que puede hacer en Neo4j.

Antes de elegir Neo4j como reemplazo para un RDBMS, necesito algunas dudas respondidas.


Estoy interesado en Neo4j para

  • capacidad de hacer rápidamente modificar datos "esquema"
  • capacidad de expresar las entidades de forma natural en lugar de las relaciones y las normalizaciones
  • ... que conduce a código altamente expresivo (mejor que ORM)

Esta es una solución NoSQL Estoy interesado en sus características, no el alto rendimiento.


Pregunta: ¿El Neo4j presentar cualquier problema que puede hacer que sea inadecuada como un reemplazo RDBMS?

Estoy particularmente preocupado por éstos:

  • ¿hay alguna característica DB debo aplicar en lógica de la aplicación? (Por ejemplo, debe implementar combinaciones en la capa de aplicación para algunos DB NoSQL)
  • ¿Están los campos "indexados" para permitir una búsqueda más rápida que O (n)?
  • ¿Cómo manejo las copias de seguridad y la replicación?
  • problemas con el esquema de "alteración" o el hecho de permitir que entidades con diferentes versiones del esquema vivan juntas?
+2

Si desea información acerca de este tema, copiar su mensaje a los http://neo4j.org/forums grupo Neo4j Google, no obtendrá respuestas. –

+0

@Michael Hunger, lo haré :-) Sí, esto fue demasiado especializado para SO. – aitchnyu

+0

No veo cómo esto no es constructivo. – smartcaveman

Respuesta

0

El uso de una base de datos corporativa como Oracle le dará muchas, muchas características que pueden o no ser parte de neo. Estos incluyen:

  • transacciones ACID
  • alta disponibilidad/backups/en espera
  • capacidad de utilizar SQL para obtener los datos de la manera más eficiente el uso de un optimizador basado en costos - el DB determina la mejor manera de recuperar el los datos en función de sus últimas estadísticas
  • escalabilidad, particionamiento
  • apoyo
  • seguridad

Si va a implementar la mayor parte de la funcionalidad de la aplicación en el código usted mismo y no requiere la estructura y características avanzadas que ofrece un rdbms o si sus estructuras de datos se adaptan mejor a un gráfico basado en db entonces por todos significa juicio neo.Existe un motivo por el que la mayoría de las aplicaciones corporativas utilizan uno de los servidores rdbms tradicionales, pero puede no ser siempre el caso en el futuro

2

Este es un tema extremadamente amplio que abarca desde modelado e implementación hasta TI y soporte. Es imposible responder realmente todas esas preguntas aquí, especialmente sin detalles sobre su situación. Sin embargo, parece que estás explorando opciones y avenidas. Por lo tanto, voy a pasar algo de reflexión general como alguien que ha implementado una serie de sistemas.

Todo el mundo parece pensar que su nuevo paradigma de base de datos es un reemplazo para las bases de datos relacionales. Por lo tanto, tome esas afirmaciones con un grano de sal.

Me gusta pensar en términos de 3 modelos fundamentales: relacional, documental y gráfico. Dependiendo de su espacio problemático, uno o más de estos es la respuesta correcta. No haría transacciones financieras en algo más que relacional (basado en SQL). Si está creando un CMS, entonces un Document DB es el camino a seguir. Si mi aplicación está modelando redes (carreteras, personas, conexiones, redes, etc.) uso Neo4J.

En cuanto a la calidad de producción, hay opciones sólidas en cada categoría. Relational tiene un montón. Para las bases de datos de documentos iría MongoDB o un sistema JCR de nivel superior como Apache Jackrabbit. Para graficar, solo tengo experiencia con Neo4j y es sólida como una roca para mí.

Hagas lo que hagas, no creas en el bombo que "Tenemos la tecnología que resuelve todos tus problemas". No está ahí y reduce tu forma de pensar.

1

Estoy convencido de que Neo4j es un buen reemplazo para las bases de datos relacionales por el momento.

  • Es conforme a ACID
  • Aunque la versión de la comunidad carece de algunas características como las copias de seguridad en caliente, la edición Enterprise tiene
  • Puede obtener soporte para el mismo
  • A primera vista (y en las nuevas versiones donde que no es necesario una cláusula START) CYPHER su lenguaje de consulta se puede hacer casi cualquier cosa SQL puede

pero

  • es más difícil encontrar un desarrollador CYPHER que un SQL uno
  • y no tiene un optimizador equivalentes: se importa más que con SQL la forma de escribir la consulta

A pesar de que es compatible con la replicación y Neo explícitamente lo comercializa como un producto de big data, no puedo confirmar que sea lo suficientemente escalable y no estudié aspectos de seguridad.

En versiones recientes (más joven que la pregunta anterior), se pueden definir índices en etiquetas, que funcionan como índices en tablas en una base de datos relacional, permitiendo búsquedas O (log (n)).

(fyi: Neo4j no tiene tablas, pero cada nodo (~ = fila) puede tener diferentes etiquetas, comparables a las etiquetas de gmail. Esto es más flexible: no tiene que elegir entre poner autos y bicicletas en una para la tabla de vehículos o no: una bicicleta debería tener un: vehículo y una: etiqueta de bicicleta.)

Para responder la pregunta original: Neo4j apenas admite la aplicación de esquema.Consejos prácticos que implementan pruebas de coherencia automatizadas en su base de datos, que ejecuta en su instancia de prueba de aceptación como parte de su ciclo de publicación.

Cuestiones relacionadas