我建立一个基于位置"聊天"应用程序和我正在使用亚马逊的DynamoDB来利用高吞吐量和自动扩展。
应用程序会经常更新用户在数据库中的位置(我使用的是PHP geohash库)。它还将搜索特定地理半径范围内的用户。
我是NoSQL的新手(我有很多MySQL经验),并希望对我的"用户"表。两个问题:
1)如果用户的geohash /经度/纬度属性经常更新,这是否会导致DynamoDB出现问题(表锁定?)?在MySQL中,我将为这些值创建一个单独的表,以防止锁定整个Users表。我需要在DynamoDB中担心吗?
2)搜索地理半径范围内的用户?这只是在geohash属性上设置全局二级索引并对其执行查询吗?分片会导致问题吗?
答案 0 :(得分:0)
对于第一个问题,我建议您创建新表,以保持geohash /经度/纬度,因为在dynamoDB中更新行中的列意味着更新整行。我想你知道后果。
全球二级索引是亚马逊提供的昂贵的解决方案,它的成本相同,数据量相同的新表相同,所以最好使用地理半径作为主要索引,在我的项目中我也做同样的组合记录类型或您可以为每个区域创建不同的表格,如果数据量更多,将为您提供更大的灵活性.. :)