¿Cuál es la diferencia entre BigQuery y BigTable? [cerrado]


82

¿Hay alguna razón por la que alguien usaría BigTable en lugar de BigQuery? Ambos parecen admitir operaciones de lectura y escritura, y la última ofrece también operaciones avanzadas de "consulta".

Necesito desarrollar una red de afiliados (por lo tanto, necesito realizar un seguimiento de los clics y las 'ventas'), así que estoy bastante confundido por la diferencia porque bigQuery parece ser simplemente bigTable con una mejor API.


Yo diría que BigTable es más como un Cloud Datastore de bajo nivel y menos administrado para las personas que necesitan un mejor rendimiento.
dyeray

1
Este hilo SO anterior también puede ayudar: stackoverflow.com/questions/34437572/…
Elliott Brossard

@dyeray, sí, lo sé, pero ¿hay alguna razón para que alguien mantenga los mismos datos en BigTable y BigQuery en lugar de solo en BigQuery?
El usuario sin sombrero

BigTable es muy bueno en búsquedas de una sola fila o de rango pequeño. BigQuery es muy bueno en el panorama general. Si desea análisis con desglose eficiente, use BigQuery para análisis a gran escala y BigTable para análisis en rangos pequeños.
Solomon Duskis

Comparación de propiedades del sistema Google BigQuery frente a Google Cloud Bigtable frente a Google Cloud Datastore. ! imagen (¡Descargo de responsabilidad! Copiado de db-engines.com)
Le Khiem

Respuestas:


104

La diferencia es básicamente esta:

BigQuery es un motor de consultas para conjuntos de datos que no cambian mucho o cambian al agregar. Es una excelente opción cuando sus consultas requieren un "escaneo de tabla" o la necesidad de buscar en toda la base de datos. Piense en sumas, promedios, recuentos, agrupaciones. BigQuery es lo que usa cuando ha recopilado una gran cantidad de datos y necesita hacer preguntas al respecto.

BigTable es una base de datos. Está diseñado para ser la base de una gran aplicación escalable. Use BigTable cuando cree cualquier tipo de aplicación que necesite leer y escribir datos, y la escala es un problema potencial.


2
en el segundo párrafo, quisiste decir Use BigTable: o)
Mikhail Berlyant

@MikhailBerlyant gracias, editado
Michael Manoochehri

3
Una convención de nomenclatura poco afortunada de Google aquí. Cuando pienso normalmente en SQL, pienso en la estructura de datos tabulares, mientras que cuando pienso en consultas, pienso en el valor clave o el tipo de base de datos de búsqueda. En este caso, BigTable es No-SQL mientras que BigQuery Sql database.
Maksood

@Michael Manoochehri cloud.google.com/bigquery/… por favor lea la cita a continuación:
gstackoverflow

Puede compartir el acceso a una tabla externa permanente con usuarios (incluidas cuentas de servicio) o grupos. Para consultar la tabla externa, sus usuarios o grupos deben tener (como mínimo): El rol bigquery.dataViewer en el nivel del conjunto de datos o superior para acceder al conjunto de datos que contiene la tabla externa El rol bigquery.user al nivel del proyecto o superior para ejecutar trabajos de consulta La función bigtable.reader en Cloud Bigtable, que proporciona acceso de solo lectura a metadatos y tablas
gstackoverflow

80

Google Cloud: diagrama de flujo de decisiones de opciones de base de datos de GCP

Esto puede ayudar un poco a decidir entre los diferentes almacenes de datos que ofrece la nube de Google (¡Descargo de responsabilidad! Copiado de la página de Google Cloud)

Si su requisito es una base de datos en vivo, BigTable es lo que necesita ( aunque no es realmente un sistema OLTP ). Si se trata más de un propósito analítico, entonces BigQuery es lo que necesita.

Piense en OLTP frente a OLAP ; O si está familiarizado con Cassandra vs Hadoop, BigTable equivale aproximadamente a Cassandra, BigQuery equivale aproximadamente a Hadoop (de acuerdo, no es una comparación justa, pero entiendes la idea)

https://cloud.google.com/images/storage-options/flowchart.svg

Nota

Tenga en cuenta que Bigtable no es una base de datos relacional y no admite consultas SQL o JOINs, ni admite transacciones de varias filas. Además, no es una buena solución para pequeñas cantidades de datos. Si desea un OLTP RDBMS, es posible que deba mirar cloudSQL (mysql / postgres) o spanner.

Perspectiva de costos

https://stackoverflow.com/a/34845073/6785908 . Citando las partes relevantes aquí.

El costo total se reduce a la frecuencia con la que "consultará" los datos. Si es una copia de seguridad y no repites eventos con demasiada frecuencia, será muy barato. Sin embargo, si necesita reproducirlo diariamente una vez, comenzará a activar el escaneo de 5 $ / TB muy fácilmente. También nos sorprendió lo baratos que eran las inserciones y el almacenamiento, pero esto es ofc porque Google espera que ejecute consultas costosas en algún momento en ellos. Sin embargo, tendrás que diseñar alrededor de algunas cosas. Por ejemplo, las inserciones de transmisión de AFAIK no tienen garantías de que se escriban en la tabla y tiene que sondear con frecuencia en la cola de la lista para ver si realmente se escribió. Sin embargo, el seguimiento se puede hacer de manera eficiente con el decorador de tablas de rango de tiempo (sin pagar por escanear todo el conjunto de datos).

Si no le importa el pedido, incluso puede publicar una mesa de forma gratuita. Entonces no es necesario ejecutar una 'consulta'.

Editar 1

Cloud Spanner es relativamente joven, pero potente y prometedor (y también escandalosamente caro). Al menos, el marketing de Google afirma que sus características son las mejores de ambos mundos (RDBMS tradicional y noSQL)

ingrese la descripción de la imagen aquí


Puede compartir el acceso a una tabla externa permanente con usuarios (incluidas las cuentas de servicio) o grupos. Para consultar la tabla externa, sus usuarios o grupos deben tener (como mínimo): El rol bigquery.dataViewer en el nivel del conjunto de datos o superior para acceder al conjunto de datos que contiene la tabla externa El rol bigquery.user al nivel del proyecto o superior para ejecutar trabajos de consulta La función bigtable.reader en Cloud Bigtable que proporciona acceso de solo lectura a metadatos y tablas
gstackoverflow

Tomé la cita anterior de cloud.google.com/bigquery/… . ¿Por qué para acceder a bigtable necesito un permiso que contenga la palabra bigquery ?
gstackoverflow

-3

BigQuery y Cloud Bigtable no son lo mismo. Bigtable es una base de datos NoSQL basada en Hadoop, mientras que BigQuery es un almacén de datos basado en SQL. Tienen escenarios de uso específicos.

En términos muy breves y sencillos;

  • Si no necesita soporte para transacciones ACID o si sus datos no están muy estructurados, considere Cloud Bigtable.
  • Si necesita consultas interactivas en un sistema de procesamiento analítico en línea (OLAP), considere BigQuery.

5
Bigtable no es una base de datos NoSQL basada en Hadoop, de hecho es todo lo contrario: basado en el documento técnico de Bigtable, se creó HBase (NoSQL basado en Hadoop). Sin embargo, debido a esto, comparten una API similar (¿la misma?).
Igor Dvorzhak
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.