@tagging的数据结构和方法,如Facebook和Twitter?

时间:2010-12-30 01:53:29

标签: database facebook database-design twitter

我正在考虑实施类似Facebook / Twitter的系统,当用户键入@(或其他特殊字符)时,用户可以选择用户名并在帖子中“标记”它们。我知道如何为这种行为编写jQuery,但这种行为的实际数据(基础)结构是什么样的呢?

我非常怀疑链接是否直接存储在数据库中。由于它可以标记多个东西,这个结构是什么样的?

1 个答案:

答案 0 :(得分:0)

我不认为这是实际设计的问题(我理解它的方式)。

每个用户都有一个唯一的ID和一个名称,您可以查询该名称并从数据库中返回该名称以及ID。这个人的链接只是根据ID构建的,因为它总是看起来一样[...]?profile = 12345678。

成员和“标记的东西”之间的连接将是简单的连接表。我会为每个可标记对象创建一个表(如“photo”,“message”,...),因为它可能会提高性能,但其余的听起来相当直接。由于这些资源中的每一个已经具有唯一标识符(如ID或任何其他代理键),因此在连接表中多个标签没有问题(因此用户123可以在消息234和235中,而用户456也可以在消息235中)。

如何查找用户在帖子中的位置:这是服务器端问题IMO。当消息发送到服务器时,它需要处理它并将用户名转换为指向用户的链接。由于facebook不允许编辑邮件,因此您可以简单地将普通用户名替换为指向用户的链接,因为编辑不是问题。另一种可能性是在消息中留下“@”并尝试在每次显示帖子时解析它。这更复杂并且会产生更多开销,但您的数据库中没有HTML。