0

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

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

我是 NoSQL 的新手(我有很多 MySQL 经验),希望对我的“用户”表进行建模。两个担忧:

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

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

4

1 回答 1

0

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

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

于 2015-07-28T06:35:39.973 回答