在项目的规划和发展过程中,最关键的一步是要选择合适的数据库。如果选择错误的话,将会花费你大量时间和金钱,并且在这过程中还会惹毛很多的客户。当在他们预期方式中使用时,MongoDB和MySQL都是非常优秀的数据库,但究竟哪个才是构建社交网络最好的数据库呢?
MongoDB是什么?
MongoDB是一个NoSQL数据库,这意味着相关数据存储在单个文件的快速检索。这通常是一个很好的模型,数据不需要在多个文档中复制(这可能导致不一致)。
一个MongoDB文档的例子。
MongoDB在这种情况下易于扩展,所以数据库可以快速水平增长,同时能自动保持事物井然有序。当你有大量的数据时,同时需要快速响应时间,选择MongoDB可能会特别好。
MySQL是什么?
MySQL是一个关系数据库,这意味着数据存储(最好)在标准化的表中,所以没有重复。当你始终需要一致的和可靠的数据时(如个人信息或财务数据),选择MySQL是一个很好的模型。
一个MySQL表的示例。来源: MySQL
而水平扩展可就难多了,它坚持ACID模型(原子性、一致性、隔离、耐久性),这意味着你可以更少担心数据的可靠性。
社交网络是如何工作的呢?
社交网络为人们提供不同的连接方式。无论是通过相互的友谊,业务伙伴,或著名的人或业务的更新,在社交网络上获取信息有许多的方法。
连接的关键因素是:对于任何一个用户连接或跟随,该人通常会看到从所有这些连接到系统登录的更新。
一个社交网络关系图的例子。
数据库的比较
鉴于社会数据有不同的关系,尤其是用户,随着时间的推移,它作用于更好的关系数据库。尽管NoSQL的解决方案如MongoDB看起来像是快速检索大量数据的好方法,然而用户在社交网络关系性质上可能会导致许多重复发生。
这样重复数据随着时间推移本身会变得不一致和/或不可靠,或如果重复删除,查询会变得更加难以处理(因为文档可能需要指向其他文档,这不是最佳的NoSQL数据库)。
因此,MySQL是更好的推荐,因为它有数据的可靠性和关系工具来处理交互和众多用户之间的关系。你也可以利用MySQL和MongoDB两个数据库的最佳特性,将它们一起使用。