2014-05-17 1 views
2

Amazon DynamoDB autorise le client à provision the throughput of reads and writes independently. J'ai lu le Amazon Dynamo paper sur le système qui a précédé DynamoDB et j'ai lu comment Cassandra et Riak ont ​​implémenté ces idées. Je comprends comment il est possible d'augmenter le débit de ces systèmes en ajoutant des nœuds au cluster qui divise ensuite l'espace de hachage des tables sur plusieurs nœuds, permettant ainsi un débit plus important tant que l'accès est relativement aléatoire entre les clés de hachage. Mais dans des systèmes comme Cassandra et Riak, cela ajoute du débit aux lectures et aux écritures en même temps.Comment DynamoDB gère le débit des lectures indépendamment des écritures

Comment DynamoDB est-il architecturé différemment pour pouvoir mettre à l'échelle les lectures et écrire indépendamment? Ou ne le sont-ils pas et Amazon les charge indépendamment pour eux, même s'ils doivent essentiellement allouer suffisamment de nœuds pour couvrir le plus grand des deux?

Répondre

0

Vous avez raison de dire que l'ajout de nœuds à une grappe devrait augmenter la quantité de débit disponible, mais ce serait par grappe et non par table. Le cluster DynamoDB est une ressource partagée entre plusieurs tables sur de nombreux comptes. C'est comme un nœud EC2: vous payez pour une machine virtuelle mais cette machine virtuelle est hébergée sur une machine réelle qui est partagée entre plusieurs machines virtuelles EC2 et selon le type d'instance, vous obtenez une certaine quantité de mémoire, CPU, IO réseau Ce que vous payez lorsque vous payez pour le débit est E/S et vous pouvez les réguler indépendamment. Payer plus de débit ne force pas Amazon à partitionner votre table sur plusieurs noeuds. La seule chose qui provoque une partition d'un tableau est si la taille de votre table augmente au point où plus de partitions sont nécessaires pour stocker les données de votre table. La taille maximale de la partition, d'après les informations que j'ai recueillies auprès des ingénieurs de DynamoDB, est basée sur la taille des disques SSD des nœuds du cluster.

L'astuce avec le débit provisionné est qu'il est divisé entre les partitions. Donc, si vous avez une partition chaude, vous pouvez obtenir une limitation et ProvisionedThroughputExceededExceptions même si vos demandes totales ne dépassent pas le débit total de lecture ou d'écriture. Ceci est contraire à ce que votre question demande. Vous vous attendriez à ce que si votre table est divisée entre plus de partitions/noeuds, vous obtiendrez plus de débit, mais en réalité c'est le contraire à moins que vous n'égaliez votre débit avec la taille de votre table.

+0

Je comprends comment le provisionnement fonctionne et ce n'est pas contraire à ce que j'ai dit. Je comprends que le débit provisionné est réparti entre les partitions. Avez-vous une source pour vous affirmer que «Payer pour plus de débit ne force pas Amazon à partitionner votre table sur plusieurs nœuds». Cela n'a pas de sens parce que je pourrais avoir une table de 1000 lignes mais fournir autant de lectures qu'aucune partition ne pourrait supporter cette charge. Je comprends également que dans DynamoDB, le cluster est une ressource partagée, ce qui n'a rien à voir avec le nombre de nœuds sur lesquels une table est partitionnée. –

+0

Vous avez absolument raison. Vous pouvez avoir une table de 1000 lignes et avoir le débit maximal que vous pouvez provisionner pour cette table, mais être limité par le débit réseau et SSD pour le nœud physique qui stocke cette table. La source de mes informations est de travailler avec DynamoDB pour comprendre les problèmes de performance que nous avons pour une très grande table DynamoDB (plus de 80 milliards de lignes, plus de 10 To de données). –

Questions connexes