CDC sur DynamoDB | Fusée


DynamoDB est une base de données NoSQL populaire disponible dans AWS. Il s’agit d’un service géré avec une configuration minimale et des coûts de paiement à l’utilisation. Les développeurs peuvent créer rapidement des bases de données qui stockent des objets complexes avec des schémas flexibles qui peuvent évoluer au fil du temps. DynamoDB est résilient et évolutif grâce à l’utilisation de techniques de partitionnement. Cette mise à l’échelle horizontale transparente est un énorme avantage qui permet aux développeurs de passer très rapidement d’une preuve de concept à un service produit.

Cependant, DynamoDB, comme de nombreuses autres bases de données NoSQL, est idéal pour le stockage de données évolutif et la récupération d’une seule ligne, mais laisse beaucoup à désirer en matière d’analyse. Avec les bases de données SQL, les analystes peuvent rapidement joindre, regrouper et rechercher dans des ensembles de données historiques. Avec NoSQL, le langage pour effectuer ces types de requêtes est souvent plus lourd, propriétaire, et joindre des données n’est pas possible ou n’est pas recommandé en raison de contraintes de performances.

Pour surmonter cela, Modification de la capture de données (CDC) Les techniques sont souvent utilisées pour copier les modifications de la base de données NoSQL dans une base de données d’analyse où les analystes peuvent effectuer des tâches de calcul plus lourdes sur des ensembles de données plus volumineux. Dans cet article, nous verrons comment CDC fonctionne avec DynamoDB et ses cas d’utilisation potentiels.

Fonctionnement de la capture de données modifiées sur DynamoDB

Nous avons précédemment discuté de la de nombreuses techniques CDC différentes disponible. DynamoDB utilise un modèle de type push dans lequel les modifications sont transmises à une entité en aval telle qu’une file d’attente ou un consommateur direct. DynamoDB envoie des événements concernant toutes les modifications apportées à un flux DynamoDB pouvant être consommées par des cibles en aval.

Habituellement, les modèles CDC basés sur le push sont plus complexes car ils nécessitent souvent un autre service pour agir en tant qu’intermédiaire entre le producteur et le consommateur des modifications. Cependant, les flux DynamoDB sont pris en charge de manière native dans DynamoDB et peuvent être simplement configurés et activés en appuyant simplement sur un bouton. En effet, il s’agit également d’un service géré au sein de AWS. CDC sur DynamoDB est facile car il vous suffit de configurer un consommateur et un autre magasin de données.

Cas d’utilisation pour CDC sur DynamoDB

Examinons quelques cas d’utilisation pour savoir pourquoi vous auriez besoin d’une solution CDC en premier lieu.

Archivage des données historiques

En raison de son évolutivité et de sa nature sans schéma, DynamoDB est souvent utilisé pour stocker des données de séries chronologiques telles que Données IdO ou des blogs. Le schéma des données dans ces sources peut changer en fonction de ce qui est enregistré à tout moment et elles écrivent souvent des données à des vitesses variables en fonction de l’utilisation actuelle. Cela fait de DynamoDB un excellent cas d’utilisation pour stocker ces données, car il peut gérer les schémas flexibles et peut également évoluer à la demande en fonction du débit de données.

Cependant, l’utilité de ces données diminue avec le temps à mesure que les données deviennent anciennes et obsolètes. Avec la tarification à l’utilisation, plus il y a de données stockées dans DynamoDB, plus cela coûte cher. Cela signifie que vous souhaitez uniquement utiliser DynamoDB comme magasin de données à chaud pour les ensembles de données fréquemment utilisés. Les données anciennes et obsolètes doivent être supprimées pour réduire les coûts et également contribuer à l’efficacité. Souvent, les entreprises ne veulent pas simplement supprimer ces données et veulent plutôt les déplacer ailleurs pour les archiver.

La configuration du flux CDC DynamoDB est un excellent cas d’utilisation pour résoudre ce problème. Les modifications peuvent être capturées et envoyées au flux de données afin qu’il puisse être archivé dans S3 ou un autre magasin de données et un une politique de conservation des données peut être mise en place sur les données dans DynamoDB pour les supprimer automatiquement après un certain laps de temps. Cela réduit les coûts de stockage dans DynamoDB car les données froides sont déchargées vers une plate-forme de stockage moins chère.

Analyse en temps réel sur DynamoDB

Comme indiqué précédemment, DynamoDB est excellent pour la récupération rapide des données, mais n’est pas conçu pour la récupération de données à grande échelle ou les requêtes complexes. Par exemple, supposons que vous ayez un jeu qui stocke les événements utilisateur pour chaque interaction et que ces événements soient écrits dans DynamoDB. En fonction du nombre d’utilisateurs jouant à tout moment, vous devez rapidement faire évoluer votre solution de stockage pour faire face au débit actuel, ce qui fait de DynamoDB un excellent choix.

Cependant, vous voulez maintenant construire un classement qui fournit des statistiques pour chacune de ces interactions et affiche les dix meilleurs joueurs en fonction d’une métrique particulière. Cette le classement devrait être mis à jour en temps réel au fur et à mesure que de nouveaux événements sont capturés. DynamoDB ne prend pas en charge nativement les agrégations de données en temps réel, il s’agit donc d’un autre cas d’utilisation pour l’utilisation de CDC sur une plate-forme d’analyse.



