私のWebアプリケーションでは、キーと値のペアとして格納できる小さなデータBLOB(<10KB)の非常に低遅延の読み取り/書き込みが必要です。 DynamoDB(DAX付き)とEFSおよびElastiCacheを検討しています。 AWSは、それらはすべて低遅延を提供すると主張していますが、私は頭と頭の比較を見つけることができず、これら3つが同じリーグにあるかどうかもわかりません。誰かが洞察を共有できますか?
さまざまな価格設定モデルを使用して、さまざまなユースケースのさまざまなストレージシステムを比較しようとしています。
EFSは、ストレージデバイスをプロビジョニングする必要がなく、複数のEC2インスタンスからアクセスできるファイルシステムです。 EFSはユースケースでは問題なく機能する可能性がありますが、ファイルを管理する必要があります。つまり、ファイルに収まるようにデータを構造化する必要があります。または、必要な構造と取得のレベルに応じて、Key-ValueまたはBLOB /オブジェクトストレージシステムを構築する必要がある場合があります。 S3、DynamoDB、Elasticache Redis、Memcachedなど、この問題を解決する製品があります。
S3はblobストレージであり、構造もデータ型もありません。アイテムを更新することはできず、置き換えるだけです。クエリは、バケット内のBLOBを一覧表示することによってのみ行うことができます。通常、静的メディアファイルを保存するために使用されます。
DynamoDBは非リレーショナル(別名No-SQL)データベースであり、データが構造化され、厳密に型指定され、クエリ機能を備えたドキュメントまたはキー値ストアとして使用できます。最大400KBのアイテムを保存できます。
Elasticache(RedisまたはMemcached)は、DynamoDBなどの永続的なデータストアの前のキャッシュとして通常使用されるKey-Valueストアです。この場合、アプリケーションはさまざまなレイヤーを認識する必要があります。さまざまなAPIを管理し、アプリケーションのキャッシュロジックを処理します。
DAXを使用すると、アプリケーションにキャッシュロジックがなくても、キャッシュレイヤーをシームレスに統合できます。 DAXは現在、DynamoDBにライトスルーキャッシュを提供しています。 DAXAPIはDynamoDBAPIと互換性があるため、アプリケーションでDynamoDBクライアントをDAXクライアントに置き換えることで、アプリケーションがすでにDynamoDBを使用している場合は、キャッシュレイヤーをシームレスに追加できます。 DAXは現在、Java、Node.js、Go、.NET、およびPythonクライアントのみをサポートしていることに注意してください。
したがって、それは本当にあなたのワークロードに依存します。キャッシュレイヤーの管理に煩わされることなく、ミリ秒未満のレイテンシーが必要で、アプリケーションがJava、Node.js、Go、.NET、またはPython)の場合は、DAXが最適です。