MongoDB学习整理(二)--特点及概念介绍

本文是学习MongDb:The Definitive Guide(Mongodb权威指南)一书做的浅显的整理,请大神们多多指教。

  • 丰富的数据模型
    MongoDB是面向文档的非关系型数据库,区别于关系型数据库,将关系型数据库的行的概念转变为文档。面向文档的方式可以将文档或数据内嵌到单个文档中,这样一条记录就可以表示非常复杂的数据结构关系。同时符合面向对象的设计思路。
    MongoDB没有模式,文档的键不会事先定义也不会固定不变。由于不用将所有的数据都放到一种固定的模式里,所以应用层可以非常容易的变更数据模型,处理新增或丢失的键。没有模式的变更需求,也减少了大量数据迁移的需求。
  • 容易扩展
    数据的指数级增长,必定会使开发者面临一个非常困难的选择,如何扩展数据库?升级or扩展,升级是最省力的方法,但大型机一般都很昂贵且达到物理极限后的很难买到更好的机器。这样做即不划算也不现实。而扩展就不同了。
    mongodb面向文档的特点,可以使其自动在多动服务器之间分割数据,平衡集群数据和负载,自动重排文档。当需要更大的容量时,只需在集群中增加新机器,数据的扩展交给数据库来完成。开发者也可以专注于如何编写应用,而不是考虑如何扩展数据。
  • 丰富的功能
    MongoDB支持通用辅助索引、能进行多种快速查询、提供唯一的,复合的和地理空间的索引能力。
    开发人员不必使用存储过程,可以在服务端直接存取javascript函数和值。
    支持MapReduce和其它聚合工具
    固定大小的集合对某些类型的数据非常有用,如日志。
    支持用一种容易使用的协议来存储大文件和元数据。
    注意:MongoDb不支持联接(join)和复杂的多行事务。
  • 简便的管理
    除了启动数据库服务器外,几乎没有什么性格的管理操作。Mongodb尽量让服务器自治来简化数据库的管理。主服务器一旦挂掉,会自动切换到备用服务器,并设置备用服务器为活跃服务器。分布式环境下,集群只需要知道有新增的节点就会自动集成和配置新节点。
  • 性能
    Mongodb尽量将服务器端处理逻辑交给客户端,这样的设计获得了非常好的性能。MongoDb使用MongoDb传输协议作为与服务器交互的主要方式,对文档进行动态填充,预分配数据文件,用空间换取性能的稳定。默认的存储引擎使用了内存映射文件,将内存管理工作交给操作系统处理。动态查询优化器会记住执行查询最高效的方式。
  • 基本概念
    1、文档是Mongodb的核心概念,类似于关系型数据库中的行记录,是组成集合的基本数据单元,如:
    {"greeting":"hello world!"}
    这是一个简单的文档,只有一个键greeting,其对应的值为hello world。
    一个文档可以有多个键值对,且位置没有固定要求。
    文档中的值可以是其它数据类型,可以有整数据,有数组,有集合,如
    {"name":"lim","age":1,"fruit":["apple","orange"],"comments":{"author":"mm","email":"mm@gmail.com"}}
    键不能含有表示结尾的\0字符。
    以_(下划线)开头的键是保留的。
    $有特别的意义,在特定的环境下才使用。
    不能有重复的键,键区分大小写。
    每一个文档都有一个唯一的特殊的_id键,该键由12个字节组成,每个字节由2个字符组成,共24个字符。

    2、集合类似于关系型数据库中的表,但它是无模式的,这就意味着集合中的文档可以是各种各样的,如:
    {"name":"lim","age":27}
    {"name":"lina"}
    {"book":"war and peace","fruit":"apple","favorite":"sports"}
    无模式并不意味着需要把所有的数据全放在一个集合里,这样做在具体的开发环境中并不是最合适的,原因有以下几点:
    a、把所有的文档放在一个集合里,开发者要么需要每次查询只返回需要的文档。要么让查询应用程序处理所有不同类型的文档,这是一个非常烦人的过程,且在查询速度的上也不划算。
    b、同类型的文档放在一起,数据会更加集中,且索引会更加有效。

    集合的命名不可以是空字符串,不可以带有\0,不能以系统集合保留前缀system开头,不能含有保留字符$
    组织集合名的一种通用方式是用.字符分开,按命名空间划分的子集合,如blog.author blog.content

    3、数据库是由多个集合组成的,一个mongodb实例可以承载多个数据库,各数据库之间完全独立。
    数据库的命名不可以是空字符串,不可以包含特殊字符(’‘ 空格、. $ \ / \0),全部采用小写,不超过64字节。
    有一些数据库是保留的,可以直接访问。如:
    admin:管理用户和用户权限。
    local:存储本地单台数据库上的任意集合,不会被复制。
    config:保存内部分片信息。
    数据库加上集合名就是完整的命令空间,长度不可以超过121个字节

    4.mongodb默认监听端口是27017,还会启动一个http服务器,监听28017端口。

    5.自带JavaScript Shell,可以非常方便的管理Mongodb数据实例。shell在启动后自动连接mongodb服务器,所以确保使用shell前启动mongodb服务器。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值