Rockset, un analyse en temps réel base de données, est un ajustement idéal pour ce scénario. Il a un connecteur intégré pour DynamoDB qui configure automatiquement le flux DynamoDB afin que les modifications soient ingérées dans Rockset en temps quasi réel. Les données sont automatiquement indexées dans Rockset pour des requêtes analytiques rapides et des requêtes SQL pour effectuer des agrégations et des calculs sur les données.

Des requêtes de latence en millisecondes peuvent être configurées pour récupérer en permanence la dernière version du classement au fur et à mesure que de nouvelles données sont ingérées. Comme DynamoDB, Rockset est une solution entièrement sans serveur offrant les mêmes avantages d’évolutivité et d’infrastructure mains libres.

Joindre des ensembles de données ensemble

Semblable à son manque de capacités d’analyse, DynamoDB ne prend pas en charge la jonction de tables dans les requêtes. Les bases de données NoSQL en général ont tendance à manquer de cette capacité car les données sont stockées dans des structures plus complexes au lieu de schémas relationnels plats. Cependant, il arrive parfois que la réunion de données à des fins d’analyse soit essentielle.

Pour en revenir à notre classement de jeu en temps réel, plutôt que d’utiliser uniquement les données d’une table DynamoDB, que se passerait-il si nous voulions que notre classement contienne d’autres métadonnées sur un utilisateur provenant d’une source de données différente ? Et si nous voulions également montrer les performances passées ? Ces cas d’utilisation nécessiteraient des requêtes avec des jointures de table.

Encore une fois, nous pourrions continuer à utiliser Rockset dans ce scénario. Rockset a plusieurs connecteurs disponibles pour les bases de données Comme MySQL, postgres, MongoDB, fichiers plats et bien d’autres. Nous pourrions configurer des connecteurs pour mettre à jour les données en temps réel, puis modifier notre requête SQL de classement pour joindre maintenant ces données et une sous-requête des performances passées à afficher à côté des scores actuels du classement.

Chercher

Un autre cas d’utilisation pour l’implémentation de CDC avec des flux DynamoDB est la recherche. Comme nous le savons, DynamoDB est idéal pour les recherches rapides de documents à l’aide d’index, mais la recherche et le filtrage de grands ensembles de données sont généralement lents.

Pour rechercher des documents contenant beaucoup de texte, AWS propose CloudSearch, une solution de recherche gérée qui fournit une indexation flexible pour fournir des résultats de recherche rapides avec un classement personnalisé et pondéré. Il est possible de synchroniser les données DynamoDB dans Cloudsearch, cependant, actuellement, la solution n’utilise pas les flux DymanoDB et nécessite une solution technique manuelle pour synchroniser les données.

D’autre part, avec Rockset, vous pouvez utiliser son connecteur DynamoDB pour synchroniser les données en temps quasi réel dans Rockset où, pour une recherche simple, vous pouvez utiliser le SQL standard. where clauses. Pour une recherche plus complexe, Rockset propose des fonctions de recherche pour rechercher des termes spécifiques, booster certains résultats et également effectuer des appariements de proximité. Cela pourrait être une alternative viable à AWS CloudSearch si vous ne recherchez pas dans de grandes quantités de texte et est également plus facile à configurer grâce à l’utilisation de la méthode CDC des flux DynamoDB. Les données deviennent également consultables en temps quasi réel et sont indexées automatiquement. CloudSearch a des limites sur la taille des données et la fréquence de téléchargement dans une période de 24 heures.

Une solution flexible et évolutive

Il est clair qu’AWS DynamoDB est une excellente offre de base de données NoSQL. Il est entièrement géré, facilement évolutif et rentable pour les développeurs qui créent des solutions qui nécessitent des écritures rapides et des recherches rapides sur une seule ligne. Pour les cas d’utilisation en dehors de cela, vous souhaiterez probablement implémenter une solution CDC pour déplacer les données dans un magasin de données alternatif plus adapté au cas d’utilisation. DynamoDB facilite cela grâce à l’utilisation de flux DynamoDB.

Rockset tire parti des flux DynamoDB en fournissant un connecteur intégré capable de capturer les modifications en quelques secondes. Comme je l’ai décrit, de nombreux cas d’utilisation courants pour la mise en œuvre d’une solution CDC pour DynamoDB peuvent être couverts par Rockset. En tant que service entièrement géré, il supprime les charges d’infrastructure des développeurs. Que votre cas d’utilisation soit l’analyse en temps réel, la jonction de données et/ou la recherche, Rockset peut fournir les trois sur les mêmes ensembles de données, ce qui signifie que vous pouvez résoudre plus de cas d’utilisation avec moins de composants architecturaux.

Cela fait de Rockset une solution flexible et évolutive pour de nombreux cas d’utilisation analytique en temps réel sur les données stockées dans DynamoDB.


Fusée est le leader analyse en temps réel plate-forme conçue pour le cloud, fournissant des analyses rapides sur des données en temps réel avec une efficacité surprenante. En savoir plus sur rockset.com.