`
hideto
  • 浏览: 2649799 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
Note:跟MongoDB的Roger发了email,随后给我开帐号了就可以编辑官方wiki了,那边文档格式会好一些。先发份MongoDB简介在这。

“MongoDB不是在实验室设计出来的。利用我们自己开发大型,高可用性和健壮性系统的经验,我们开发了MongoDB。我们并不是从零开始,而是尝试发现哪些地方有问题,然后解决它。所以在我眼中,MongoDB让你从使用MySQL的基于关系的数据模型转变为基于文档的模型,从而获得如快速的嵌入式文档,易管理,使用无结构数据库进行敏捷开发,易于横向扩展和伸缩(因为join不再重要)等大量特性。使用关系型数据时有很多东西工作的很好,比如索引,动态查询和动态更新等,这些在MongoDB中也没怎么变化。比如,在MongoDB里设计索引应该和你在MySQL或Oracle里一样,你有选择在一个内嵌的域上建索引的能力。”
  – Eliot Horowitz, 10gen公司首席技术官和联合创始人

为什么选择MongoDB?
面向文档
  •   文档(对象)和编程语言的数据类型很好的对应
  •   嵌入式文档和数组减少了join的必要
  •   动态类型(无结构)使结构演变非常容易
  •   没有join和(多对象)事务从而获得高性能和易伸缩性

高性能
  •   没有join和事务使得读写操作很快
  •   可以索引嵌入式文档和数组
  •   可选的异步写操作

高可用性
  •   复制服务器自动和主节点故障转移

易伸缩
  •   最终一致性读操作分布到复制服务器上
  •   自动分片(数据跨服务器自动分区)
  •               读写操作分布在不同的分片上
                      没有join和事物使得分布式查询简单而高效

富查询语言

Mongo大型部署
1. 一个或多个分片,其中每个分片持有部分数据(自动管理)。读写操作自动路由到合适的分片上。每个分片是一个replica set。
一个replica set是一台或多台服务器,每台机器持有相同数据的拷贝。在特定的时间点,一台机器是主节点而其他机器是从节点。如果主节点死掉了,其中一台从节点自动接管为主节点。所有的写操作和一致性读操作都进入主节点,而所有的最终一致性读操作分布到所有从节点上。
2. 多台配置服务器,其中每台配置服务器持有表明数据位于哪个分片的元数据的拷贝。
3. 一个或多个路由器,其中每个路由器都作为一个或多个客户端的服务器。客户端向路由器发起查询和更新,路由器询问配置服务器后将请求分发到合适的分片上。
4. 一个或多个客户端,其中每个客户端都是用户应用程序的一部分,它使用自身语言的mongo客户端驱动向路由器发起请求

mongod是服务器端程序(数据或配置),mongos是路由器程序


小型部署(无分区)
1. 一个replica set(自动故障转移),或者一台主服务器加上零台或多台从服务器(无自动故障转移)
2. 一个或多个客户端,向replica set整体(驱动会管理向replica set中的哪台服务器发起请求)或者单独的主节点发起请求

Mongo数据模型
  • 一个Mongo系统(参考上述部署)包含一组数据库
  • 一个database包含一组collection
  • 一个collection包含一组document
  • 一个Document是一组field
  • 一个field是一对key-value
  • 一个key是一个名字(字符串)
  • 一个value可以是一个
  •             基本类型,如字符串,整数,浮点数,时间戳,二进制等等
                document
                value的数组


Mongo查询语言
你需要通过提供一个包含和你想要的文档匹配的域的查询文档来从一个db collection里获得文档。比如,{name:  {first: 'John', last: 'Doe'}}会和collection里所有的文档使用John Doe这个姓名来进行匹配。类似的,{name.last: 'Doe'}会使用Doe这个姓来和所有文档进行匹配。而{name.last: /^D/}则会匹配姓以‘D’开头(正则表达式匹配)的所有文档。
查询也可以和嵌入式数组进行匹配。比如,{keywords: 'storage'}会匹配keywords数组中包含‘storage’的文档。类似的,{keywords: {$in: ['storage', 'DBMS']}}会匹配keywords数组中包含‘storage’或‘DBMS’的文档。
如果collection中有大量文档,则你需要建索引来加快查询速度。比如,ensureIndex({name.last: 1})或者ensureIndex({keywords: 1})。注意,索引会占用空间并让更新操作稍微变慢,所以在值得做出折衷的时候再使用它。
分享到:
评论

相关推荐

    mongoDB简介.doc

    mongoDB简介mongoDB简介mongoDB简介mongoDB简介

    MongoDB简介与实践.pdf

    MongoDB简介与实践

    MongoDB简介(软件测试)

    MongoDB简介 软件测试

    MongoDB简介习题.pdf

    MongoDB简介习题.pdf 学习资料 复习资料 教学资源

    MongoDB简介与实践.zip

    MongoDB简介与实践.zip

    mongodb-introduction:MongoDB简介

    Cherryleer创建的MongoDB简介

    MongoDB简介及精进PDF

    多个讲解mongodb的文档

    MongoDB简介与实践

    MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

    MongoDB笔记.docx

    一、MongoDB简介 3 二、MongoDB结构 3 二、MongoDB 数据库关系型(这里并不是值关系型数据库的关系) 3 1、MongoDB一对一关系型 3 2、MongoDB一对多关系型 4 3、MongoDB多对多关系型 4 三、创建数据库(mongodb_test...

    graphql-mongo:GraphQL + MongoDB简介

    GraphQL + MongoDB简介实现GraphQL与MongoDB通信的示例应用程序。目录Basic 测试程序,可以使用GraphQL从MongoDB检索数据/向MongoDB添加数据/从MongoDB除去数据,并从终端运行。 Express 运行Express-GraphQL API...

    mongodb学习手册.pdf

    Mongodb简介 1. MongoDB的名称取自“humongous”(巨大的) 的中间部分,足见mongodb的宗旨在处理大量数据上面 2. MongoDB是一个开源的、面向文档存储的数据库,属于Nosql数据库的一种 3. MongoDB可运行在unix、...

    PHP与MongoDB简介|安全|M+PHP应用实例详解

    一、MongoDB简介MongoDB (名称来自”humongous”) 是一个可扩展的、高性能、开源、模式自由、面向文档的数据库,集文档数据库、键值对存储和关系型数据库的优点于一身。官方站点:http://www.mongodb.org/,MongoDB...

    MongoDB系列教程(二):MongoDB简介

    主要介绍了MongoDB系列教程(二):MongoDB简介,本文讲解了MongoDB介绍、MongoDB功能特性、mongoDB数据架构等内容,需要的朋友可以参考下

    MongoDB简介 MongoDB五大特色

    主要介绍了MongoDB简介,MongoDB五大特色,本文讲解了丰富的数据模型、容易扩展、丰富的功能、高性能、简便的管理等内容,需要的朋友可以参考下

    mongodb学习手册

    一、 Mongodb简介 1. MongoDB的名称取自“humongous”(巨大的) 的中间部分,足见mongodb的宗旨在处理大量数据上面 2. MongoDB是一个开源的、面向文档存储的数据库,属于Nosql数据库的一种 3. MongoDB可运行在unix、...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    第1章 MongoDB简介 1.1 关系型数据库简介 1.2 关系型数据库面临的问题 1.3 NoSQL的崛起 1.4 MongoDB是如何解决这些问题的 1.5 初识MongoDB 1.5.1 MongoDB的特点 1.5.2 数据模型 1.5.3 扩展性 ...

    MongoDB安装与链接

    对MongoDB简介、安装与连接。对于刚接触MongoDB很有用的

Global site tag (gtag.js) - Google Analytics