通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

一个大型的SNS网站,是否适合数据库全部用mongodb来做,为什么

一个大型的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营销创造更大价值。

相关文章