2011-12-30 10 views
6

Me pregunto cómo y por qué "unirse" reduce la escalabilidad en el sistema de bases de datos distribuidas (relacionales) a gran escala.¿Por qué las "combinaciones" reducen la escalabilidad en el sistema de bases de datos distribuidas a gran escala?

Gracias.

+0

Debido une son un (relativamente) operación costosa en comparación con la recuperación de una estructura sin normalizar. – Oded

+0

Quiero decir, ¿qué tan caro es? ¿Por qué es caro? ¿Por qué está bien en un solo servidor, pero no está bien en varios servidores? – janetsmith

+2

También son relativamente caros en un único servidor. Si está hablando de combinaciones _across_ servidores, eso es mucho, mucho, mucho más costoso. – Oded

Respuesta

8

Como consideración general, hay sobrecarga significativa (por ejemplo, no usuario cálculo) en un sistema distribuido que presentan una y fachada 'coherente' 'unificado'.

Simplemente considerar estos factores:

  • nodos distintos (por ejemplo, servidores) son máquinas distintas. Esto significa la probabilidad de que n nodos participen en una acción distribuida, p. una unión: estar en un estado óptimo (por ejemplo, tener las tablas correctas en la caché, o tener los bloqueos apropiados adquiridos) es bajo. Así que aquí está un poco de la sobrecarga para que cada nodo se ponga en el estado apropiado.

  • naturalmente necesitan comunicarse para coordinar. Por lo tanto, hay una vibración de red entre los nodos y esas latencias no son insignificantes.

  • por encima de los gastos generales, a su vez, aumentar el tiempo promedio de solicitudes de servicio y mantenimiento, y por lo tanto reducir la disponibilidad (en términos de la capacidad del sistema).

La escalabilidad se convierte en un problema ya que ninguno de los anteriores es O (1). En el mejor de los casos, puede esperar O (log n) y podría ser tan malo como O (n^2). Eso hace maravillas para matar la escalabilidad (que por definición significa la capacidad del sistema para escalar a un mayor número de nodos).

Los anteriores son una parte de la motivación para sistemas nosql, por ejemplo si uno no requiere coordinación entre nodos para consultas de servicio, entonces el rendimiento es sustancialmente mejor. (Como se puede ver, no es magia - estamos más que sacrificar la corrección sistémica para el rendimiento.)

Cuestiones relacionadas