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

DynamoDB - Data model for geohash and frequent updates

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

该应用程序将频繁更新用户在数据库中的位置(我使用的是 PHP geohash 库)。它还将搜索特定地理半径内的用户。

我是 NoSQL 的新手(我有很多 MySQL 经验),希望对我的 "Users" table 建模有所帮助。两个问题:

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

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

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

Global Secondary Index 是亚马逊提供的昂贵解决方案,其成本几乎与具有相同数据量的新 table 相同,因此最好使用地理半径作为主要索引,在我的项目中我是也可以对相同类型的记录进行相同的分组,或者您可以为每个区域创建不同的 table,如果数据量更多,这将为您提供更大的灵活性.. :)