amazon-s3 - DynamoDb + S3 + CloudSearch + Redis

标签 amazon-s3 redis amazon-dynamodb amazon-cloudsearch

我目前正在为我的应用程序创建一个方案,我想知道我的想法是否正确

示例:电子商务网站

在 DynamoDb 中,我会放置产品(product_id,S3 的元数据链接)

S3,我会用它来存储搜索数据格式 (SDF/JSON) (产品名称、产品描述、价格等)

Amazon CloudSearch 将用于索引 S3 中的文档,并能够搜索它们。 Redis 将用于缓存结果

我的方案对吗? s3 可以成为一个好的“数据库”吗?

这里甚至需要 DynamoDb 吗?

最佳答案

如果您认为 S3 只是您产品的记录源并且您不期望大量的读/写,那么它可以工作,但您必须认识到它会比使用真正的慢得多数据库。不仅慢 1-2 倍,而且慢很多。我们使用 S3 为存储在 Postgres 中的实时数据存储审计数据 - 很有魅力,但这是一次写入很少读取的数据。当它确实必须检索审计记录时,检索时间 > 50 毫秒。当您需要一次操作多条记录时,这种速度通常是 Not Acceptable 。

如果您无论如何都要使用 dynamoDB,为什么不直接使用它来存储您要存储在 s3 上的内容呢?为了坚持保持简单的概念,我将使用以下堆栈:

  • dynamoDB 作为记录系统并进行一些搜索
  • Cloudsearch 提供比 dynamodb 更灵活的搜索 提供
  • 用于静态文件(产品图片等)的 S3

再一次,为了简单起见,如果您已经在使用 dynamoDB 并且不打算使用任何 Redis 的专用数据类型,请跳过 Redis 进行缓存 - 即:您的缓存只不过是字符串的键等。如果您计划利用 Redis 的其他数据类型,或者如果您希望缓存更接近您的应用程序,请使用 Redis - 即:您计划在网络服务器上使用 Redis。

关于amazon-s3 - DynamoDb + S3 + CloudSearch + Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12258110/

相关文章:

python - 如何使用python在redis中创建嵌套结构?

amazon-dynamodb - DynamoDB 邻接列表模式

amazon-web-services - 带排序键的无服务器框架Dynamo DB表资源定义

java - S3 Ninja + AWS Java SDK 无法连接

amazon-web-services - 将日志发送到AWS ElasticSearch

amazon-web-services - AWS CLI S3 CP 性能非常缓慢

c# - 如何修复 Azure redis 缓存中的超时异常?

node.js - 将对象放在亚马逊 S3 上时处理错误

java - 如何基于特定的资源路径进行尽可能公平的负载均衡

java - 提供的关键元素与模式不匹配 - java