SimpleDB和S3之间的区别

时间:2010-12-31 20:43:58

标签: amazon-s3 amazon-ec2 cloud amazon-web-services amazon-simpledb

我想知道Amazon S3和Amazon SimpleDB之间真正的技术差异是什么。根据我的一点理解,两者都可用于存储和检索键/值对。那么在什么情况下我需要SimpleDB而不是S3? SimpleDB如何实际构建以提供更好的性能(是文件系统,数据库后端还是其他)?


补充一点:我知道SimpleDB是关于存储键/值对的。是否有关于如何从查找键生成哈希索引的信息?

1 个答案:

答案 0 :(得分:8)

Amazon描述了SimpleDB overview page上S3和SimpleDB之间的差异。它们将S3对象存储在较慢的存储中,将SimpleDB对象存储在较快的存储上,这意味着在SimpleDB中存储与在S3中相同数量的数据的成本更高。

如果您只是将大型二进制对象存储为值并且您自己存储元数据或者可以轻松地为您想要的对象派生密钥,那么您可能只是使用S3。

如果您希望存储与项目关联的多个键值对,并希望保留基于任何键值对查找项目的能力,则可以在S3上使用SimpleDB。

S3允许您将键值元数据与对象一起存储,但是要根据元数据查找对象,您必须自己检索存储桶中每个对象的元数据,然后确定哪个项目(你想得到的东西。对于大型水桶而言,这可能是缓慢且昂贵的。此外,如果您使用REST API,则可以存储和检索的元数据数量有限。

SimpleDB对存储的元数据更灵活。键值对被索引,因此查询可以很快。您可以添加和修改SimpleDB中已有的键值对,您需要在S3中删除和重新创建对象以更新元数据。但是,密钥和值的大小限制为1024字节,并且对域中的数据量(存储桶模拟)的总体限制。所有SimpleDB的限制都列在SDB Developer Guide

如果您要存储包含大量键值元数据的大型对象,则可能使用混合方法。亚马逊的概述页面建议在SimpleDB中存储元数据,其中一个键值对是指向对象数据的S3的指针。