您的位置:首页 > 数据库 > Mongodb

Mongodb 初探

2017-03-17 22:14 169 查看
什么是 Mongodb

要想解释 Mongodb 首先得解释“非关系型数据库”。我们知道传统数据库都是以行和列进行存储,拥有相同列的行数据组成了一个表,多个表组成了一个数据库。表与表之间是有关系的,所以称为关系型数据库。而与之相对的别一种概念 NoSQL (Not only SQL) 却是泛指非关系型数据库,那非关系型数据库就不是以行和列的概念来组织的了,尤其是列的概率,更是一种颠覆。

一般非关系型数据库包括:

健值存储数据库

列存储数据库

文档型数据库

图形数据库

Mongodb 其实是一种文档型数据库,它的数据载体是一种类 JSON 的 BSON 格式,不过你可以认为它就是 JSON 不过支持二进制类型。拿关系型数据库作类比,以前的表在 Mongodb 中就叫做 Collections,只是个定义不同,与之对应的以前的行,这时就叫做 Document。没有列的概念,如果偏要说列体现在哪里,可以认为是 BSON 的 Filed。

这种存储格式也决定普通意义的按列索引,严格的列规范在这时就不受用了。不过 Mongodb 自然有自己优势,那就是插入数据不再关心要不要严格一致,缺少某些列也可以允许插入。并且按 Filed 查找也同样保证了高效。那业务在做技术选型的时候就可以考虑这些特点进行决策了。

如何使用 Mongodb

安装

最简单的方法,就是利用 yum 进行安装。

vim /etc/yum.repos.d/mongodb.repo
输入下面的内容:
[mongodb]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0


上面就配置好了 mongodb 的 yum 源,直接运行

sudo yum install mongodb-org


如果中途下载失败,可以根据提示,手动到相就 url 下面下载安装 rpm 包。

配置

默认配置文件在 /etc/mongod.conf。跟一般的软件配置文件类似,很多项看名字就可以知道是什么意思了。有下面的几项比较重要。

auth=true


默认该关闭,因为 mongodb 启动时,是不用验证的,谁都可以连接上来操作,但这样不安全。所以第一步我们先来添加一些用户。在保证auth=true 被注释的情况下,运行

service mongod start

// 首先我们创建一个自己的库
[root@localhost mongodb]# mongo
MongoDB shell version: 2.6.12
connecting to: test
> use mydb
switched to db mydb
>
// 使用 use [database_name] 就是切换到数据库,如果没有,就新建。

> db.addUser("temp", "temp")
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "temp", "roles" : [ "dbOwner" ] }
>
// 现在开始,剩下的命令操作的上下文环境都是在 mydb 的库中。
// db.addUser([user], [pwd]) 在该库中添加一个用户。
// 打开配置文件中的auth=true,然后
service mongod restart
// 重启 mongod 数据库
[root@localhost mongodb]# mongo
MongoDB shell version: 2.6.12
connecting to: test
> use mydb
switched to db mydb
> db.auth("temp", "temp")
// 在 mydb 库下面给 temp 用户授权,这样的话,就可以拿 temp/temp 这个用户去登录 mydb 这个库了。


使用

> db.mytable.insert({id:1})
WriteResult({ "nInserted" : 1 })
> show collections
mytable
system.indexes
// db.[Collection].insert([BSON]) 这里的 Collection 故意起名为 mytable,其实就是对应的表,insert 参数的内容就是一个 BSON 对象
> db.mytable.find()
{ "_id" : ObjectId("58cbebd3cd892e48484ffc86"), "id" : 1 }
//  就可以看到刚插入的一个文档了。


结束语

有了上面的直接感受,就算是 mongodb 体验了一下,相信后面的发挥就可以自由想像了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: