一个大型的SNS网站,数据库不适合全部用mongodb来做,原因:1、数据一致性问题;2、存储空间占用较大;3、不支持 JOIN 操作等。数据一致性问题是指MongoDB虽然支持事务,但在某些特定场景下,如对多文档的复杂操作仍然存在局限性,在数据一致性方面还存在一定的问题。
一、一个大型的SNS网站,是否适合数据库全部用mongodb来做,为什么
一个大型的SNS网站,数据库不适合全部用mongodb来做,原因如下。
1、数据一致性问题
MongoDB虽然支持事务,但在某些特定场景下,如对多文档的复杂操作仍然存在局限性。相较于传统的关系型数据库,在数据一致性方面还存在一定的问题。
2、存储空间占用较大
MongoDB在存储文档的时候会将字段名称存储在每个文档中,这会导致存储空间占用较大。在大型SNS网站存储海量数据时,这可能会成为一个问题。
3、不支持 JOIN 操作
MongoDB不支持关系型数据库中类似于JOIN操作的高级查询功能,这意味着如果需要多表查询,开发人员需要自己手动处理,增加系统的复杂度和耗费更多的时间和精力。
4、缺乏丰富的管理工具和资源
相较于传统的关系型数据库,MongoDB缺乏成熟的管理工具和丰富的资源。在大规模的SNS网站中,这可能会导致管理和维护数据库变得更加困难和耗时。
5、适用场景有限
MongoDB适合存储非常规或更加复杂的数据类型,例如嵌套文档和数组等。然而,对于结构化类型的数据(如用户登录、订单管理等)来说,使用一种传统的关系型数据库可能会更加适合。
二、MongoDB概述
1、简介
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
简而言之,MongoDB是文档型的NoSQL数据库,数据以文档(对应关系型数据库的记录)的形式在MongoDB中保存,文档实际上就是一个个JSON字符串,使用JSON的好处是非常直观,通过一系列的Key-Value键值对来表示数据,符合我们的阅读习惯。
2、特点
高性能:
MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。索引支持更快的查询,并且包含嵌入式文档和数组的键。
- 文本索引解决搜索的需求;
- TTL索引解决历史数据自动过期的需求;
- 地理位置索引可用于构建各种 O2O 应用。
高可用性:
MongoDB的复制工具称为副本集(reolica set),它包含提供自动故障转移和数据冗余。
高可用性:
MongoDB提供了水平可扩展性作为其核心功能的一部分。分片将数据分布在一组集群的机器上。(海量数据存储、服务能力水平扩展)
从3.4起,MongoDB支持基于片键创建数据区域,在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些片。
丰富的查询支持:
MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等。
其他特点:
如动态模式、灵活的文档模型。
3、应用场景
- 游戏场景:使用MongoDB存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。
- 物流场景:使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。
- 社交场景:使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
- 物联网场景:使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
- 视频直播:使用MongoDB存储用户信息、点赞互动信息。
4、语言支持
MongoDB有官方的驱动如下:
- C
- C++
- C# / .NET
- Erlang
- Haskell
- Java
- JavaScript
- Lisp
- node.JS
- Perl
- PHP
- Python
- Ruby
- Scala
- Go
5、应用案例
- Craiglist,上使用MongoDB的存档数十亿条记录。
- FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
- Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
- bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
- spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
- Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
- sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
- etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
- 纽约时报,名列前茅的在线新闻门户网站之一,使用MongoDB。
- CERN,知名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。
延伸阅读1:什么是SNS
SNS俗称社会性网络服务,是一种新兴的网络应用,是指人和人之间通过朋友、理想、交易、兴趣、爱好等一定关系建立起来的社交化网络结构,它是基于现实六度关系理论发展起来的社会网络关系系统网络形态。具有代表性的如微博、人人网、开心网等,它们拥有大量的用户群体,对很多人特别是年轻群体有着深刻的影响,由于高昂的人气,而蕴含着巨大商机,引发更多的企业以SNS营销创造更大价值。