2009-04-23 19 views
27

DuplicadosBigTable de Google frente a una Base de Datos Relacional

No sé mucho acerca de BigTable de Google, pero estoy preguntando cuál es la diferencia entre BigTable de Google y bases de datos relacionales como MySQL. ¿Cuáles son las limitaciones de ambos?

+2

Varios dups en la barra lateral "Relacionada" allí. http: // stackoverflow.com/questions/144001/choosing-a-database-type –

Respuesta

30

Bigtable es la invención de Google para lidiar con la enorme cantidad de información que la empresa trata habitualmente. Un conjunto de datos Bigtable puede crecer hasta alcanzar un tamaño inmenso (muchos petabytes) con almacenamiento distribuido en una gran cantidad de servidores. Los sistemas que usan Bigtable incluyen proyectos como el índice web de Google y Google Earth.

Según Google whitepaper sobre el tema:

Un Bigtable es una persistente distribuido escasa mapa, y multidimensional ordenada. El mapa está indexado por una clave de fila, una clave de columna y una marca de tiempo; cada valor en el mapa es una matriz no interpretada de bytes.

La mecánica interna de Bigtable versus, digamos, MySQL son tan diferentes que dificultan la comparación, y los objetivos previstos tampoco se superponen demasiado. Pero se puede pensar en Bigtable como una base de datos de una sola tabla. Imagine, por ejemplo, las dificultades con las que se encontraría si intentara implementar todo el sistema de búsqueda web de Google con una base de datos MySQL. Bigtable se creó para resolver esos problemas.

Los conjuntos de datos Bigtable se pueden consultar desde servicios como AppEngine usando un lenguaje llamado GQL ("gee-kwal") que se basa en un subconjunto de SQL. Perceptiblemente faltante en GQL es cualquier tipo de comando JOIN. Debido a la naturaleza distribuida de una base de datos de Bigtable, realizar una unión entre dos tablas sería terriblemente ineficiente. En cambio, el programador tiene que implementar dicha lógica en su aplicación o diseñar su aplicación para no necesitarla.

+5

"Imagínese, por ejemplo, las dificultades con las que se encontraría si intentara implementar todo el sistema de búsqueda web de Google con una base de datos MySQL" ¿Cuáles serían las dificultades? – Moeb

+4

@Tamaño de tabla de Amoeba, tamaño de índice, redundancia, acceso simultáneo masivamente paralelo y muchos otros. MySQL funciona bien hasta cierto punto, pero escalar y expandirse a varias máquinas se convierte en una pesadilla de coordinación. – tylerl

+0

Estaba hablando de BigTable durante la cena con un ingeniero de Google la otra noche. Un punto muy importante, para mí, fue que las bases de datos no relacionales son mucho mejores cuando tienes varios servidores que almacenan datos simultáneamente. Por lo tanto, no termina con referencias duplicadas y la combinación y consulta de datos es más fluida. Definitivamente puedo ver los beneficios de las bases de datos no relacionales, especialmente cuando se trata de una escalabilidad masiva. – thomallen

14

BigTable de Google y otros proyectos similares (por ejemplo: CouchDB, HBase) son sistemas de bases de datos que están orientados de manera que los datos son en su mayoría denormalized (es decir, duplicados y agrupar).

Las principales ventajas son: - Únete operaciones son menos costosos debido a la desnormalización - Replicación/distribución de los datos es menos costoso debido a la independencia de datos (es decir, si se desea distribuir los datos entre dos nodos, es probable que ganó no tiene el problema de tener una entidad en un nodo y otra entidad relacionada en otro nodo porque se agrupan datos similares)

Este tipo de sistemas están indicados para aplicaciones que necesitan alcanzar una escala óptima (es decir, agrega más nodos al sistema y el rendimiento aumenta proporcionalmente). En un ORM como MySQL u Oracle, cuando comienzas a agregar más nodos si unes dos tablas que no están en el mismo nodo, el costo de la unión es mayor. Esto se vuelve importante cuando se trata de grandes volúmenes.

Los ORM son agradables debido a la riqueza del modelo de almacenamiento (tablas, uniones, fks). Las bases de datos distribuidas son agradables debido a la facilidad de escala.

+9

Pero si los datos no están normalizados, las actualizaciones serían más difíciles ya que podría necesitar reflejar la misma información en varios lugares, y aún peor si son nodos diferentes. ¿Cómo manejan eso las bases de datos desnormalizadas? – Moeb

+7

Erm ... ¿No está confundiendo el término * ORM * con * RDBMS *? –

Cuestiones relacionadas