一个大型的SNS网站,是否适合数据库全部用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有官方的驱动如下:
CC++C# / .NETErlangHaskellJavaJavaScriptLispnode.JSPerlPHPPythonRubyScalaGo5、应用案例
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营销创造更大价值。
猜你喜欢LIKE
相关推荐HOT
更多>>关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点是什么?
一、关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点1.字段默认值:针对每个字段都有自己的默认值,较有利于进行统计和分析,以及...详情>>
2023-10-20 21:56:39Gradle Transform到底是什么怎么用?
一、Gradle Transform到底是什么Gradle Transform是Android官方提供给开发者在项目构建阶段(.class -> .dex转换期间)用来修改.class文件的一...详情>>
2023-10-20 20:24:09MyBatis和jOOQ有哪些区别?
一、MyBatis和jOOQ的区别1、数据库操作风格不同MyBatis是一种基于XML或注解配置的SQL映射框架。它通过编写SQL语句,并使用对象映射将结果集映射...详情>>
2023-10-20 19:06:20ACTION_CANCEL到底何时触发,滑出子View范围会发生什么?
一、ACTION_CANCEL在这些时候会触发1、父view拦截事件首先要了解ViewGroup什么情况下会拦截事件,请看下面一段代码:@Overridepublic boolean d...详情>>
2023-10-20 11:22:41热门推荐
在mysql中, 为什么只有右模糊才走索引?
沸为什么声明性语言往往适合于并行执行,命令代码很难在多个内核和多个机器之间并行化?
热SQL语言中的ALTER和UPDATE,DROP和DELETE都有什么区别?
热关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点是什么?
新MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
jmeter性能测试步骤?
Gradle Transform到底是什么怎么用?
Excel与数据库有什么不同?
MyBatis和jOOQ有哪些区别?
什么是web前端?
一个大型的SNS网站,是否适合数据库全部用mongodb来做,为什么?
在数据库查询的底层实现上SQL Server和MySQL的区别是什么?
外企银行一般用什么linux版本系统和数据库呢?
neo4j有什么缺点?