0

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

示例:电子商务网站

在 DynamoDb 中,我会将产品(product_id,元数据链接到 S3)

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

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

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

这里甚至需要 DynamoDb 吗?

4

3 回答 3

6

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

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

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

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

于 2012-09-04T18:08:08.173 回答
0

Dynamo 用于存储写入扩展数据。如果您的应用程序不需要对 product_id 和元数据进行大量写入,我认为 RDS/MySQL 会更好。

于 2012-09-04T06:50:52.547 回答
0

在设计应用程序时,您确实应该从一开始就让事情尽可能简单。随着时间的推移,情况总是会变得更糟:)

S3不是一个好的数据库。它不是为此而设计的,而且速度太慢。它仅用于文件存储。如果您想坚持使用DynamoDB,则应将所有产品信息(包括元数据)放入其中。

CloudSearch可能是一个不错的选择。您还可以DynamoDB. 它需要更多的设计和编程,但可能值得考虑。这是一篇关于这个问题的优秀博客文章的链接:http: //blog.coredumped.org/2012/01/amazon-dynamodb.html

所以,

  • 是否甚至需要 DynamoDB:是的,或者 RDS、Mongo、...任何真正的数据库,具体取决于您的需要。
  • S3 是一个好的数据库吗:我不这么认为。
于 2012-09-04T12:51:26.150 回答