【发布时间】:2013-01-03 01:04:59
【问题描述】:
这个问题可能与任何基于文档的 NoSQL 数据库有关。
我正在制作一些特定于兴趣的社交网络,并决定使用 DynamoDB,因为可扩展性和无痛管理因素。数据库中只有两个主要实体:users 和 posts。
常见查询的要求非常简单:
- 主页动态(我关注的人的动态)
- 我的/用户提要(我的提要或特定用户提要)
- 我/用户关注的用户列表
- 关注者列表
这是我目前想出的一个数据库方案(图例:__thisIsHashKey 和 _thisIsRangeKey):
timeline = { // post
__usarname:"totocaster",
_date:"1245678901345",
record_type:"collection",
items: ["2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594","2d931510-d99f-494a-8c67-87feb05e1594"],
number_of_likes:123,
description:"Hello, this is cool"
}
timeline = { // new follower
__usarname:"totocaster",
_date:"1245678901345",
type:"follow",
follower:"tamuna123"
}
timeline = { // new like
__usarname:"totocaster",
_date:"1245678901345",
record_type:"like",
liker:"tamuna123",
like_date:"123255634567456"
}
users = {
__username:"totocaster",
avatar_url:"2d931510-d99f-494a-8c67-87feb05e1594",
followers:["don_gio","tamuna123","barbie","mikecsharp","bassman"],
following:["tamuna123","barbie","mikecsharp"],
likes:[
{
username:'barbie',
date:"123255634567456"
},
{
username:"mikecsharp",
date:"123255634567456"
}],
full_name:"Toto Tvalavadze",
password:"Hashed Key",
email:"totocaster@myemailprovider.com"
}
如您所见,我想将所有帖子直接存储在时间线集合中。这样我可以使用日期和用户名(哈希和范围键)查询帖子。一切似乎都很好,但问题出在这里:
我无法一次性查询用户时间线。这将是系统最需要的查询之一,我无法提供有效的方法来做到这一点。请帮忙。谢谢。
【问题讨论】:
-
这对我来说是一个持续的问题,而我正在计划我的社交网络
-
那么您希望能够从时间线表中获取所有用户数据吗?您可以只查询该用户名的哈希键吗?如果不是这种情况,请给我一个更详细的查询示例,可能是简单的类似 SQL 的语法。即
SELECT all from timeline where USERNAME = totacaster
标签: database database-design amazon-web-services database-schema amazon-dynamodb