DynamoDB或DynamoDB2:我可以确定是否有人正在使用我刚刚获得的表格吗?

时间:2014-02-14 18:31:17

标签: synchronization amazon-dynamodb

假设我有一个Dynamo表(我将在下面假设DynamoDB):

import boto
conn = boto.connect_dynamodb(aws_access_key_id=<MYID>,aws_secret_access_key=<MYKEY>)
table = conn.get_table('someTable')

有没有办法可靠确定当前是否有其他进程正在写入此表?

据我了解,检查table.status UPDATINGDELETING ACTIVE无济于事,因为无论是否有人写入表格,我都会{{1}}不是,只要没有人修改表的吞吐量或删除表。

1 个答案:

答案 0 :(得分:0)

没有。 DynamoDB不支持事务或锁定等。 您需要以这样的方式为数据和应用程序代码建模,即使另一个进程正在编写/读取,它也不会影响您的数据。

检查表状态没有帮助 - 创建表后,大多数时候它是ACTIVE。这仅用于创建或更新表(而不是用于编写项目)

Dynamo提供了以下一些功能来帮助进行此类数据建模:

  1. 条件更新(您可以告诉写入只有在发生时才会发生 属性的值是X)。 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItemsConditionalUpdate
  2. 原子计数器(假设您想要增加1,没有人在您的阅读和随后的写入之间进行拦截):http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.AtomicCounters
  3. 希望这有帮助!