DynamoDB -用于geohash和频繁更新的数据模型


DynamoDB - Data model for geohash and frequent updates

我正在构建一个基于位置的"聊天"应用程序,并使用Amazon的DynamoDB来利用高吞吐量和自动扩展的优势。

应用程序将经常更新用户在数据库中的位置(我使用PHP geohash库)。它还可以搜索特定地理范围内的用户。

我是NoSQL的新手(我有很多MySQL经验),希望对我的"Users"表建模有一些输入。两个问题:

1)如果用户的geohash/longitude/latitude属性频繁更新,这会导致DynamoDB出现问题(表锁定?)吗?在MySQL中,我会为这些值创建一个单独的表,以防止锁定整个Users表。我需要担心DynamoDB吗?

2)搜索地理半径内的用户?这只是在geohash属性上设置全局二级索引并对其执行查询吗?分片会导致这个问题吗?

对于第一个问题,我建议您创建一个新表,以保留您的geohash/longitude/latitude,因为在dynamoDB中更新一行中的一列意味着更新整行。我想你知道那样做的后果。

全局二级索引是亚马逊提供的昂贵的解决方案,它几乎花费相同数量的新表具有相同数量的数据,所以最好使用地理半径作为主索引,在我的项目中,我也在做同样的分组相同类型的记录,或者你可以为每个地区创建不同的表,这将给你更多的灵活性,如果数据量更多。:)