2010-08-06 10 views
8

He leído algún artículo dice que RDBMS como MySQL no es bueno en escalable, pero NoSQL como MongoDB puede fragmentar así. Quiero saber qué característica que el RDBMS provisto hace a sí mismo no puede fragmentar bien.NoSQL RDBMS tradicional no es bueno en escalable

+0

¿Estás diciendo "compartida", o "Fragmento"? – StingyJack

+0

¿O fragmentado? (como en Lucene)? – bmargulies

+1

[Fragmento] (http://en.wikipedia.org/wiki/Shard_%28database_architecture%29), como en sharding su base de datos en particiones separadas. –

Respuesta

30

mayoría de los sistemas RDBMS garantizan la llamada ACID properties. La mayoría de estas propiedades se reducen a consistencia; cada modificación en sus datos transferirá su base de datos de un estado consistente a otro estado consistente.

Por ejemplo, si se actualiza varios registros en una sola transacción, la base de datos se asegurará de que los registros implicados no se modificará por otras consultas, siempre que la transacción no se ha completado. Por lo tanto, durante la transacción, varias tablas pueden bloquearse para su modificación. Si esas tablas están distribuidas en múltiples fragmentos/servidores, tomará más tiempo adquirir los bloqueos apropiados, actualizar los datos y liberar los bloqueos.

Los CAP theorem estados que una (es decir, escalable) sistema distribuido no puede garantizar todas las siguientes propiedades al mismo tiempo:

  • consistencia
  • disponibilidad
  • tolerancia partición

RDBMS los sistemas garantizan la coherencia. Sharding hace que el sistema sea tolerante a la partición. Del teorema se desprende que, por lo tanto, el sistema no garantiza la disponibilidad. Es por eso que un RDBMS estándar no puede escalar muy bien: no podrá garantizar la disponibilidad. ¿Y de qué sirve una base de datos si no puede acceder a ella?

bases de datos NoSQL caen coherencia en favor de la disponibilidad. Es por eso que son mejores en escalabilidad.

No estoy diciendo que los sistemas RDBMS no pueden escalar en absoluto, es sólo más difícil. This article describe algunos de los posibles esquemas de fusión y los problemas que puede encontrar. La mayoría de los enfoques sacrifican la coherencia, que es una de las características más importantes de los sistemas RDBMS, y que le impide escalar.

0

consultas que implican múltiples fragmentos son complejos (F. E. combinaciones entre tablas en diferentes fragmentos)

+0

¿Qué sucede si nunca uso join en RDBMS? ¿RDBMS se convertirá en shard fácilmente? Si es así, parece que no es necesario implementar una nueva base de datos llamada NoSQL. – shuitu

+2

Los RDBMS están destinados a ser un sistema de gestión para la base de datos 'relacional'. Y las relaciones entre los datos se muestran mediante JOINs entre tablas. Si no está utilizando JOINs, significa que su base de datos no es relacional, por lo que puede mover NoSQL que son almacenes de clave/valor. –

Cuestiones relacionadas