update overview google bigquery big google-app-engine google-cloud-datastore google-cloud-bigtable

google-app-engine - overview - google cloud storage options



Google Cloud Bigtable vs Google Cloud Datastore (7)

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 de 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)

¿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.


Acabo de encontrar esta útil analogía oculta en la página de longitud sobre la coherencia eventual en la documentación del almacén de datos (énfasis mío):

Una práctica es combinar Cloud Datastore y BigQuery para cumplir con diferentes requisitos comerciales. Use Cloud Datastore para el procesamiento transaccional en línea (OLTP) requerido para la lógica de la aplicación principal y use BigQuery para el procesamiento analítico en línea (OLAP) para las operaciones de back-end. Puede ser necesario implementar un flujo continuo de exportación de datos desde Cloud Datastore a BigQuery para mover los datos necesarios para esas consultas.


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.


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

  • Bigtable parece estar diseñado para la compatibilidad con HBase, mientras que Datastore está 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 configured 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 admite atomicidad solo 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 charges por ''nodos'' , almacenamiento y ancho de banda

Si lees documentos, BigTable es this 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).


Un punto relativamente menor a tener en cuenta, a partir de noviembre de 2016, la library 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.


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

+---------------------+------------------------------------------------------------------+------------------------------------------+--+ | 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 | | +---------------------+------------------------------------------------------------------+------------------------------------------+--+

Mira esta imagen también: