database - 使用 Amazon SimpleDB 有什么意义?

标签 database amazon-web-services amazon-simpledb

我认为我可以使用 SimpleDB 来处理我的应用程序中最具挑战性的区域(就扩展而言)- 类似 Twitter 的评论,但位置在顶部 - 直到我坐下来真正开始的时候用 SDB 实现它。

首先,SDB 对每个属性值有 1000 字节的限制,即使是注释也不够(可能需要将较长的值分解为多个属性)。

然后,最大域大小为 10GB。 promise 是您可以扩展而不用担心数据库分片等问题,因为 SDB 不会随着数据负载的增加而降级。但是如果我理解正确的话,对于域我会遇到与分片完全相同的问题,即。在某些时候需要在应用层面实现数据记录的跨域分发和查询。

即使是我在整个应用程序中拥有的最简单的对象,即。原子用户评级,SDB 不是一个选项,因为它无法计算查询中的平均值(一切都是基于字符串的)。因此,要计算某个对象的平均用户评分,我必须加载所有记录(一次 250 条)并在应用程序级别进行计算。

我是否遗漏了有关 SDB 的信息? 10GB 真的是一个可以克服所有 SDB 限制的数据库吗?老实说,我非常热衷于利用 SDB,因为我已经使用过 S3 和 EC2,但现在我根本看不到用例。

最佳答案

我在几个大型应用程序中使用 SDB。每个域 10 GB 的限制确实让我担心,但我们在 Amazon 上赌一把,允许在需要时扩展它。如果您需要更多空间,他们的网站上有申请表。

就跨域连接而言,不要将 SDB 视为传统数据库。在将我的数据迁移到 SDB 的过程中,我不得不对其中的一些数据进行非规范化,以便我可以手动进行跨域连接。

每个属性 1000 字节的限制也很难解决。我有一个应用程序是一个博客服务,它在数据库中存储帖子和评论。在将它移植到 SDB 时,我遇到了这个限制。我最终将帖子和评论作为文件存储在 S3 中,并在我的代码中读取它。由于此服务器位于 EC2 上,因此到 S3 的流量不会产生任何额外费用。

也许需要注意的其他问题之一是 SDB 上的最终一致性模型。不能保证新写入的数据将返回给您,然后写入数据然后再读回。最终数据将被更新。

说了这么多,我还是很喜欢深发展的。我不后悔改用它。我从 SQL 2005 服务器迁移过来。我认为我对 SQL 有更多的控制权,但一旦放弃该控制权,我就有了更多的灵 active 。不需要预先定义模式真是太棒了。通过代码中强大而稳健的缓存层,可以轻松地使 SDB 更加灵活。

关于database - 使用 Amazon SimpleDB 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648270/

相关文章:

amazon-web-services - 枚举 Amazon SimpleDB 中的键

sql - 用于通配符查找的正则表达式帮助

mysql - Visual Studio 2017无法加载MySQL数据库

database - 通过 http 和 json 同步 2 个 sqlite 表的最佳方法是什么?

amazon-web-services - 使用 AWS RDS 代理时准备好的语句的替代方法

python - S3 boto 列表键有时会返回目录键

database - 数数来自多个表的记录;甲骨文数据库

node.js - AWS SDK 使用 DynamoDB 和 putItem 不允许我在不更新的情况下插入

ruby - SimpleDB 与 Tokyo Cabinet