MongoDB之基本概念和应用场景

基本概念和应用场景

应用场景

  • 数据量大
  • 写入操作频繁
  • 价值较低的数据,对事务要求不高

场景特点

  • 应用不需要事务和复杂join
  • 应用需要2000~3000以上的的读写QPS
  • 应用需要TB或PB级别数据存储
  • 应用发展迅速,需要快速水平扩展
  • 应用要求存储的数据不丢失
  • 99.99%的高可用
  • 大量的地理位置查询,文本查询

MongoDB特点

  • 高性能
    • 高性能的数据持久性
    • 索引支持更快的查询,可以包含来自嵌入式文档的数组的键
    • Gridts解决存储的需求
  • 高可用
    • MogoDB的复制工具为副本集,可提供自动故障转移和数据冗余
  • 高扩展
    • 分片将数据分布在集群机器上
  • 丰富的查询支持
  • 其他特点
    • 无模式(动态模式)
    • 灵活的文档模式

基本概念

简单介绍

  • 开源,高性能,无模式的文档型数据库
  • 支持的数据结构非常松散,类似json的格式叫BSN
  • 记录是一个文档,由一个字段和值对(field:value)组成的数据结构,一个文档认为是一个对象,字段的数据类型是字符型,值除了基本的类型还可以包括文档,普通数组和文档数组

体系结构

在这里插入图片描述

sql概念 MongoDB概念 说明
database database 数据库
table collection 表/集合
row document 行/文档
column field 数据字典/域
index index 索引
table joins MongoDB不支持连表
嵌入文档 MongoDB通过嵌入文档来替代多表连接
primary key primary key 主键,MongoDB自动将_id字段设置为主键

数据类型

数据类型 描述 举例
字符串 UTF-8都可表示为字符串类型的数据 {“x”:“bar”}
对象id 对象id是文档的12字节的唯一ID {“x”:ObjectId{}}
布尔值 true或false {“x”:true}+
数组 值的集合或列表 {“x”:[“a”,“b”,“c”]}
32位整数 类型不可用,会被自动转换为64位浮点数
64位整数 型不可用,会被自动转换为64位浮点数
null 空值或未定义的类型 {“x”:null}
undefined 未定义类型 {“x”:undefined}
符号 不支持,会自动转换为字符串
正则表达式 文档可以包含正则,采用js的正则表达式 {“x”: /bar/i}
代码 文档可以包含js代码 {“x”: function(){}}
二进制数据 可以有任意字节的串组成,不过shell无法使用
最大值/最小值 BSON包括一个特殊类型,表示可能的最大值
  • shell默认64浮点型数值,对于整型值.可以使用Numberint或者NumberLong.{“x”:NumberInt(“3”)},{“x”:NumberLong(“3”)}