MongoDB
stay in hungry ,stay in foolish~
–steven.jobs
noSQL概述(包括MongoDB,Redis数据库)
优点:
1.高可扩展性
2.分布式计算
3. 低成本
4.架构的灵活性
5.没有复杂关系
缺点:1.没有标准化
2.有限的查询功能
3.最终一致是不直观的程序
分类:
1.列存储:
hbase
Cassandra
hypertable
2文档存储
MongoDB
couchDB
3.key-value存储
Redis
Tokyo cabinet / tyrant
4.图存储
Neo4J
FlockDB
5.对象存储
db40
Versant
6.xml存储
barkeley DB XML
baseX
MongoDB简介
一,什么是MongoDB
1.MongoDB是由c++语言编写的基于分布式文件存储的开源数据库系统在高负载的情况下,添加更多的节点,保证服务器的性能。
2.MongoDB为web应用提供了高性能的数据存储解决方案。
3.MongoDB将数据存储为一个文档,数据结构由(key-value)形式组成。MongoDB文档类似于json文件,字段值可以是其他文档,列表等。
二,JSON文件
1.存储数据的一种格式
{}:代表字典
[]:列表
,:分两个部分
::键值对
三,特点
1.MongoDB提供了一个面向文档存储,基本思路是将原来的 ,行, 的概念换成了更加灵活的文档的模型,一条记录可以表示一个非常复杂的层次关系。
2.MongoDB支持丰富的查询表达式,查询指令是json形式的文件标记,
3.非常容易扩展,扩展集群后还可以实现集群中数据的负载均衡。
4.MongoDB支持各种编程语言,比如python,Java,c++;
5.丰富的功能,包括索引,存储Javascript,聚合,固定集合,文件存储等。
6.方便管理,处理启动数据库服务以外,记过没有其他什么必要的操作。管理集群只需要知道哪个新增的节点即可,会自动继承和配置新节点
MongoDB的概念
一,与mysql术语的对比
见表
二,与mysql数据结构的对比
三.数据库
1.一个MongoDB中可以建立多个数据库
2.MongoDB的单个实例可以容纳多个数据库,每一个都有自己的集合和权限,不同的数据库放在不同的文件中
3.数据库通过名字来标识
a.不能是空字符串
b.不能含有 引号 空格 . $ / \ \0
c.全部小写
d.最多64个字节
4.有一些数据库名是保留的,可以直接访问的
a. admin
从权限的角度去考虑这是“root”数据库,要是将严格用户添加到数据库,这个用户自动继承所有数据库的权限,一些特定的数据库服务端的命令只有能从这个数据库运行,比如列出所有的数据库或者关闭服务
b. local
这个数据库永远不会被复制,用来存储仅限于本地单台服务器的一些集合
c. config
当MongoDB用于分片设置时,config数据库在内部使用,用于保存分片的相关数据
四.文档
1.概念:
文档是MongoDB中最核心的概念,其核心单元,将文档类比成关系型数据库中的每一行数据,多个键有序的放在一起就是文档,MongoDB使用了bson数据结构来存储数据和网络数据交换。
BSON数据可以理解为在JSON基础上添加了一些JSON没有的数据类型
2.例子
{‘name’}
3.文档命名规范
a.键不能含有\0
b.键不能含有$
c.以下划线开头的键都是保留的
4.文档注意事项
a.文档中的键值对是有序的
b.文档中的值可以是列举的数据类型的值,甚至是另一个文档
c.MongoDB区分大小写和类型
d.文档中的键不能重复
e.文档中的键一般是字符串
五.集合
类比mysql中的表,集合就是一组文档的组合
在MongoDB中,集合是无模式的,也就是说集合中存储的文档结构可以不同。
注意:当第一个文档插入式,集合就会别自动创建.
命名规则:
1.集合名不能是字符串
2.不能含有上面的一堆符号
3.不能以“system”开头,这是为系统集合保留的前缀
4.集合的名字中不能含有保留字符