我正在设计一个应用程序,它涉及用户在Twitter上意识到彼此的活动,但我对数据库/查询设计/效率不是很熟悉。是否有最佳的管理方法,避免陷阱等?我收集这可以创建一个非常大的负载数据库如果不正确(或者甚至呢?)。'追随者'和效率
如果它的确与众不同,很可能人们会“关注”只有相对少数人(但一个人可以有很多的追随者)。然而,这并不确定,我不想指望它。
任何建议感激地收到。谢谢。
我正在设计一个应用程序,它涉及用户在Twitter上意识到彼此的活动,但我对数据库/查询设计/效率不是很熟悉。是否有最佳的管理方法,避免陷阱等?我收集这可以创建一个非常大的负载数据库如果不正确(或者甚至呢?)。'追随者'和效率
如果它的确与众不同,很可能人们会“关注”只有相对少数人(但一个人可以有很多的追随者)。然而,这并不确定,我不想指望它。
任何建议感激地收到。谢谢。
非常简单,容易做到全normalisation。如果你有一个用户表,每个用户都有一个唯一的ID,那么你将得到一个TABLE_FOLLOWERS
表,其中列和FOLLOWERID
将描述每个用户的所有追随者作为一对一或多对多的关系。
即使有百万assosciations半像样的数据库服务器上,你使用的是良好的数据库(即不是MS-访问),这将只要执行好,快。
这取决于您期望需要支持多少用户;您期望用户拥有多少追随者;以及如果你对前面问题的回答证明乐观,你期望获得什么样的资金/发展努力。
对于小规模项目,我可能会忽略数据库,将该应用程序设计为简单对象模型,其中User
对象保持List[followers]
。将它全部保存在RAM中以便正常运行,并使用ORM定期保存到数据库(可能是postgresql或mysql)。
对于较大的项目,我根本不会使用关系数据库;但正是我所用的取决于项目的具体细节。
如果您只是试图激发这个概念,请使用ORM方法;但是,请记住它不会缩放。
你或许应该阅读http://highscalability.com/,它是如何,这是由大网站管理的物品。
该模型非常简单。问题在于订购表的大小;如果有100万个用户,并且每个订阅1000个,那么订阅表具有10亿行。
alt text http://www.damirsystems.com/dp_images/follower_model.png
漂亮的图。谢谢。 – user749665 2014-04-13 17:38:22
@Damir ..你能解释你图中“EnableSubscription”的含义吗?这是一个布尔?这种方式应该如何工作,跟随并跟着回来?为什么使用bool?不能只使用数据透视表并将用户ID作为User和Follower引用?该EnableSubcription用于禁止用户关注你? – Chriz74 2016-04-20 17:00:35
我知道它已经很长,我想知道'FOLLOWERID'would存储多个值? – lazyprogrammer 2013-04-30 13:57:01