标签:经济 ESS ssi 精度 默认 数据库系统 海量 div mon
一、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的结构,支持丰富的数据类型。
标签:经济 ESS ssi 精度 默认 数据库系统 海量 div mon
原文地址:https://www.cnblogs.com/lay2017/p/9593596.html