Mysql 用于大量记录的数据库体系结构(例如社交网络中的消息)

Mysql 用于大量记录的数据库体系结构(例如社交网络中的消息),mysql,database,database-design,social-networking,Mysql,Database,Database Design,Social Networking,我想了解如何为聊天信息构建大型网站数据库架构。例如facebook.com或gmail.com 我认为消息被重新分配到不同的表中,因为将所有消息放在一个表中是不可能的,原因是它们的数量很大,对吗?在这里,我想不行吗 那么,使用什么逻辑在不同的表中重新分发消息呢?我有几个变体,但我认为没有一个是最佳变体。 所以一般来说,我对你的想法很感兴趣?另外,如果你知道一些关于这方面的好文章,请发布链接。不久前,有一篇文章讲述了reddit是如何从小到大完成的。 他们没有用户消息系统,但我想这将适用于大量数据

我想了解如何为聊天信息构建大型网站数据库架构。例如facebook.com或gmail.com

我认为消息被重新分配到不同的表中,因为将所有消息放在一个表中是不可能的,原因是它们的数量很大,对吗?在这里,我想不行吗

那么,使用什么逻辑在不同的表中重新分发消息呢?我有几个变体,但我认为没有一个是最佳变体。
所以一般来说,我对你的想法很感兴趣?另外,如果你知道一些关于这方面的好文章,请发布链接。

不久前,有一篇文章讲述了reddit是如何从小到大完成的。 他们没有用户消息系统,但我想这将适用于大量数据的大量场景


编辑:关于数据库的有趣部分是3-不要担心模式。。他们什么都用两张桌子。事物和数据。

不久前,有一篇文章介绍了reddit是如何从小到大地工作的。 他们没有用户消息系统,但我想这将适用于大量数据的大量场景

编辑:关于数据库的有趣部分是3-不要担心模式。。他们什么都用两张桌子。事物和数据。

Facebook使用一些存储文档数据库,并大量使用以使其具有良好的可扩展性

这里有更多关于。 您还可以在。

Facebook使用的一些存储文档数据库中找到一些精华,并大量使用以使其具有良好的可扩展性

这里有更多关于。 您还可以在中找到一些宝石。

目前的答案是

他们有一个分布式文件系统和一个可以使用它的数据库

目前的答案是

他们有一个分布式文件系统和一个可以使用它的数据库


好的,问题是如何划分数据集。考虑这个问题的最简单且通常最好的方法是考虑访问模式。哪些消息需要快,哪些消息可能慢,以及如何管理每个消息

通常,较旧的消息可以保存在低网络速度/低内存/非常大的存储节点(多TB)上

新邮件应位于高带宽网络/高内存/低存储节点上千兆字节就足够了

随着通信量的增长,您将需要向慢速节点添加存储,并向快速节点添加节点以水平扩展

您可以每天晚上或更频繁地将旧消息复制到历史数据库,并从当前数据库中删除这些消息。查询可能需要处理两个数据库,但这并不太麻烦

当您向外扩展时,可能需要对数据进行切分,即按某些数据值进行分割。用户id拆分是有意义的。为了让生活更轻松,可以与每个用户存储对话的所有方面。我建议使用有时间限制的文本,因为磁盘访问通常在4k边界上,尽管这对您最初来说可能太复杂了

查询现在需要有用户意识,以便根据正确的数据库进行查询。一个简单的查找表将有助于实现这一点

另一件事是在传入时压缩消息,在传出时解压缩。文本很容易压缩,只需稍微增加cpu,吞吐量就可以翻倍

许多NoSQL数据库为您做了很多这方面的艰苦工作,但是在当前系统的容量用完之前,您可能希望坚持使用您所知道的技术


祝你好运

好的,问题是如何划分数据集。考虑这个问题的最简单且通常最好的方法是考虑访问模式。哪些消息需要快,哪些消息可能慢,以及如何管理每个消息

通常,较旧的消息可以保存在低网络速度/低内存/非常大的存储节点(多TB)上

新邮件应位于高带宽网络/高内存/低存储节点上千兆字节就足够了

随着通信量的增长,您将需要向慢速节点添加存储,并向快速节点添加节点以水平扩展

您可以每天晚上或更频繁地将旧消息复制到历史数据库,并从当前数据库中删除这些消息。查询可能需要处理两个数据库,但这并不太麻烦

当您向外扩展时,可能需要对数据进行切分,即按某些数据值进行分割。用户id拆分是有意义的。为了让生活更轻松,可以与每个用户存储对话的所有方面。我建议使用有时间限制的文本,因为磁盘访问通常在4k边界上,尽管这对您最初来说可能太复杂了

查询现在需要有用户意识,以便根据正确的数据库进行查询。一个简单的查找表将有助于实现这一点

另一件事是在传入时压缩消息,在传出时解压缩。文本很容易理解 压缩,可能会使吞吐量翻倍,只需少量增加cpu

许多NoSQL数据库为您做了很多这方面的艰苦工作,但是在当前系统的容量用完之前,您可能希望坚持使用您所知道的技术


祝你好运

Facebook不久前放弃了卡桑德拉的HBase。Facebook不久前放弃了卡桑德拉的HBase。从Postgres开始,如果需要,请转到HBase;如果需要,请转到HBase