我有大量大小为 1kB 的数据块(大约数亿),并且需要一种方法来存储和查询这些数据块。数据块被添加,但从未被删除或更新。我们的服务部署在S3、EC2平台上。

我知道 Amazon SimpleDB 的存在,但我想要一个与平台无关的解决方案(例如,以防我们需要迁移出 AWS)。

所以我的问题是,这两个存储和检索数据块的选项的优缺点是什么。性能比较如何?

  • 将数据块作为文件存储在 S3 上并在需要时获取它们
  • 将数据块存储在 MySQL Server 集群上

性能差异会有那么大吗?

有帮助吗?

解决方案

您是否需要直接向应用程序的用户提供对这些数据块的访问?如果不是,那么 S3 和 HTTP GET 请求就太过分了。还要记住,S3 是一项安全服务,每个 GET 请求(仅 1KB 数据)的开销将相当大。

MySQL 服务器集群是一个更好的主意,但要在 EC2 中运行,您需要使用弹性块存储。最后,不排除SimpleDB。这也许是解决您问题的最佳方案。仔细设计您的系统,您将来将能够轻松迁移到其他数据库系统(分布式或关系型)。

其他提示

我尝试使用 S3 作为一种“数据库”,使用微小的 XML 文件来保存结构化数据对象,并依靠 S3“键”来查找这些对象。

即使从 EC2 来看,性能也是不可接受的 - S3 的延迟太高了。

即使有如此多的记录,在 EBS 设备上运行 MySQL 也会快一个数量级。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top