1.简介
1.什么是mongoDB?
MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值 (key=>value) 对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2.MongoDB的特性:
MongoDB是一个可扩展、高性能的下一代数据库,它的特点是高性能、易部署、易使用、存储数据方便,主要特性有:• 面向文档存储, json 格式的文档易读、高效;• 模式自由,支持动态查询、完全索引,无模式;• 高效的数据存储,效率提高;• 支持复制和故障恢复;• 以支持云级别的伸缩性,支持水平数据库集群,可动态添加额外服务器;
3.MongoDB的工作方式
传统的关系型数据库一般有数据库( database )、表( table )、记录( record )三级层次构成。MongoDB 同样是由数据库( database )、集合( collection )、文档对象( documen )三个层次组成。文档 类似于 json 的键值对。 {"name":"tom","age":23}集合 一组文档的集合。#局限与不足:32位系统上,不支持大于 2.5G 的数据。单个文档大小限制为16M 。锁粒度太粗,MongoDB 使用一把全局读写锁。不支持join 操作和事务机制对内存要求比较大,至少要保证热数据(索引,数据及系统其他开销)都能装进内存用户权限方面较弱MapReduce在单个实例上无法运行,可用 Auto-Sharding 实现,是由 JS 引擎限制造成。MapReduce的结果无法写入到一个被 Sharding 的 collection 中,待后续版本解决对于数组型的数据操作不够丰富
4.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]/
5.MongoDB 与 TRDB 数据库基本概念比较
MongoDB:数据库 DB,集合,文档,键值对;
TRDB:数据库 DB,表,行,字段值;
区别:
1.都有数据库概念, 需要用命令建立数据库名。 如根据不同项目建立两 个数据 库名, 一个为 test 数据库, 用于测试; 一个为 goodsdb 数据 库, 用于正式业 务数据存储及操作。
2.一个集合对应于一个表。 MongoDB 无须事先定义表结构, TRDB 必须 事先强制定义。
3.每个文档都有一个特殊的_id , _id 值在文档所属集合中是唯一的, 默认 由MongoDB 自己维护, 当然也可以由程序员编程指定。 一个文档类似 于TRDB —行记录, 文档要避免不同集合的关联关系( Join ) , 而 以 行为 基 础>的 TRDB 强调关联关系。
4.文档的一个键值对类似于 TRDB