我正在构建一个基于位置的“聊天”应用程序,并使用亚马逊的DynamoDB来利用高吞吐量和自动缩放功能。
应用程序将经常更新用户在数据库中的位置(我使用的是PHP地理哈希库)。它还将搜索特定地理范围内的用户。
我是NoSQL新手(我有很多MySQL经验),我想要一些关于对“用户”表建模的投入。两个关切事项:
1)如果频繁更新用户的Geo散列/经度/纬度属性,这会导致问题(表锁定吗?)和DynamoDB?在MySQL中,我只为这些值创建一个单独的表,以防止锁定整个User表。我需要在DynamoDB中担心这个问题吗?
( 2)搜索地理半径内的用户?这仅仅是在Geo散列属性上设置一个全局辅助索引并对其执行查询吗?切分会不会引起问题呢?
发布于 2015-07-28 06:35:39
对于第一个问题,我建议您创建新的表,以保持您的Geo散列/经度/纬度,因为在dynamoDB中更新行中的列意味着更新整行。我想你知道后果。
全球二级索引是amazon提供的一种昂贵的解决方案,它的成本几乎相同--一个新的具有相同数据量的表,因此更好地使用地理半径作为主要索引。在我的项目中,我也做了同样的工作,对相同类型的记录进行分组,或者u可以为每个区域创建不同的表,如果数据量更大,这将给您带来更大的灵活性。:)
https://stackoverflow.com/questions/31666015
复制相似问题