2010-11-18 23 views
12

Estoy investigando un nuevo proyecto que será un sitio de estilo de red social. Estoy leyendo en RavenDb y me gusta el aspecto de muchas de sus características. No he leído mucho sobre nosql, pero me pregunto si hay un lugar que se adapte mejor y el sql de la vieja escuela sigue siendo la mejor opción para otras cosas.Buenas prácticas de implementación de NoSql/Raven DB

Estoy pensando que el complemento de permisos sería ideal para un sitio de estilo de red social, pero realmente funcionará en un entorno donde la base de datos se verá afectada o está optimizado para un sistema de estilo de informes más donde es posible seguir lanzando nuevas estructuras de datos en la base de datos e informar sobre esas estructuras.

estoy ansioso por utilizar la herramienta adecuada para el trabajo - voy a estar utilizando MVC3, Windsor + cualquiera de servidor SQL o Nhibernate + RavenDb.

¿Debo seguir con la vieja sql escuela o ir con el nuevo chico en el bloque: ravendb?

Respuesta

20

Esta pregunta puede llegar a estar muy cerca de ser subjetiva (a pesar de que no es realmente), que está hablando NoSQL como si fuera una sola cosa, y que no es el caso.

Usted tiene

  • bases de datos de gráficos (Neo4j etc),
  • map/reduce bases de datos documentales estilo (Couch, Raven),
  • bases de datos documentales que tratan de sentirse como bases de datos comunes (Mongo),
  • Almacenes clave/valor (Cassandra, etc.)
  • moar va aquí.

Cada uno de ellos trata de resolver un problema diferente a través de diferentes medios, y si tendrá que utilizar uno de ellos más de una tienda relacional tradicional es

  • Una cuestión de conveniencia
  • Una cuestión de preferencia personal

al final del día, para el primaria almacenamiento de datos para un solo sistema, una base de datos de documentos o tienda relacional es prob hábilmente lo que quiere, aunque para diferentes partes de su sistema puede terminar utilizando una base de datos de gráficos (para calcular vecinos, etc.), o un almacén de claves/valores (como Facebook hace/hizo para los mensajes de la bandeja de entrada).

El principal beneficio de elegir una tienda de documentos como su tienda principal sobre la de una tienda relacional, es que no tiene que preocuparse por tratar de asignar sus objetos en una colección de tablas, y hay menos gastos generales de configuración involucrado en hacerlo.

La otra desventaja/upside sería que tienes que aprender algo nuevo y cometer errores en el camino.

Así que mi respuesta si voy a ser directo?

  • RavenDB sería adecuado
  • SQL sería adecuado

¿Qué prefieres usar?En estos días probablemente iría por Raven, sabiendo que puedo enviar datos a una tienda relacional para fines de informes y probablemente también para otras partes de mi sistema, y ​​obtener búsquedas de texto libre y de escritura rápida/lectura rápida sin ir a través del esfuerzo de definir tiendas de lectura/escritura separadas es una victoria general.

Pero ese soy yo y soy parcial.

+1

esa es una respuesta excelente - @mikehadlow lo está usando en el banco tardis, que es una buena fuente de aprendizaje, así que voy a sumergirme directamente. Sus comentarios + un par de colegas son suficientes para convencerme de que hay tiempo para invertir aquí. Los permisos parecen interesantes, pero ¿esto tiene los mismos problemas de escalabilidad que rhino.security? – iwayneo

+0

No he usado los permisos, tiendo a hacer cosas un poco más gruesas que eso cuando lo hago. Depende completamente de cómo lo uses, me imagino –

Cuestiones relacionadas