database - cual - Bigtable de Google vs. Base de datos relacional
bigtable price (2)
BigTable de Google y otros proyectos similares (por ejemplo: CouchDB , HBase ) son sistemas de base de datos que están orientados para que los datos estén en su mayoría denormalized (es decir, duplicados y agrupados).
Las principales ventajas son: - Las operaciones de unión son menos costosas debido a la desnormalización. - La replicación / distribución de datos es menos costosa debido a la independencia de los datos (es decir, si desea distribuir datos entre dos nodos, probablemente no tendrá 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 comienza a agregar más nodos si une 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, combinaciones, fks). Las bases de datos distribuidas son agradables debido a la facilidad de escala.
Duplicados
No sé mucho sobre Bigtable de Google, pero me pregunto cuál es la diferencia entre las bases de datos relacionales y de Bigtable de Google como MySQL. ¿Cuáles son las limitaciones de ambos?
Bigtable es un invento de Google para lidiar con la gran cantidad de información que la compañía trata regularmente. Un conjunto de datos de Bigtable puede crecer hasta un tamaño inmenso (muchos petabytes) con almacenamiento distribuido en una gran cantidad de servidores. Los sistemas que utilizan Bigtable incluyen proyectos como el índice web de Google y Google Earth.
Según Google whitepaper sobre el tema:
Un Bigtable es un mapa ordenado multidimensional dispersado, distribuido y persistente. El mapa está indexado por una clave de fila, clave de columna y una marca de tiempo; Cada valor en el mapa es una matriz de bytes no interpretada.
La mecánica interna de BigTable frente a, digamos, MySQL es tan diferente que dificulta la comparación, y los objetivos previstos tampoco se superponen mucho. Pero puedes pensar en Bigtable un poco como una base de datos de una sola tabla. Imagine, por ejemplo, las dificultades con las que se encontraría si tratara de implementar todo el sistema de búsqueda web de Google con una base de datos MySQL: Bigtable se construyó para resolver esos problemas.
Los conjuntos de datos de Bigtable se pueden consultar desde servicios como AppEngine usando un lenguaje llamado GQL ("gee-kwal") que se basa en un subconjunto de SQL. En GQL, de manera notoria, falta cualquier tipo de comando JOIN
. Debido a la naturaleza distribuida de una base de datos 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 que no la necesite.