Facebook风格的消息系统架构设计

我期待实现一个Facebook风格的消息系统(线程消息)到我的网站。Facebook风格的消息系统架构设计

你认为这个模式标记看起来好吗?

主义的schema.yml:

UserMessage: 

tableName: user_message

actAs: [Timestampable]

columns:

id: { type: integer(10), primary: true, autoincrement: true }

sender_id : { type: integer(10), notnull: true }

sender_read: { type: boolean, default: 1 }

subject: { type: string(255), notnull: true }

message: { type: string(1000), notnull: true }

hash: { type: string(32), notnull: true }

relations:

UserMessageRecipient as Recipient:

type: many

local: id

foreign: message_id

UserMessageReply as Reply:

type: many

local: id

foreign: message_id

UserMessageReply:

tableName: user_message_reply

columns:

id: { type: integer(10), primary: true, autoincrement: true }

user_message_id as message_id: { type: integer(10), notnull: true }

message: { type: string(1000), notnull: true }

sender_id: { type: integer(10), notnull: true }

relations:

UserMessage as Message:

local: message_id

foreign: id

type: one

UserMessageRecipient:

tableName: user_message_recipient

actAs: [Timestampable]

columns:

id: { type: integer(10), primary: true, autoincrement: true }

user_message_id as message_id: { type: integer(10), notnull: true }

recipient_id: { type: integer(10), notnull: true }

recipient_read: { type: boolean, default: 0 }

当我一个新的答复作出的,我会确保对“recipient_read”每个收件人的布尔值设置为false,当然还有我会确保sender_read也设置为false。

我使用的URL的哈希:http://example.com/user/messages/aadeb18f8bdaea49882ec4d2a8a3c062

(作为ID从1首发,我不希望有http://example.com/user/messages/1呀,我可以开始从一个更大的数字递增,而是。我宁愿从1开始。)

这是一个好方法吗?你的想法和建议将非常感激。

谢谢你们!

回答:

user_message.created_at和user_message_recipient.created_at有什么区别?

对于updated_at的同样问题。 (稍后:我想user_message_recipient.updated_at可能是收件人阅读邮件的时间,如果是这种情况,我宁愿使用更有意义的名称。)

您是否考虑过挖掘某些开源项目的源代码是否打算成为Facebook的替代品?

当我做出新的回复时,我会确保每个收件人的“recipient_read”的布尔值设置为false,当然我会确保sender_read也设置为false。

我希望这意味着dbms将验证那些布尔值设置正确。

回答:

我也尝试使用数据库创建一个消息系统,最常见的缺陷是忘记了每个用户都有不同的读取 - 未读消息的状态。我很少在数据库方案中显示,但总之,您必须考虑为每个用户为每个user_message和user_message_reply创建像isread一样的标志,这样每个用户只会看到未读消息。

回答:

这个模型呢?

MESSAGES    USER_MESSAGES 

======== =============

id id

content message_id

reply_message_id recipent_id

read

trash

hide

以上是 Facebook风格的消息系统架构设计 的全部内容, 来源链接: utcz.com/qa/259512.html

回到顶部