¿Por qué NoSQL sobre SQL? [duplicar]

14

Qué tan bien el SQL y el NoSQL van cabeza a cabeza. Leí en algún lugar que las bases de datos SQL no están bien para los datos que están bien estructurados o tienen alguna asociación gráfica asociada. ¿Es realmente el caso?

Aparte de Facebook, Google y algunos otros grandes jugadores en la web, no sé qué tan bien los jugadores pequeños y las nuevas empresas han usado estas herramientas. Encontré otra pregunta similar sobre el mismo aquí . Pero no pude reunir muchas estadísticas de aquí. Estos son ciertos casos específicos, ¿y hay un patrón general (como el mencionado anteriormente) para el cual se pueden usar estas bases de datos NoSQL?

¿Qué tan sabio sería para una empresa de nueva creación ir a una base de datos NoSQL si los desarrolladores saben que la cantidad de datos involucrados será un poco grande y está bien estructurada, pero requiere operaciones CRUD frecuentes?

Aquí, en stackoverflow, uno puede encontrar preguntas sobre cuándo no usar SQL, pero ¿hay escenarios en los que se debe evitar el uso de bases de datos NoSQL? Además, ¿qué tan efectivo será usar ambos en paralelo para que obtengamos lo mejor de ambos?

Una última pregunta, ¿estas bases de datos NoSQL distribuidas funcionan igual de bien cuando se usan en una configuración de un solo nodo?

    
pregunta c0da 19.09.2011 - 07:14

2 respuestas

8

Aquí hay algunas ventajas para las bases de datos SQL clásicas como Oracle, MS SQL, Sybase, DB / 2 contra NO / SQL:

  • muy maduro
  • ecosistema existente (documentación, herramientas, muchos proveedores externos, enlaces a diferentes lenguajes de programación, etc.)
  • modelos de seguridad extensivos
  • consultas ad-hoc fáciles, con lenguajes de consulta muy poderosos
  • la mayoría de ellos son escalables para cientos de usuarios / conexiones
  • Vistas y procedimientos almacenados
  • modelos de transacción confiables
  • diferentes capacidades de indexación
  • productos diferentes, como mecanismos de replicación, tipos de datos geográficos, etc.

Esas funciones son realmente buenas si va a desarrollar algún sistema de software empresarial, en el que no sabe exactamente qué aplicaciones funcionarán con estos datos en unos pocos años. No creo que haya ninguna base de datos No / SQL disponible hoy en día que pueda competir en las características enumeradas con cualquiera de las "grandes" bases de datos SQL.

Por otro lado, las bases de datos NO / SQL muestran beneficios cuando no necesita muchas de esas cosas, por ejemplo, como base de datos de una aplicación web no necesitará un modelo de seguridad complejo, ya que puede ser en su mayoría solo un usuario (el proceso del servidor de aplicaciones) conectado a su DB en el momento de la producción. Por supuesto, también podría usar alguna base de datos SQL ligera como SQLlite para ese tipo de aplicaciones (y muchas personas lo hacen), pero también debe considerar la estructura de los datos que va a almacenar. Por ejemplo, un sistema de blog, un foro de control de calidad, un sistema de administración de contenido, una wiki: hay mucho texto o código html o código xml para almacenar, y menos datos administrativos. Eso puede ser sistemas donde NO / SQL puede mostrar sus beneficios.

    
respondido por el Doc Brown 19.09.2011 - 08:25
5

Hay solo un escenario en el que NoSQL es el camino a seguir. Y es entonces cuando necesita ser muy muy flexible con respecto al tráfico de base de datos.

Eso significa que debe esperar que, de repente, las solicitudes de base de datos exploten por un factor de, digamos, 10 o 100. La capacidad de reaccionar ante tales situaciones se denomina elasticidad.

Aquí tiene un problema con las bases de datos relacionales clásicas, debido a su especialización en la optimización de JOIN, no se pueden copiar a otro servidor mientras se garantiza la integridad relacional. E incluso luego, copiar esas enormes bases de datos lleva mucho tiempo.

Así que para lidiar con la explosión de situaciones de solicitud, las compañías crearon diferentes conceptos de base de datos especializados para eso.

Si no tiene que esperar tales fluctuaciones extremas en su solicitud de carga, entonces el relacional es el camino a seguir. Y tal vez para siempre, porque lo que mucha gente no entiende es que la relación no es solo una palabra de tecnología del siglo pasado: la información casi siempre es inherentemente de naturaleza vectorial y, por lo tanto, relacional.

    
respondido por el Raffael 19.09.2011 - 10:11

Lea otras preguntas en las etiquetas