SimpleDB并行性

时间:2010-12-17 01:35:27

标签: amazon-simpledb

SimpleDB文档中有一条注释基本上表明如果你需要更多的并行性,那么你应该使用多个域。

这引出了我这个问题。 SimpleDB是否会序列化所有请求,即使它们来自多个客户端应用程序?

有没有人对此有明确的答案?

2 个答案:

答案 0 :(得分:1)

SimpleDB(根据Netflix的主要工程师,博客关于他们过渡到它)似乎对每个域的帐户进行限速。所以你可能有一个帐户,并且从10个线程到单个域进行查询或插入,而那些(从我收集的内容)将被限制为大约每秒40-70个请求(我看到不同的报告)。 / p>

要考虑的另一件事是您的域大小增加,查询性能下降。

由于这两种行为,建议您对大型数据跨多个域“分片”数据。

因此,考虑一个跟踪推文的社交应用,您可以创建以下5个域: TWEETS_0,TWEETS_1,TWEETS_2,TWEETS_3,TWEETS_4

然后将它们插入它们: int domainIndex = tweet.getId()%5; simpleDB.doInsert(domainIndex,arguments ...)

或一些这样的伪代码。 Aws最近将每个客户的域限制提升至250,因此预计这种分片设计似乎会被使用。

SimpleDB的梦想承诺是“我们扩展,你担心代码”,但实际情况是我们还没有。

你仍然需要担心一些细节。

答案 1 :(得分:0)

不,当然SimpleDB不会“序列化所有请求”;但是,它必须进行一定程度的锁定以确保事务一致性。对域进行分片是一种简单的方法,可以最大限度地减少这种影响。