Mongo – Class One

1. Concept

MongoDB的文档数据库特性表示对非结构化存储的支持非常好,即不能确定表的列结构的数据。这类数据无法固定模式/模型,数据结构持续变化中,数据库管理员和开发人员的压力被扩大。但多媒体这类二进制数据为”非结构化“数据并不准备。例如:调查表。每个被调查公司的调查项都不一样

MongoDB具有一些特点

· 面向文档的存储引擎,可以方便支持非结构化数据
· 全面的索引支持,可以在任意属性上建立索引
· 数据库本身内置的复制和高可用
· 数据库本身支持的自动分片集群
· 丰富的基于文档的查询功能
· 原子化的数据操作
· 支持Map/Reduce
· GridFS

MongoDB有下面三种逻辑对象

文档:mongoDB的“行”以json的形式表示(key-value的集合),称为一个document(文档),例如{“foo”:3, “greeting”:”hello world”}。注意一个文档中的key不能重复。文档中可以嵌入文档。
集合:一组文档的集合,文档类似于关系数据库中的行而集合类似于关系数据库里的表。集合是无模式的,即集合中的文档可以五花八门,没有固定格式。
数据库:由多个集合组成

MongoDB中的特殊数据库

admin
This is the “root” database, in terms of authentication. If a user is added to the
admin database, the user automatically inherits permissions for all databases.
There are also certain server-wide commands that can be run only from the admindatabase, such as listing all of the databases or shutting down the server.
local
This database will never be replicated and can be used to store any collections that
should be local to a single server (see Chapter 9for more information about replication and the local database).
config
When Mongo is being used in a sharded setup (see Chapter 10), the configdatabase
is used internally to store information about the shards.

2. 安装MongoDB

使用yum安装MongoDB

添加yum源

安装mongoDB

使用apt-get安装MongoDB

3. mongod的配置文件

mongod是mongoDB数据库的后台服务器进程,使用yum/apt-get安装好mongoDB后,在/etc下会创建mongod的配置文件,下面列举一些常用的启动参数。
[root@debugo] vim /etc/mongod.conf
dbpath=/var/lib/mongodb #数据库文件目录
logpath=/var/log/mongodb/mongod.log #指定MongoDB日志文件,注意是指定文件不是目录
logappend=true #每次启动mongod以append写入日志,否则覆盖之前的日志
fork=true #是否以daemon方式启动
#port=27017 #web端口,27017是默认端口
bind_ip = 172.19.17.202 #监听地址,如果指定为127.0.0.1则只能通过本地环路地址访问
auth = true #启用验证
journal=true #开启journal记录,journal相当于Oracle中的redo log,用于实例恢复。详情mongodb中journal工作原理
启动mongod服务器时,必须指定命令行参数或者使用的参数文件,否则以默认设置启动。
mongod -f /etc/mongod.conf

4. ulimit设置

下面是官网为mongoDB服务器部署给出的ulimit建议:

5. mongo – MongoDB Shell

mongo是mongoDB交互式JavaScrip Shell, 可以用于系统管理员进行管理操作,或者开发者直接在数据库查询测试。该Shell可以解析JavaScript,指定–eval 可以解析解析一个js语句,或者直接执行一个js文件mongo 。mongo可以直接连到一个数据库上,例如连接到10.8.8.10的test数据库上: mongo 10.8.8.10/test。
直接输出mongo会连接到localhost的test数据库上。

切换并使用数据库

当在该数据库下有对象存在时,那么该集合和数据库就会被创建出来。
关于列中的_id:插入时MongoDB会检查文档是否包含_id,如果文档没有指定_id,MongoDB会为其创建;
默认情况下,插入文档时MongoDB仅检查传入数据是否包含_id以及数据大小是否超过16MB(v1.8-为4M),除此之外不再做任何验证;

^^
Reference:
Tigerfish NoSQL数据库引航
MongoDB Manual

Posted in Database, JavaScript, NoSQL.