传智-玄痛(传智播客北京校区C/C++学院技术指导老师)

MongoDB的起源

几年前 10gen 公司做了 SaaS 方面的研发,由于公司一个 MongoDB 产品存储接口的易用性,用户评价很好,公司開始全力开发 MongoDB。也因此10gen 公司改名为 MongoDB。

MongoDB的应用 

MongoDB 适用于站点数据、游戏数据、缓存、高伸缩性等场景。

眼下。百度、阿里、快的打车、京东、赶集网、360、CERN等众多公司纷纷部署MongoDB。

MongoDB的特点

在 Web2.0 时代,传统 RDBMS 在高性能、高可用性、高可拓展性的要求下開始力不从心。

作为NOSQL一种解决方式。由C++语言编写的开源的文档型数据库系统MongoDB堪称NOSQL 运 动 中 的 明 星 成 员。MongoDB 被 db-engines 站点 (http://db-engines.com/en/ranking_trend) 评为 2014 年年度最受欢迎的数据库管理系统。总结一下 MongoDB 的主要特点:面向文档、模式自由、高可用性、水平拓展、支持丰富。

面向文档

文档就是存储在 MongoDB 中的一条记录 , 是一个由键值对组成的数据结构。如 {"company":"itcast","address":"Beijing"}。作为面向文档(Document-Oriented) 的 数 据 库,document 之 于 collection,record 之于 table。

模式自由

文档是 MongoDB 中数据的基本单元,集合则能够被看作是没有模式的表。

模式自由(schema-free)。每个 Document都包括了元数据信息,每个文档之间不强迫要求使用同样的格式,同一时候他们也支持各种索引。因为没有模式须要更改,通常不须要迁移大量数据。比方一个student 文档:{"name":"C++lover","like":  {"Linux 系统编程 "," 分布式系统 ","MongoDB"}}

高可用性

高可用性 (High Availability,HA) 是尽量缩短因维护和崩溃所导致的停机时间,以提高系统和应用的可用性。MongoDB 支持在复制集 (Replica Set) 通过异步复制达到故障转移,自己主动恢复,集群中主server崩溃停止服务和丢失数据。备份server通过选举获得大多数投票成为主节点,以此来实现高可用。

该模式下为实现读写分离而在备份节点上进行读操作。由于备份server实时同步主server Oplog 写操作,尽管适当的一些读也是可分担部分主节点的任务。可是有添加从节点的延时风险。最新的 MongoDB3.0 提供了 MVCC 机制。实现了文档级别的并发控制。进一步提高了并发性能。

水平拓展

MongoDB不推荐使用从节点实现读性能拓展,而是使用分片 Shard。MongoDB 支持分片技术,它可以支持并行处理和水平扩展。通过自己主动分片技术。Shard 可以在多个片之间分发数据,可以让MongoDB 的部署解决单个server的硬件限制而不须要添加应用程序的复杂性。解决包含 RAM 和磁盘I/O 的限制,一个片通常也是一个复制集。

支持丰富

MongoDB除了提供以上丰富的功能支持,另外还提供了丰富的BSON数据类型,官方 MongoDB 的 官 方 driver 支 持 (C/C++、C#、Java、Node.js、Perl、PHP、Python、Ruby、Scala), 另外社区支持了 MongoDB 的 Go。Erlang的驱动。

此外 MongoDB 内置 MapReduce 引擎等聚合框架,空间地理数据的索引,GridFS 等适合多种业务需求。

MongoDB的未来和思考

大数据时代下的开发势必要求程序可以处理海量的数据。MongoDB凭借自身的特点以及与Hadoop 的结合。无疑奠定了其在云计算和大数据中的重要地位,市场前景明朗,需求自然旺盛。在各大招聘站点上,C/C++ serverproject师大多都有“熟悉NOSQL(MongoDB、Redis 等)优先”等要求。传智播客以就业为导向。已将 MongoDB 前沿技术融

入到传智播客的 C/C++ 学科就业方向的课程中,以提高总体课程的有用性。

最后我希望用两句话引发大家对 MongDB 的思考 :FREE NOT FREE。做最擅长的事。

文章来源:《传智特刊》-26期

订阅纸质版《传智特刊》方法:

微信搜索:CZTEKAN。关注

回复1就可以免费订阅。还包邮哦!

MongoDB,还有一个角度看数据的更多相关文章

  1. 另一个角度看元宇宙与RPA:人工世界、平行员工与RPA

    另一个角度看元宇宙与RPA:人工世界.平行员工与RPA 从元宇宙到平行员工,人工世界推动的虚实分工利好RPA 机器人是铁打营盘人类是流水兵,未来元宇宙的虚实分工RPA机会巨大 文/王吉伟 元宇宙是平行 ...

  2. CI Weekly #16 | 从另一个角度看开发效率:flow.ci 数据统计功能上线

    很开心的告诉大家,flow.ci 数据统计功能已正式上线. 进入 flow.ci 控制台,点击「数据分析」按钮,你可以按照时间日期筛选,flow.ci 将多维度地展示「组织与项目」的构建数据指标与模型 ...

  3. Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会

    文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...

  4. INDEX--从数据存放的角度看索引2

    在上次<INDEX--从数据存放的角度看索引>中,我们说到"唯一非聚集索引"和“非唯一非聚集索引”在存储上有一个明显的差别:唯一非聚集索引的非叶子节点上不会包含RID的 ...

  5. 从一个开发的角度看负载均衡和LVS--FullNat

    从一个开发的角度看负载均衡和LVS 在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务 ...

  6. 深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用

    深度挖坑:从数据角度看人脸识别中Feature Normalization,Weight Normalization以及Triplet的作用 周翼南 北京大学 工学硕士 373 人赞同了该文章 基于深 ...

  7. XML的应用 ---- 从一个范例看xml数据、xsd验证、xslt样式

    从一个范例看XML的应用 引言 如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个问题:在那篇文章的方式2中,客户端仅仅是发送了页面上一个文本框的内容到服务端 ...

  8. MongoDB + Spark: 完整的大数据解决方案

    Spark介绍 按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎. 通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及 ...

  9. Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会

    本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...

随机推荐

  1. 判断openfire用户的状态

    /** * 判断openfire用户的状态 * 说明 :必须要 openfire加载 presence 插件,同时设置任何人都可以访问 * /status?jid=user1@my.openfire. ...

  2. 【mybatis】mysql级联更新两个表或多张表的数据

    例如 info表和relation表有关联,现在要在一个sql语句中同时级联更新两张表的数据 update security_code_info info LEFT JOIN security_cod ...

  3. .NET:用T4消除代码重复,对了,也错了

    背景 我需要为int.long.float等这些数值类型写一些扩展方法,但是我发现他们不是一个继承体系,我的第一个思维就是需要为每个类型重复写一遍扩展方法,这让我觉得非常不爽,但是我还是不情愿的写了, ...

  4. C++ 函数参数中“ *&代表什么? ”

    typedef struct BitNode  {      char value;      BitNode *lchild,*rchild;    }BitNode,*BiTree; void C ...

  5. C#中载入界面的几种做法

    1. 采用事件委托的方法  对象:主窗体:FrmMain 加载窗体:FrmLoading  思路:  在主窗体加载前显示窗体FrmLoading,当主窗体加载完毕后(第一次显示的时候),关闭FrmLo ...

  6. Windows 批处理 ping 某个网段

    原文: https://blog.csdn.net/leuxcn/article/details/51288248 ------------------------------------------ ...

  7. (1)风色从零单排《C++ Primer》 一个简单的c++程序

    从零单排<C++ Primer> --(1)一个简单的c++程序 本次学习收获 0.写在前面 风色以前上过C++的课程,然而当时并没有认真去学,基本不能使用c++来作项目开发. 这次又一次 ...

  8. eclipse中android开发怎么修改xml文件字体大小

    windows->preference->General->appearence->Colors and Font->Basic->Text Font.点击右侧的E ...

  9. 让Android App启动更协调

          不知道大伙有没有发现,应用第一次启动的时候一般比较慢(低配置手机尤其如此),黑屏好一段时间,下面是我在模拟器中启动QQ的截图,黑屏差不多有5秒左右,如下图所示~      显然这种结果很糟 ...

  10. 初识 NoSQL Databases RethinkDB

    初识 NoSQL Databases RethinkDB rethinkDB所有数据都是基于 json的Document; 官网:http://rethinkdb.com/ github: https ...