NoSQL数据库有哪些种类
- 文档型数据库
文档型数据库采用文档的方式来存储数据,即将单个实体的所有数据都存在一个文档中,而文档存在于集合中。
MongoDB - “键值对”(Key-Value)数据库
“键值对”数据库主要是使用数据结构中的键来查找特定的值
优点:这类数据库在存储时不采用任何模式,因此极易添加数据
缺点:通过“键”和“值”一对一查找时性能较高,但只针对“值”来查找时性能会比较差
Redis、Voldemort、Scalaris、Oracle Berkeley DB - 列存储数据库
列存储数据库是以“列”为单位来存储数据的。相对与行存储的数据库,它更适合用于批量数据处理与实时数据查询
优点:同一列数据的格式相同,所以适合数据压缩,也更善于处理大量数据的查询与计算,切有利于分布式扩展
缺点:不适合做实时的删除或更新操作
Sybase IQ、Vertica - 图存储数据库
图存储数据库,采用图形理论来存储尸体之间的关系信息,如社交关系网络、族谱
Neo4j、FlockDB、GraphDB
MongoDB简介
MongoDB有哪些特性
存储结构
- MongoDB采用“集合”来存储文档数据
- 文档的存储架构是基于JSON改良的BSON
- MongoDB可以存储无模式的文档,不需要事先定义数据结构和数据类型。
- MongoDB能让使用者根据应用程序的存取需求来设置反正规化的数据结构,以加快查询速度
数据查询
- 除了单表查询功能,还支持强大的聚合计算(sum/avg/count/group等),以及大数据引擎中常见的映射和归纳(MapReduce)
- MongoDB可以在特定的集合字段上添加索引,以提升查询的性能
- 支持多种程序语言操作
数据库架构
- MongoDB集群具有副本集的架构,可以实现数据实时备援、故障转移等,能确保服务不会长时间中断或发生数据丢失的情况
- MongoDB支持数据块自动切分,可以实现横向扩容、能保证数据存储于王文的负载均衡。虽然数据是分布式存储的,但对应用程序来说,仍可以通过统一的路由来访问数据
MongoDB的使用场景
- 需要处理大量的低价值数据,且对数据处理性能有较高要求
- 需要借助缓存层来处理数据
- 需要高度的伸缩性
MongoDB中的对象
数据库 Database
默认数据库test,在使用use <databasename>时,会切换到某个数据库,如果数据库不存在,会自动创建
集合 Collenction
MongoDB是面向集合的存储。在储存数据时,MongoDB会使用集合在做分类,在集合中可以储存许多文档
集合对应表(Table),不过集合不需要事先定义模式(Schema)
文档 Document
文档是MongoDB存储数据的最基本单元,相当于行(Row)。文档内包括一至多个“键值对”。每个“键”为一个字段(Field)。字段的值可以是数值,字符串,数组或者子文档等
视图 (View)
视图与查询集合的结果相同,但视图并非实际存在的集合,而是通过指令来构建数据查询得出的结果。
索引(Index)
MongoDB索引的使用方法和原理都于传统关系型数据库的索引相同。MongoDB还支持地理空间索引,以提升查询平面或球面坐标的速度。
用户(User)
如果MongoDB开启了安全认证,在会在数据库中产生用户表。在MongoDB中,每个数据库都有独立的用户表
存储过程(Stored Procedure)
MongoDB的存储过程是用JavaScript撰写的,存储在system.js集合中,具有输入/输出参数、嵌套调用等特性,可提供应用程序调用
字段(Field)
字段是MongoDB文档中的元素,相当于关系型数据库中的“列”(Column)。在MongoDB中,字段可以添加的增加或减少,不需要事先定义
MongoDB与关系型数据库的术语对应关系
MongoDB | 关系型数据库 |
---|---|
database(数据库) | database(数据库) |
collection(集合) | table(表) |
document(文档) | row(行) |
field(字段) | column(列) |
View(视图) | View(视图) |
User(用户) | User(用户) |
Stored Procedure(预存程序) | Stored Procedure(预存程序) |
网友评论