mongodb(1)简介

一、nosql简介

RDBMS(关系型数据库)提供的结构化编程,让数据建模以及应用程序编程变得非常简单,带来了非常高的经济效益,并且学习成本也比较低。但在当今数据大爆炸时代,每时每刻都会海量的数据产生,对于数据的读写要求也越来越高,RDBMS已经不能满足人们的需求了,nosql则应运而生。

nosql(not only sql)意为:不再仅仅是结构化查询,它完全区别于RDBMS的数据存储结构,只需保证数据最终一致性而不是遵循ACID原则,读写性能远远超过RDBMS数据库。在大数据存储当中是必不可少的。

常见的nosql如:

1)redis

2)mongodb

3)memcached

二、mongo简介

mongo也是nosql,但是它和redis不同,它介于nosql和rdbms之间。采用C++编写的,是一个分布式文件存储的开源数据库系统,具备高性能、高可用、易扩展等特性。基本的数据结构是:key-value的结构,可以类比json数据结构来理解mongo的数据结构。

我们先看四个关键概念:

1)数据库(database)

与所有数据库系统一样,mongo也可以创建多个独立的database,database用来存储数据。

2)集合(collection)

我们可以类比RDBMS的“表”的概念来理解collection,collection存储在database当中。

3)文档(document)

我们可以类比RDBMS的“行”的概念来理解document,document存在于collection当中。

4)域(field)

我们可以类比RDBMS的“列”的概念来理解field,field存在于document中。

如下图:

三、数据类型

数据类型 描述
String 字符串
Integer 整型
Boolean 布尔型
Double  双精度
Min/Max keys 将一个值和bson的最低值和最高值对比
Array 数组或者列表
Timestamp 时间戳
Object 用于内嵌文档
Null 创建空值
Sympol 符号,一般与String相同
Date 日期时间
Object ID 对象ID
Binary Data 二进制
Code js脚本代码
Regular expression 正则表达式

以上的数据类型中特别提及一下Object ID,它类似于一个唯一主键可以进行快速的生成和排序,包含12byte:

0-3个字节是格林尼治时间的时间戳(晚北京8个小时)

4-6是机器标识码

7-8是进程ID

9-11是随机数

mongo中存储的文档必须有一个_id键。这个键的值可以是任何类型的,但是默认是Object ID。

由于ObjectId默认保存了创建的时间戳,所以你无需为你的document保存创建时间戳字段,你可以通过getTimestamp来获取该时间戳。如:

> var newObject = ObjectId()
> newObject.getTimestamp()
ISODate("2017-11-25T07:21:10Z")

四、总结

mongo采用C++编写,是分布式文件存储的开源数据库,高性能、高可用、易扩展,数据结构类似于json的结构,支持丰富的数据类型。

猜你喜欢

转载自www.cnblogs.com/lay2017/p/9593596.html
今日推荐