S3 到 EC2 获取大量小文件的性能
-
03-07-2019 - |
题
我有大量大小为 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 也会快一个数量级。
不隶属于 StackOverflow