MongoDB的名字源自一个形容词humongous(巨大无比的),在向上扩展和快速处理大数据量方面,它会损失一些精度,在旧金山举行的MondoDB大会上,Merriman说:“你不适宜用它来处理复杂的金融事务,如证券交易,数据的一致性可能无法得到保证”。若想了解更多关于MongoDB的信息,请看51CTO数据库频道推荐《MongoDB,无模式文档型数据库简介》。

NoSQL数据库都被贴上不同用途的标签,如MongoDB和CouchDB都是面向文档的数据库,但这并不意味着它们可以象JSON(JavaScript Object Notation,JavaScript对象标记)那样以结构化数据形式存储文本文档。

JSON被认为是XML的代替品,它是一个轻量级的,基于文本交换数据的标准,和XML一样具有人类易读的特性。简单的JSON数据结构叫做对象,可能包括多种数据类型,如整型(int),字符串(string),数组(array),日期(date),对象(object)和字节数组(bytearray)。

面向文档的数据库与关系数据库有着显著的区别,面向文档的数据库用一个有组织的文件来存储数据,而不是用行来存储数据,在MongoDB中,一组文档被看作是一个集合,在关系数据库中,许多行的集合被看作是一张表。

但同时它们的操作又是类似的,关系数据库使用select,insert,update和delete操作表中的数据,面向文档的数据库使用query,insert,update和remove做意义相同的操作。

MongoDB中对象的最大尺寸被限制为4MB,但对象的数量不受限制,MongoDB可以通过集群加快操作的执行速度,当数据库变得越来越大时,可以向集群增加服务器解决性能问题。

Wordnik工程副总裁Tony Tam说他的公司有5百万个文档,以前保存在MySQL数据库中,大约有1.5TB,一个月前迁移到MongoDB上了,Wordnik专门收集所有单词的定义和信息,因此数据量是非常大的,迁移到MongoDB后,Tony Tam说他感到更放心。

Tam说使用MySQL数据库时,Wordnik项目一直都象是在颠簸的路上前行,数据表的冻结时间有时甚至超过了10秒,这是任何人都不能容忍的。每天会有大约200个新单词出现,我们要负责收集,并要向数据库增加1500个例子显示它们的用法,我们希望写入数据库的时间只需要1秒。Tam说:“我们不关心一致性,前后两个用户的查询结果不一定非得保持一致,我们本来就是时刻在做着更新,这一点我们无法保证”。

Wordnik系统就象是一个庞大的在线词典,有很多人同时在线查询,但同时我们也在做更新,使用MongoDB后,我们可以保持高速添加数据,不用担心数据库会出现堵塞。Tam在MondoDB大会上曾做过一个题为“Wordnik:从MySQL到MongoDB”的演讲,他说他们公司只花了一天时间就从MySQL迁移到MongoDB上了。

延伸阅读

MongoDB Logo

Mongo是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发,提供了以下功能:

◆面向集合的存储:适合存储对象及JSON形式的数据。

◆动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

◆完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。

◆查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。

◆复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。

◆高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。

◆自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。

MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。根据官方网站的描述,Mongo适合用于以下场景:

◆网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

◆缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。

◆大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。

◆高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。

◆用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。

自然,MongoDB的使用也会有一些限制,例如它不适合:

◆高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。

◆传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。

◆需要SQL的问题

MongoDB支持OS X、Linux及Windows等操作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。

