我有大量 1kB 的数据块(大约几亿),并且需要一种方法来存储和查询这些数据块。数据块被添加,但从未被删除或更新。我们的服务部署在S3、EC2平台上。
我知道 Amazon SimpleDB 存在,但我想要一个与平台无关的解决方案(例如,如果我们需要离开 AWS)。
所以我的问题是,这两个存储和检索数据块的选项的优缺点是什么。性能比较如何?
- 将数据块作为文件存储在 S3 上,并在需要时获取它们
- 将数据块存储在 MySQL 服务器集群上
会有这么大的性能差异吗?
我有大量 1kB 的数据块(大约几亿),并且需要一种方法来存储和查询这些数据块。数据块被添加,但从未被删除或更新。我们的服务部署在S3、EC2平台上。
我知道 Amazon SimpleDB 存在,但我想要一个与平台无关的解决方案(例如,如果我们需要离开 AWS)。
所以我的问题是,这两个存储和检索数据块的选项的优缺点是什么。性能比较如何?
会有这么大的性能差异吗?
我尝试使用 S3 作为一种“数据库”,使用微小的 XML 文件来保存我的结构化数据对象,并依靠 S3“键”来查找这些对象。
性能是不可接受的,即使从 EC2 上也是如此——到 S3 的延迟太高了。
即使有这么多记录,在 EBS 设备上运行 MySQL 也会快一个数量级。
您是否需要直接向应用程序的用户提供对这些数据块的访问权限?如果不是,那么 S3 和 HTTP GET 请求就显得过分了。还要记住 S3 是一项安全服务,每个 GET 请求(仅 1KB 的数据)的开销将相当大。
MySQL 服务器集群会是一个更好的主意,但要在 EC2 中运行,您需要使用 Elastic Block Storage。最后,不排除 SimpleDB。这可能是您问题的最佳解决方案。仔细设计您的系统,您将能够在未来轻松迁移到其他数据库系统(分布式或关系)。