MongoDB简介
1、MongoDB概述
由C++语言编写,开源而且基于分布式文件存储;在高负载的情况下,通过添加更多节点保证服务器性能;旨在为WEB应用提供可扩展的高性能数据存储解决方案;以文档的形式存储数据,数据结构由键值对(key / value);
其文档类似 JSON 对象,字段值可以包含其他文档、数组以及文档数组。
2、MongoDB特性
• 可扩展、高性能的下一代数据库;
• 易部署、易使用、存储数据方便;
• 面向文档(json格式)存储,易读、高效;
• 模式自由,支持动态查询、完全索引,无模式;
• 高效的数据存储,效率提高;
• 支持复制和故障恢复;
• 以支持云级别的伸缩性,支持水平数据库集群,可动态添加额外服务器;
3、MongoDB的元素
MongoDB由库(database)、集合(collection)、文档对象(documen)三个层次组成,类似于传统关系型数据库由库(database)、表(table)、记录(record)三级层次构成。其中,文档类似于 json 的键值对,例如:{“name”:“tom”,“age”:23},而集合则是一组文档的集合,库则是一组集合的集合。
4、MongoDB支持语言
5、MongoDB的“ObjectId”
不同的机器都能用全局唯一的同种方法方便的生成它。ObjectId使用12字节的存储空间,其生成方式如下:
例:
4e931cb61e19edcd8800017f
时间戳 机器ID PID 计数器
注:
• 时间戳可以保证秒级唯一;
• 机器ID可以保证设计时考虑分布式,避免时钟同步;
• PID可以保证同一台服务器运行多个mongod实例时的唯一性;
• 计数器可以保证同一秒内的唯一性;
6、MongoDB数据类型
数据类型 | 举例 |
---|---|
空值 | null |
布尔 | ture & false |
整数 | 123 |
浮点 | 12.3 |
字符串 | “hello world” |
对象ID | 用 new ObjectId()来申明 |
日期 | 用 new Date()来申明时间戳 |
数组 | [“apple”,”blanan”,”pear”] |
内嵌文档 | {“username” : “jone”, “age”: 13, “contact” : {“home”:”123”,”moblie”:”456”}} |
RegExp(正则表达式) | /[a-z]/ |
7、MongoDB 与 TRDB 数据库基本概念比较
MongoDB | TRDB | 比 较 说 明 |
---|---|---|
库 DB | 库 DB | 都有库的概念,需要用命令建立库名。如根据不同项目建立两个库名,一个为 test 库,用于测试,一个为 goodsdb 库, 用于正式业务数据存储及操作 |
集合 | 表 | 一个集合对应于一个表。 MongoDB 无须事先定义集合结构, TRDB 必须事先强制定义表结构 |
文档 | 行 | 每个文档都有一个特殊的_id,_id值在文档所属集合中是唯一的, 默认由MongoDB 自己维护, 当然也可以由程序员编程指定。 一个“文档”类似 TRDB 的—“行”记录,“文档”要避免不同集合的关联关系( Join ) ,;而以“行”为基础的 TRDB 则强调关联关系 |
键值对 | 字段值 | MongoDB“文档”的一个“键值对”类似 TRDB 里的一个“字段值”,不过“文档”里的“键值对”可以嵌入更复杂的数据结构 |