14

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


额外的想法:我知道 SimpleDB 是关于存储键/值对的。是否有任何关于它如何从键生成哈希索引以进行查找的信息?

4

1 回答 1

10

Amazon 在SimpleDB 概览页面上描述了 S3 和 SimpleDB 之间的区别。它们将 S3 对象存储在较慢的存储中,而将 SimpleDB 对象存储在较快的存储中,这意味着在 SimpleDB 中存储相同数量的数据比在 S3 中存储更昂贵。

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

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

S3 允许您将键值元数据与对象一起存储,但要根据元数据查找对象,您必须自己检索存储桶中每个对象的元数据,然后决定哪些项目(或哪些项目)你想得到。对于大型存储桶来说,这可能会很慢而且成本很高。此外,如果您使用 REST API,则可以存储和检索的元数据数量是有限的。

SimpleDB 在存储元数据方面更加灵活。键值对已编入索引,因此查询速度很快。您可以添加和修改 SimpleDB 中已有的键值对,您需要在 S3 中删除并重新创建对象以更新元数据。但是,键和值的大小有 1024 字节的限制,域中的数据量有总体限制(存储桶模拟)。SDB 开发人员指南中列出了 SimpleDB 的所有限制。

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

于 2011-01-01T00:11:17.090 回答