现在很多公司都会在使用MySQL、Oracle数据库的同时,采用MongoDB存储复杂表单数据,首先介绍一下什么是MongoDB:
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
(1)MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
(2)MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
(3)MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB的一些知识点:
MongoDB不但区分数据类型,也区分大小写,不像数据库不区分大小写
MongoDB的文档不能有重复的键
MongoDB数据库名:不能是空字符串,不得含有空格、. 、$、/、\等等,数据库名应该全部小写,最多为64位字符串
MongoDB一般作为网络服务器来运行,客户端可以连接到该服务器并执行操作,要启动该服务器,需运行mongod可执行文件
在没有参数的情况下,使用默认数据目录/data/db,并使用27017端口,mongod还会启动一个非常基本的HTTP服务器,监听数字比主端口号高1000的端口号,28017,可访问,http://localhost:28017来获取数据库的管理信息
CRUD:db.集合名.insert、db.集合名.find、db.集合名.update、db.集合名.remove(这里只是简单介绍,后续文章会进行详细介绍)
MongoDB存储的文档中,必须有一个”_id“键作为唯一标识
ObjectId构成
ObjectId是”_id“的默认类型,ObjectId使用12字节的存储空间,每个字节两位十六进制数,ObjectId是一个12字节的BSON类型数据,前四个字节表示时间戳+3字节机器码+2字节进程号+3字节随机数(自动增加的计数器)
时间戳,与随后的五个字节组合起来,提供秒级别的唯一性,但是不保证ObjectId会按照插入的顺序排列
时间戳前九个字节保证了同一秒钟不同进程不同机器产生的ObjectId是唯一的,后三个字节确保相同进程同一秒产生的ObjectId也是不一样的,同一秒最多允许256的三次幂个不同的ObjectId
机器码是所在主机的唯一标识符,通常是机器主机名的散列值,确保不同主机生成不同的ObjectId
进程标识符(PID)确保同一台机器上并发的多个进程产生的ObjectId是唯一的