MongoDB,无模式文档型数据库简介

  最近关于">关系数据库未来走向的讨论越来越多,51CTO.com之前曾报道过《关系数据库的末日是否已经来临》和《关系数据库的根本问题分析》等文章,受到了广泛的关注。今天向大家介绍一个新的文档型数据库Mongo。

  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数据库的介绍可以参考其官方网站:http://www.mongodb.org/display/DOCS/Home

时间: 2024-10-14 11:48:53

MongoDB,无模式文档型数据库简介的相关文章

文档式数据库在Hadoop集群中的应用

2013年11月22-23日,作为国内唯一专注于Hadoop技术与应用分享的大规模行业盛会,2013 Hadoop中国技术峰会(China Hadoop Summit 2013)于北京福朋喜来登集团酒店隆重举行.来自国内外各行业领域的近千名CIO.CTO.架构师.IT经理.咨询顾问.工程师.Hadoop技术爱好者,以及从事Hadoop研究与推广的IT厂商和技术专家将共襄盛举. 在SQL&NoSQL专场,来自巨彬软件的CTO王涛做了<文档式数据库在Hadoop集群中的应用>演讲,从大数据

文档型漏洞攻击研究报告

本文讲的是文档型漏洞攻击研究报告, 研究背景 由于反病毒技术快速发展及免费安全软件在全球的高度普及,恶意程序的传播变得越来越困难.自2013年以来,中国一直是全球个人电脑恶意程序感染率最低的国家. 但是随着漏洞挖掘及利用技术越来越公开化,导致越来越多的黑客更加倾向于利用常见办公软件的文档漏洞进行恶意攻击,特别是在一些APT(Advanced Persistent Threat)攻击中,更是体现得淋漓尽致.针对特定目标投递含有恶意代码的文档,安全意识薄弱的用户只要打开文档就会中招. 对于漏洞文档(

python-scrapy+mongodb insert的文档数目不够的原因?

问题描述 scrapy+mongodb insert的文档数目不够的原因? 我使用mongo储存scrapy爬下来的页面数据,在管道中为同时向db和txt中写入结果,结果发现txt有8000多条记录,而db中count才831条,百思不得其解.后来将db中数据导出,发现似乎是item['content'](文章内容)字段内容比较多的就没有成功插入db.后来想了下,似乎是db的单个文档大小有限制,但是这些文本写到txt最多不过几十kb,这到底是什么问题?附上管道process_item的代码 de

Domino下批量删除邮箱用户个人配置文档及数据库文件

近期一直在看Domino相关的文章,加上公司也用的是Domino系统,然后加上公司的用户数据量比较庞大,而且人员流动比较大,每日入职删除的人员比较多,这样给管理员的工作添加了很大的负担,那有什么好的办法能批量进行操作么.答案是有,那就创建一个domino库来实现,具体操作见下: 环境介绍: 我环境内放了两台Domino server,分别为: Domain-mail01.gawian.com Daomin-mail02.gawain.com 而且在每个服务器上创建了不同用户来进行实验,具体见下:

mongodb java-怎样在java中调用Mongodb内嵌文档中的值?

问题描述 怎样在java中调用Mongodb内嵌文档中的值? 大概的数据结构如下所示,可以使用mongodb的命令 db.first.find( {"EventParameter.TotalSeconds":3} )查询TotalSeconds为某一个数值,比如3数据,但是在java中怎么获取到所有的数值呢?如下面一行代码中get函数中的参数应该怎么写才能获取所有的时间? float seconds=Float.parseFloat(record.get("TotalSeco

XML 文档与数据库表

  包括SQL Server 7.0 在内的SQL Server 系列版本并不提供XML. 支持开发人员以前不得不使用一个XML 分析器,如微软的XML 分析器(MSXML),而且它们必须编写自己的代码来处理细节:把不同的元素从XML 文档中提取出来并按需要把它们放进关系表的不同部分,然后访问关系表:或者编写代码将数据从数据库表中提取出来,再以正确的格式放回到XML 文档中.当我们在享受XML 所带来的好处时,我们常会发现自己在开发Web 应用程序时不得不应付这样的工作,而且在开发不同的Web

MS SQL基础教程:XML文档与数据库表

包括SQL Server 7.0 在内的SQL Server 系列版本并不提供XML. 支持开发人员以前不得不使用一个XML 分析器,如微软的XML 分析器(MSXML),而且它们必须编写自己的代码来处理细节:把不同的元素从XML 文档中提取出来并按需要把它们放进关系表的不同部分,然后访问关系表:或者编写代码将数据从数据库表中提取出来,再以正确的格式放回到XML 文档中.当我们在享受XML 所带来的好处时,我们常会发现自己在开发Web 应用程序时不得不应付这样的工作,而且在开发不同的Web 应用

PHP库 查询Mongodb中的文档ID的方法_MongoDB

在IBM我的一份新工作是一名开发的后勤人员.那意味着我的大部分时间是在和数据库打交道.在我的工作流程中,我花了一些时间在MongoDB上面--这是一个文档数据库.但是在通过ID来检索记录这个操作上面我碰到了一些问题.下面的代码是最终版本,以后碰到类似的问题我可以直接引用它.如果大家也需要,希望下面对大家有所帮助. MongoDB 和 IDs 当我向一个集合中插入数据的时候,我并没有设置_id字段:如果这个字段是空的话,那么MongoDB将要自动生成一个ID来使用,这对我来说是非常不错的.然而,当

MongoDB中对文档的增删查改基本操作方法总结_MongoDB

插入文档:insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法: insert() 命令的基本语法如下: >db.COLLECTION_NAME.insert(document) 例子:  >db.mycol.insert({    _id: ObjectId(7df78ad8902c),    title: 'MongoDB Overview',     description: 'MongoDB is