MongoDB权威指南-简介

1. 简介


* MongoDB是面向文档(document-oriented)的数据库。
* 面向文档的方法能够仅使用一条记录来表现复杂的层次关系。
* 不再有预定义模式(predefined-schema):文档的键(key)和值(value)不再是固定的类型和大小。
* 应该如何扩展数据库?实质上,这是纵向扩展(scale up)和横向扩展(scale out)之间的选择。纵向扩展就是使用计算能力更强的计算机。横向扩展既便宜又易于扩展;不过,管理1000台机器比管理1台机器显然要困难得多。
* MongoDB能自动处理跨集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上。
* 索引 indexing

 MongoDB支持通用二级索引,允许多种快速查询,且提供唯一索引、复合索引、地理空间索引,以及全文索引。

*  聚合arregation

 支持复合管道arregation pipeline.用户能通过简单的片段创建复杂的聚合,并通过数据库自动优化。

*  特殊的复合类型

 MongoDB支持时间有限的集合,例如会话;也支持固定大小的集合,用于保存近期数据,例如日志。

*  文件存储

 可用于存储大文件和文件元数据。

* 卓越的性能

 MongoDB能对文档进行动态填充dynamic padding,也能预分配数据文件以利用额外的空间来换取稳定的性能。


1. 基础知识


* 文档是MongoDB中数据的基本单元
* MongoDB的一个实例可以拥有多个相互独立的数据库database,每个数据库都拥有自己的集合。
* 每一个文档都有一个特殊的键'_id',这个键在文档所归属的集合中是唯一的。
* 文档就是键值对的一个有序集。
* 集合就是一组文档
* GridFS(一种用于存储大文件的协议)使用子集合来存储文件的元数据,这样可以很好与文件内容块很好地隔离开来。
* 在MongoDB中,多个文档组成集合,而多个集合可以组成数据库。
* admin库 从身份验证的角度来讲,这是root数据库
* local库 这个数据库永远都不可以复制
* config库 MongoDB用于分片设置时,分片信息就会存储在config数据库中。
* 在启动MongoDB前,先创建数据目录,如 mkdir -p /data/db/
* mongod还会启动一个非常基本的HTTP服务器,通过浏览器访问http://localhost:28017,能获取数据库的管理信息
* shell是一个功能完备的javascript解释器,可运行任何JavaScript程序。
* MongoDB在保留JSON基本键/值对特性的基础上,添加了(布尔、数字,字符串、null,数组、对象)其他一些数据类型:日期、正则表达式、内嵌文档、对象id ObjectId()、二进制数据、代码
* shell根据本地市区设置显示日期对象。然而,数据库中存储的日期仅为新纪元以来的毫秒数,并未存储相应的时区。
* 内嵌文档:文档可以作为键的值,这样的文档就是内嵌文档
* _id和ObjectId,每个文档必须有一个"_id"键,这个键的值可以是任何数据类型的,默认是个ObjectId对象。
* ObjectId使用12字节的存储空间,是一个由24个十六进制数字组成的字符串。0-3位为时间戳,4-6位为机器,7-8位为PID,9-11位为计数器。
* 因为设计MongoDB的初衷就是用作分布式数据库,所以能够在分片环境中生成唯一的标识符非常重要。为了确保同一台机器上并发的多个进程产生的ObjectId是唯一的,ObjectId使用了进程标识符PID.
* MongoDB的哲学:能交给客户端驱动程序来做的事情就不要交给服务器来做。
* 某些脚本会被频繁加载,可以将他们添加到mongorc.js中,这个文件会在启动shell时自动运行。
* mongorc.js最常见的用途之一是移除那些比较"危险"的shell辅助函数。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章