Google Cloud Bigtable vs Google Cloud Datastore

123

¿Cuál es la diferencia entre Google Cloud Bigtable y el almacén de datos de Google Cloud Datastore / App Engine, y cuáles son las principales ventajas / desventajas prácticas? AFAIK Cloud Datastore está construido sobre Bigtable.

Andrei F
fuente
8
Por favor no cierres. Actualmente no hay documentación oficial sobre estos y es probable que Google comente aquí.
Zig Mandel

Respuestas:

96

Según la experiencia con Datastore y la lectura de los documentos de Bigtable , las principales diferencias son:

  • Bigtable fue diseñado originalmente para compatibilidad con HBase, pero ahora tiene bibliotecas de cliente en varios idiomas . Datastore estaba originalmente más orientado a los desarrolladores de aplicaciones web Python / Java / Go (originalmente App Engine)
  • Bigtable es 'un poco más IaaS' que Datastore en que no está 'solo allí' sino que requiere que se configure un clúster .
  • Bigtable solo admite un índice: la 'clave de fila' (la clave de entidad en el almacén de datos)
    • Esto significa que las consultas están en la clave, a diferencia de las propiedades indexadas del almacén de datos
  • Bigtable solo admite atomicidad en una sola fila: no hay transacciones
  • Las mutaciones y eliminaciones parecen no ser atómicas en Bigtable, mientras que Datastore proporciona una consistencia eventual y fuerte, dependiendo del método de lectura / consulta
  • El modelo de facturación es muy diferente:
    • Cargos del almacén de datos para operaciones de lectura / escritura, almacenamiento y ancho de banda
    • Bigtable cobra por 'nodos' , almacenamiento y ancho de banda
tx802
fuente
97

Bigtable está optimizado para grandes volúmenes de datos y análisis.

  • Cloud Bigtable no replica datos en zonas o regiones (los datos dentro de un solo clúster son replicados y duraderos), lo que significa que Bigtable es más rápido y más eficiente, y los costos son mucho más bajos, aunque es menos duradero y está disponible en la configuración predeterminada
  • Utiliza la API HBase : no hay riesgo de bloqueo o nuevos paradigmas para aprender
  • Está integrado con las herramientas de Big Data de código abierto, lo que significa que puede analizar los datos almacenados en Bigtable en la mayoría de las herramientas de análisis que usan los clientes (Hadoop, Spark, etc.)
  • Bigtable se indexa con una única clave de fila
  • Bigtable está en una sola zona

Cloud Bigtable está diseñado para grandes empresas y empresas que a menudo tienen mayores necesidades de datos con cargas de trabajo de back-end complejas.

El almacén de datos está optimizado para servir datos transaccionales de alto valor a las aplicaciones

  • Cloud Datastore tiene una disponibilidad extremadamente alta con replicación y sincronización de datos
  • El almacén de datos, debido a su versatilidad y alta disponibilidad, es más costoso
  • El almacén de datos es más lento al escribir datos debido a la replicación sincrónica
  • El almacén de datos tiene una funcionalidad mucho mejor en torno a transacciones y consultas (ya que existen índices secundarios)
Les Vogel - Google DevRel
fuente
3
Bigtable ahora se replica en todas las zonas para proporcionar disponibilidad ante un corte de zona: cloudplatform.googleblog.com/2018/07/…
Brandon DuRette
Pensé que la transacción no es un fuerte punto de venta para el almacén de datos. De su [doc | cloud.google.com/datastore/docs/concepts/transactions] "Una transacción es un conjunto de operaciones de Google Cloud Datastore en una o más entidades en hasta 25 grupos de entidades". Además, el almacén de datos está construido sobre Bigtable, ¿verdad?
zyxue
19

Bigtable y Datastore son extremadamente diferentes. Sí, el almacén de datos está construido sobre Bigtable, pero eso no lo convierte en algo así. Eso es como decir que un automóvil está construido sobre ruedas, por lo que un automóvil no es muy diferente de las ruedas.

Bigtable y Datastore proporcionan modelos de datos muy diferentes y una semántica muy diferente en cómo se modifican los datos.

