premium AWS MySQL RDS contre AWS DynamoDB




aws rds (4)

Vous pouvez lire l'explication d'AWS à ce sujet here .

En résumé, si vous avez principalement des requêtes de recherche (et non des requêtes de jointure), DynamoDB (et une autre base de données NoSQL) est préférable. Si vous devez gérer beaucoup de données , vous serez limité lors de l'utilisation de MySQL (et d'autres SGBDR).

Vous ne pouvez pas réutiliser vos requêtes MySQL ni votre schéma de données, mais si vous faites l'effort d'apprendre NoSQL, vous ajouterez un outil important à votre boîte à outils. Il existe de nombreux cas où DynamoDB donne la solution la plus simple.

J'utilise MySQL depuis un bon moment et je suis à l'aise avec sa structure et ses requêtes SQL.

Je construis actuellement un nouveau système dans AWS et j'ai regardé DynamoDB. Actuellement, j'en connais seulement un peu.

Est-ce que l'un est meilleur que l'autre?

Quels sont les avantages de DynamoDB?

Quelle est la transition à partir de requêtes MySQL etc à cette DB de style plat?


Answer #1

Lorsque vous utilisez DynamoDB, vous devez également savoir que les éléments / enregistrements dans DynamoDB sont limités à 400 Ko (voir Limites DynamoDB ). Pour de nombreux cas d'utilisation, cela ne fonctionnera pas. Donc DynamoDB sera bon pour peu de choses mais pas toutes. Il en va de même pour beaucoup d'autres bases de données NoSQL.


Answer #2

Nous venons de migrer toutes nos tables DynamoDB vers RDS MySQL.

Si l'utilisation de DynamoDB pour des tâches spécifiques peut sembler logique, construire un nouveau système sur DynamoDB est vraiment une mauvaise idée. Les meilleurs plans, etc., vous avez toujours besoin de cette flexibilité supplémentaire de votre base de données.

Voici nos raisons pour lesquelles nous avons déménagé de DynamoDB:

  1. Indexation - Il est impossible de changer ou d'ajouter des clés à la volée sans créer une nouvelle table.
  2. Requêtes - L'interrogation des données est extrêmement limitée. Surtout si vous voulez interroger des données non indexées. Les jointures sont bien sûr impossibles, donc vous devez gérer des relations de données complexes sur votre couche de code / cache.
  3. Sauvegarde - Une telle procédure de sauvegarde fastidieuse est une surprise décevante par rapport à la sauvegarde Slick de RDS
  4. GUI - mauvaise UX, recherche limitée, pas de plaisir.
  5. Vitesse - Le temps de réponse est problématique par rapport à RDS. Vous vous trouvez en train de construire un mécanisme complexe de mise en cache pour le compenser dans les endroits où vous vous seriez installés pour la mise en cache interne de RDS.
  6. Intégrité des données - Bien que le concept de structure des données fluides soit agréable au départ, certaines de vos données sont mieux «figées». La frappe forte est une bénédiction quand un petit bug essaie de détruire votre base de données. Avec DynamoDB tout est possible et en effet tout ce qui peut mal tourner le fait.

Nous utilisons maintenant DynamoDB comme une sauvegarde pour certains systèmes et je suis sûr que nous l'utiliserons à l'avenir pour des tâches spécifiques bien définies. Ce n'est pas une mauvaise base de données, ce n'est tout simplement pas la base de données pour servir 100% de votre système de base.

En ce qui concerne les avantages, je dirais que l'évolutivité et la durabilité. Il évolue incroyablement et de manière transparente et c'est (en quelque sorte) toujours en place. Ce sont de très bonnes caractéristiques, mais elles ne compensent en aucun cas les aspects négatifs.


Answer #3

Vraiment DynamoDB et MySQL sont des pommes et des oranges. DynamoDB est une couche de stockage NoSQL tandis que MySQL est utilisé pour le stockage relationnel. Vous devriez choisir ce qu'il faut utiliser en fonction des besoins réels de votre application. En fait, certaines applications peuvent être bien servies en utilisant les deux.

Si, par exemple, vous stockez des données qui ne se prêtent pas bien à un schéma relationnel (structures arborescentes, représentations JSON sans schéma, etc.) qui peuvent être recherchées par rapport à une seule clé ou une combinaison clé / plage DynamoDB ( ou un autre magasin NoSQL) serait probablement votre meilleur pari.

Si vous avez un schéma bien défini pour vos données qui peut s'intégrer parfaitement dans une structure relationnelle et que vous avez besoin de la flexibilité pour interroger les données de différentes façons (en ajoutant des index si nécessaire), alors RDS pourrait être une meilleure solution .

Le principal avantage de l'utilisation de DynamoDB en tant que magasin NoSQL est que vous bénéficiez d'un débit de lecture / écriture garanti quel que soit le niveau dont vous avez besoin sans avoir à vous soucier de la gestion d'un magasin de données en cluster. Donc, si votre application nécessite 1000 lectures / écritures par seconde, vous pouvez simplement provisionner votre table DynamoDB pour ce niveau de débit et ne pas avoir à vous soucier de l'infrastructure sous-jacente.

RDS a le même avantage de ne pas avoir à s'inquiéter de l'infrastructure elle-même, mais si vous avez besoin de faire un nombre important d'écritures au point où la taille de l'instance la plus grande ne pourra plus suivre, vous êtes laissé sans options (vous pouvez mettre à l'échelle horizontalement les lectures en utilisant des réplicas en lecture).

Remarque mise à jour: DynamoDb prend désormais en charge l'indexation secondaire globale. Vous pouvez désormais effectuer des recherches optimisées sur des champs de données autres que le hachage ou la combinaison de hachages et de clés de plage.





amazon-dynamodb