web-dev-qa-db-fra.com

Google Bigtable vs BigQuery pour stocker un grand nombre d'événements

Contexte

Nous aimerions stocker nos événements immuables dans un service géré (de préférence). La taille moyenne d'un événement est inférieure à 1 Kb et nous avons entre 1 et 5 événements par seconde. La principale raison du stockage de ces événements est de pouvoir les rejouer (peut-être en utilisant l'analyse de table) une fois que nous aurons créé de futurs services qui pourraient être intéressés par ces événements. Puisque nous sommes dans Google Cloud, nous considérons évidemment les services de Google comme le premier choix.

Je soupçonne que Bigtable serait un bon moyen pour cela, mais selon le calculateur de prix cela nous coûtera plus de 1400 USD par mois (ce qui pour nous est un big deal):

enter image description here

Regarder quelque chose comme BigQuery rend un prix de 3 USD par mois (si je ne manque pas quelque chose d'essentiel):

enter image description here

Même si une base de données sans schéma nous conviendrait mieux, nous serions très bien de stocker essentiellement nos événements sous forme de blob avec quelques métadonnées.

Questions

Pourrions-nous utiliser BigQuery pour cela au lieu de Bigtable pour réduire les coûts? Par exemple, BigQuery a quelque chose appelé insertions en streaming qui me semble être quelque chose que nous pourrions utiliser. Y a-t-il quelque chose qui nous mordra à court ou à long terme dont je ne serais peut-être pas au courant si nous empruntions cette voie?

19
Johan

Bigtable est idéal pour les grands ensembles de données mutables (> = 1 To). Il a une faible latence sous charge et est géré par Google. Dans votre cas, je pense que vous êtes sur la bonne voie avec BigQuery.

10
Solomon Duskis

FYI

Cloud Bigtable n'est pas une base de données relationnelle; il ne prend pas en charge les requêtes ou jointures SQL, ni les transactions à plusieurs lignes. De plus, ce n'est pas une bonne solution pour de petites quantités de données (<1 To).

Considérez ces cas: - Si vous avez besoin d'une prise en charge SQL complète pour un système de traitement des transactions en ligne (OLTP), pensez à Google Cloud SQL.

Si vous avez besoin de requêtes interactives dans un système de traitement analytique en ligne (OLAP), pensez à Google BigQuery.

Si vous devez stocker des objets blob immuables de plus de 10 Mo, tels que des images ou des films volumineux, pensez à Google Cloud Storage.

Si vous devez stocker des objets hautement structurés ou si vous avez besoin de la prise en charge des transactions ACID et des requêtes de type SQL, pensez à Cloud Datastore.

8

Le le coût global se résume à la fréquence à laquelle vous "interrogerez" les données. Si c'est une sauvegarde et que vous ne rejouez pas les événements trop souvent, ce sera très bon marché. Cependant, si vous devez le relire une fois par jour, vous commencez trop facilement à déclencher le balayage à 5 $/To. Nous avons également été surpris de constater à quel point les insertions et le stockage étaient bon marché, mais cela est souvent dû au fait que Google s'attend à ce que vous exécutiez des requêtes coûteuses à un moment donné sur eux. Vous devrez cependant concevoir quelques éléments. Par exemple. Les insertions de streaming AFAIK n'ont aucune garantie d'être écrites sur la table et vous devez interroger fréquemment en fin de liste pour voir si elle a vraiment été écrite. La mise en queue peut être effectuée efficacement avec le décorateur de table de plage de temps, cependant (ne payant pas pour numériser l'ensemble de données).

Si vous ne vous souciez pas de la commande, vous pouvez même lister un tableau gratuitement. Pas besoin alors de lancer une 'requête'.

6

Google Cloud - GCP database options decision flowchart

Cet organigramme peut aider à choisir entre différentes offres de stockage dans le cloud de Google (Clause de non-responsabilité! A copié cette image depuis la page de Google cloud)

Si votre cas d'utilisation est une base de données en direct (disons, backend d'un site Web), BigTable est ce dont vous avez besoin (c'est toujours pas vraiment un [~ # ~] oltp [~ # ~] système cependant). S'il s'agit plutôt d'un objectif d'analyse de données/de datawarehouse, alors BigQuery est ce dont vous avez besoin.

Pensez à OLTP vs OLAP; ou si vous êtes familier avec Cassandra et Hadoop, BigTable équivaut à peu près à Cassandra, BigQuery équivaut à peu près à Hadoop (d'accord, pas un comparaison juste, mais vous avez l'idée)

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

Veuillez garder à l'esprit que Bigtable n'est pas une base de données relationnelle, c'est une solution noSQL sans fonctionnalités SQL comme JOIN, etc. Si vous voulez un RDBMS OLTP, vous pourrait avoir besoin de regarder cloudSQL (mysql/postgres) ou clé .

La clé cloud est relativement jeune, mais puissante et prometteuse. Au moins, le marketing Google affirme que ses fonctionnalités sont les meilleures des deux mondes (SGBDR traditionnel et noSQL)

enter image description here

Aspect des coûts

L'aspect des coûts est déjà bien couvert ici https://stackoverflow.com/a/34845073/6785908

Je sais que c'est une réponse très tardive, mais l'ajouter de toute façon au cas où cela pourrait aider quelqu'un d'autre à l'avenir.

3
so-random-dude

Difficile à résumer mieux qu'il ne l'est déjà fait par Google .

Je pense que vous devez comprendre comment vous allez utiliser (rejouer) vos données (événements) et cela peut vous aider à prendre la décision finale.

Jusqu'à présent, BigQuery ressemble à un meilleur choix pour vous

2
Mikhail Berlyant