MongoDB,无模式文档型数据库简介相关推荐

  1. mongodb单表最大记录数_SpringBoot+Cloud全家桶微服务实战项目之文档型数据库MongoDB四...

    ​一.MongoDB简介以及使用场景 MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种.它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富, ...

  2. spring cloud alibaba微服务原理与实战_SpringBoot+Cloud全家桶微服务实战项目之文档型数据库MongoDB四...

    ​一.MongoDB简介以及使用场景 MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种.它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富, ...

  3. 悉数11种主流NoSQL文档型数据库

    悉数11种主流NoSQL文档型数据库 文档型数据库是NoSQL中非常重要的一个分支,它主要用来存储.索引并管理面向文档的数据或者类似的半结构化数据.顾名思义,文档型数据库(面向文档数据库)的关键核心概 ...

  4. 关系型数据库到文档型数据库的跨越

    1. 简介 在文档型NoSQL数据库出现之前,许多开发者一直绞尽脑汁思考,希望能想出更好的处理关系型数据库技术的方法,如今他们可能要跳出那种思维而另辟蹊径.本文将介绍关系型数据库和分布式文档型数据库的 ...

  5. 文档型数据库设计模式-如何存储树形数据

    在数据库中存储树形结构的数据,这是一个非常普遍的需求,典型的比如论坛系统的版块关系.在传统的关系型数据库中,就已经产生了各种解决方案. 此文以存储树形结构数据为需求,分别描述了利用关系型数据库和文档型 ...

  6. 文档型数据库列一般都是弱项

    文档型数据库一般都是以行为基础得,添加更新删除等操作,因为文档型数据的一般存储结构都是键值对.所以对列的概念很弱,比如有一些文档数据库,是无法对单列操作的,有时候想修改一列的值,只能所有数据全部重新添 ...

  7. 非关系型数据库 之 文档型数据库 MongoDB 的使用(Python3)

    文章目录 1.MongoDB 简介 1.1.简述 1.2.应用场景 1.3.优点 1.4.缺点 2.CentOS 操作 MongoDB 2.1.安装启动 2.1.1.下载安装 2.1.2.后台启动 2 ...

  8. 文档型数据库mongodb介绍2-副本集

    一. 副本集介绍 之前的文章介绍了 mongodb主从 mongodb提供了另外一种 基于副本集的集群 该方式 是一主一从的升级版  一主多从, 仍然是主节点负责写入 从节点定时同步主节点数据 使用该 ...

  9. MongoDB小型文档型数据库使用

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中 ...

  10. 关系型到文档型的跨越:颠覆你对数据库数据模型的认识

    1. 简介 在文档型NoSQL数据库出现之前,许多开发者一直绞尽脑汁思考,希望能想出更好的处理关系型数据库技术的方法,如今他们可能要跳出那种思维而另辟蹊径.本篇白皮书将介绍关系型数据库和分布式文档型数 ...

最新文章

  1. java 月第一天_java获取当前月第一天和最后一天
  2. 深入理解JavaScript系列(33):设计模式之策略模式(转)
  3. Effective C# Item45 : 优先选择强异常安全保证
  4. deepin v20.2.4设置全局搜索的快捷键
  5. 区块链参考资源, 雷达 信号处理
  6. 【工具】SecureCRT安装和注册
  7. Python--发送邮件
  8. rtt面向对象oopc——4.IO设备管理之父类调用子类方法
  9. JVM内存分配策略原
  10. cad完全卸载教程_AutoCAD 2019 如何卸载,彻底卸载CAD教程
  11. 面向对象11:向下转型的使用、instanceof关键字、Object类的使用
  12. linux shell将字符串分割数组
  13. 基于c语言的学生成绩管理系统论文,C语言学生成绩管理系统论文
  14. 谈谈RJ45线序的打法及口诀
  15. 避免踩坑,数据库主键字段不能为空
  16. CleanMyMac2023免费版系统清理优化工具
  17. 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1316期】
  18. win10 系统不显示机械硬盘(装在光驱位置)
  19. 什么是WAN?定义了广域网,示例以及它们的发展方向-ielab
  20. android chrome html,在桌面chrome中调试android设备中的web页面

热门文章

  1. linuxamp;amp;shell学习(积累中。。。)
  2. iPadOS 14.7和macOS 11.5,以及操作系统更新的安全说明
  3. Android的ImageView中scaleType属性值的详解
  4. (日常搬砖)voc(xml)格式的标注转换为coco(json)格式
  5. [技术帖] js中,双引号,引发的问题
  6. mac系统使用技巧链接汇总
  7. 连线杂志:史上最强的恶意软件Stuxnet揭秘
  8. 「leetcode」51. N皇后【回溯算法】详细图解!
  9. 苹果Mac 下 Parallels Desktop “无法连接到 Parallels 服务”的解决方法
  10. 苹果Mac专业的 Go 开发集成环境:JetBrains GoLand