La principal diferencia es que el Almacén de datos proporciona transacciones ACID similares a las de una base de datos SQL en subconjuntos de datos conocidos como grupos de entidades (aunque el lenguaje de consulta GQL es mucho más restrictivo que SQL). Bigtable es estrictamente NoSQL y viene con garantías mucho más débiles.

usuario2771609
fuente
3
Lo estabas haciendo bien hasta el último párrafo. El almacén de datos proporciona transacciones, pero no se parecen en nada a SQL y definitivamente no son ACID.
Daniel Roseman
44
@DanielRoseman En realidad, sí. Aquí hay una cita del documento sobre Megastore (en el que se basa Datastore): "Cada grupo de entidades Megastore funciona como una mini-base de datos que proporciona semántica ACID serializable". "particionamos el almacén de datos y replicamos cada partición por separado, proporcionando una semántica ACID completa dentro de las particiones". (research.google.com/pubs/pub36971.html)
usuario2771609
Creo que es engañoso llamarlo Sql. Un subconjunto a lo sumo. No tiene un conteo / grupo eficiente, todas las consultas deben usar índices, etc.
Zig Mandel
44
El lenguaje de consulta y el aislamiento de transacciones son cosas diferentes , parece que las estás mezclando. Estoy haciendo un reclamo sobre este último ( transacciones ACID ). En su comentario, asume que estoy hablando de lo primero. Tal vez algunos guiones aclararán? Mencionaré explícitamente el problema del lenguaje de consulta para eliminar cualquier duda.
user2771609
8

Si lees documentos, BigTable es esto y Datastore es MegaStore . El almacén de datos es BigTable más replicación, transacción e índice. (Y es mucho más caro).

Justin Zhang
fuente
¿Es realmente más caro? el mínimo para BigTable es de 3 nodos, con un disco duro de 10 GB es de $ 1400 / mes. Parece bastante alto no?
benji
@ben, en mi experiencia pasada lo fue. El almacén de datos se cobra por operación en lugar de por hora. (Si no lo usa tanto, sí, no le paga mucho a Datastore. Pero si tiene mucho tráfico y creo que bigtable es mucho más barato). ¿Creo que Bigtable reclama 10k operaciones por segundo? En realidad, encontré que era más bajo, como alrededor de 1-2k, pero aún 3 nodos es> 5k / s. Si mantiene ese rendimiento durante un mes y lo asigna a los precios del almacén de datos, probablemente sea mucho mayor que 1.4k.
Justin Zhang el
El enlace de MegaStore está roto
gstackoverflow
7

Voy a tratar de resumir todas las respuestas anteriores más lo que se ofrece en Coursea Google Cloud Platform Big Data y Machine Learning Fundamentals

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Comprueba esta imagen también: ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Adelin
fuente
2

Un punto relativamente menor a tener en cuenta, a partir de noviembre de 2016, la biblioteca cliente de bigtable python todavía está en Alpha, lo que significa que el cambio futuro podría no ser compatible con versiones anteriores. Además, la biblioteca de python bigtable no es compatible con el entorno estándar de App Engine. Tienes que usar el flexible.

YSC
fuente
A partir de noviembre de 2016, lo mismo es para Java
Aram Paronikyan
2

Este podría ser otro conjunto de diferencias clave entre Google Cloud Bigtable y Google Cloud Datastore junto con otros servicios. El contenido que se muestra en la imagen a continuación también puede ayudarlo a seleccionar el servicio adecuado.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Kedar Kodgire
fuente
1

ingrese la descripción de la imagen aquí

Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.

ingrese la descripción de la imagen aquí

 Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.
Tiago Medici
fuente
0

El almacén de datos está más preparado para la aplicación y es adecuado para una amplia gama de servicios, especialmente para microservicios.

La tecnología subyacente de Datastore es Big Table, por lo que puedes imaginar que Big Table es más poderosa.

El almacén de datos viene con una operación gratuita de 20K por día, puede esperar alojar un servidor con una base de datos confiable con un costo CERO.

También puede consultar esta biblioteca ORM de Datastore, viene con una gran cantidad de excelentes características https://www.npmjs.com/package/ts-datastore-orm

Tsang Kin Ho
fuente