Google Cloud Datastore vs Google Cloud Bigtable

123

Qual é a diferença entre o Google Cloud Bigtable e o armazenamento de dados do Google Cloud Datastore / App Engine e quais são as principais vantagens / desvantagens práticas? O AFAIK Cloud Datastore é construído sobre o Bigtable.

Andrei F
fonte
8
Por favor não feche. atualmente não há documentação oficial sobre isso e o Google provavelmente comentará aqui.
Zig Mandel
Verificar isso terrenceryan.com/blog/index.php/...
Zig Mandel

Respostas:

96

Com base na experiência com o Datastore e na leitura dos documentos do Bigtable , as principais diferenças são:

  • O Bigtable foi originalmente projetado para compatibilidade com o HBase, mas agora possui bibliotecas de clientes em vários idiomas . O armazenamento de dados era originalmente mais voltado para desenvolvedores de aplicativos Web Python / Java / Go (originalmente App Engine)
  • O Bigtable é 'um pouco mais IaaS' do que o Datastore, pois não está 'apenas lá', mas exige que um cluster seja configurado .
  • O Bigtable suporta apenas um índice - a 'chave de linha' (a chave de entidade no armazenamento de dados)
    • Isso significa que as consultas estão na chave, ao contrário das propriedades indexadas do Datastore
  • O Bigtable suporta atomicidade apenas em uma única linha - não há transações
  • Mutações e exclusões parecem não ser atômicas no Bigtable, enquanto o Datastore fornece consistência eventual e forte, dependendo do método de leitura / consulta
  • O modelo de cobrança é muito diferente:
    • Cobranças do armazenamento de dados para operações de leitura / gravação, armazenamento e largura de banda
    • Bigtable encargos para 'nós' , armazenamento e largura de banda
tx802
fonte
97

Bigtable é otimizado para grandes volumes de dados e análises

  • O Cloud Bigtable não replica dados entre zonas ou regiões (os dados em um único cluster são replicados e duráveis), o que significa que o Bigtable é mais rápido e mais eficiente, e os custos são muito mais baixos, embora sejam menos duráveis ​​e disponíveis na configuração padrão
  • Ele usa a API HBase - não há risco de aprisionamento ou novos paradigmas para aprender
  • Ele é integrado às ferramentas de Big Data de código aberto, o que significa que você pode analisar os dados armazenados no Bigtable na maioria das ferramentas de análise que os clientes usam (Hadoop, Spark, etc.)
  • Bigtable é indexado por uma única chave de linha
  • Bigtable está em uma única zona

O Cloud Bigtable foi projetado para empresas e empresas maiores, que geralmente têm necessidades de dados maiores com cargas de trabalho complexas de back-end.

O armazenamento de dados é otimizado para fornecer dados transacionais de alto valor para aplicativos

  • O Cloud Datastore possui disponibilidade extremamente alta com replicação e sincronização de dados
  • O armazenamento de dados, devido à sua versatilidade e alta disponibilidade, é mais caro
  • O armazenamento de dados é mais lento na gravação de dados devido à replicação síncrona
  • O armazenamento de dados tem uma funcionalidade muito melhor em transações e consultas (uma vez que existem índices secundários)
Les Vogel - Google DevRel
fonte
3
Bigtable agora replica através de zonas para fornecer disponibilidade em face de uma queda zonal: cloudplatform.googleblog.com/2018/07/...
Brandon Durette
Eu pensei que a transação não é um forte ponto de venda para o armazenamento de dados. De sua [doc | cloud.google.com/datastore/docs/concepts/transactions] "Uma transação é um conjunto de operações do Google Cloud Datastore em uma ou mais entidades em até 25 grupos de entidades." Além disso, o armazenamento de dados é construído sobre o Bigtable, certo?
Zyxue 9/08/19
19

Bigtable e Datastore são extremamente diferentes. Sim, o armazenamento de dados é construído sobre o Bigtable, mas isso não torna nada parecido. É como dizer que um carro é construído sobre rodas e, portanto, um carro não é muito diferente das rodas.

Bigtable e Datastore fornecem modelos de dados muito diferentes e semânticas muito diferentes na forma como os dados são alterados.

A principal diferença é que o Datastore fornece transações ACID do tipo banco de dados SQL em subconjuntos de dados conhecidos como grupos de entidades (embora a linguagem de consulta GQL seja muito mais restritiva que SQL). Bigtable é estritamente NoSQL e vem com garantias muito mais fracas.

user2771609
fonte
3
Você estava indo bem até o último parágrafo. O armazenamento de dados fornece transações, mas não são nada como SQL e definitivamente não são ACID.
Daniel Roseman
4
@DanielRoseman Na verdade, faz muito. Aqui está uma citação do artigo sobre Megastore (no qual o Datastore é construído): "Cada grupo de entidades do Megastore funciona como um minibanco de dados que fornece semântica ACID serializável". "particionamos o armazenamento de dados e replicamos cada partição separadamente, fornecendo semântica ACID completa dentro das partições". (research.google.com/pubs/pub36971.html)
user2771609
Eu acho que é enganoso chamá-lo de sql. Um subconjunto, no máximo. Não tem contagem / grupo eficiente, todas as consultas devem usar índices etc
Zig Mandel
4
Linguagem de consulta e isolamento de transação são coisas diferentes , você parece estar misturando-as. Estou fazendo uma reclamação sobre o último ( transações ACID ). No seu comentário, você está assumindo que estou falando do primeiro. Talvez alguns hífens esclareçam? Mencionarei explicitamente o problema do idioma da consulta para remover qualquer dúvida.
User2771609
8

Se você lê artigos, BigTable é este e Datastore é MegaStore . O armazenamento de dados é BigTable mais replicação, transação e índice. (e é muito mais caro).

Justin Zhang
fonte
É realmente mais caro? o mínimo para o BigTable é de 3 nós, no disco rígido de 10 GB é de US $ 1400 / mês. Parece bem alto, não?
Benji
@ Ben, na minha experiência passada era. O armazenamento de dados é cobrado por operação em vez de por hora. (Se você não usa muito, então não paga muito ao Datastore. Mas se você tiver tráfego intenso e acho que o bigtable é muito mais barato.) Acho que o Bigtable reivindica 10 mil operações por segundo? Na realidade, achei que era mais baixo, como cerca de 1-2k, mas ainda assim três nós são> 5k / s. Se você mantiver essa taxa de transferência por um mês e mapeá-la para os preços do armazenamento de dados, provavelmente será muito maior que 1,4k.
Justin Zhang
O link do MegaStore está quebrado
gstackoverflow 11/02
7

Tentarei resumir todas as respostas acima, além do que é dado nos Fundamentos de Big Data e Machine Learning do Coursea 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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

Verifique também esta imagem: insira a descrição da imagem aqui

insira a descrição da imagem aqui

Adelin
fonte
2

Um ponto relativamente menor a considerar, a partir de novembro de 2016, a biblioteca cliente bigtable python ainda está em Alpha, o que significa que a mudança futura pode não ser compatível com versões anteriores. Além disso, a biblioteca python bigtable não é compatível com o ambiente padrão do App Engine. Você tem que usar o flexível.

YSC
fonte
Em novembro de 2016, o mesmo acontece com Java
Aram Paronikyan 2/16
2

Esse pode ser outro conjunto de diferenças importantes entre o Google Cloud Bigtable e o Google Cloud Datastore, além de outros serviços. O conteúdo mostrado na imagem abaixo também pode ajudá-lo a selecionar o serviço certo.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Kedar Kodgire
fonte
1

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui

 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
fonte
0

O armazenamento de dados está mais pronto para aplicativos e adequado para uma ampla gama de serviços, especialmente para microsserviços.

A tecnologia subjacente do Datastore é Big Table, portanto, você pode imaginar que o Big Table é mais poderoso.

O armazenamento de dados vem com operação gratuita de 20 mil por dia. Você pode hospedar um servidor com banco de dados confiável com custo zero.

Você também pode verificar esta biblioteca ORM do Datastore, que vem com muitos recursos excelentes https://www.npmjs.com/package/ts-datastore-orm

Tsang Kin Ho
fonte