非结构化数据库
NoSQL(Not Only SQL),它是一个通用的述语,也就是非关系型数据库,它并不是以 sql 作为它的主要访问语言。 现在有比较多的 NoSQL 数据库,BerkeleyDB 是一个本地 NoSQL 数据库;HBase 是一个分布式数据库(从技术上说它是一个数据存储而不是数据库)
NoSQL 产生的主要背景 随着互联网的发展,传统的关系型数据库在应付超大规模和高并发的系统上已经“力不从心”,而非关系型数据库则在这一方面有优势。
NoSQL 数据库的分类:
- 键值(Key-Value)存储数据库 它是以键值对的格式进行存储的,类似于 Java 中的 Map,在数据库中有一个特定的 key 键和键所指向的 value 值。 优势:简单且易于部署,可以把程序中的数据直接映射到数据库中,使得程序中的数据和数据库中的数据存储方式很相近。如:Redis
- 列存储数据库 传统的关系型数据库是按行进行存储的,而列数据库则是每一列单独存储。 优势:仅仅查询所需要的列,可以大大提高查询的速度。如:HBase
- 文档型数据库 这种类型数据库与键值存储类似,这个类型的数据模型是把内容按照某些特定的格式进行存储(如:JSON 格式)。如:MongoDB
- 图形数据库 它与关系型数据库和列式数据库不同,它是基于灵活的图型模型,并且可以扩展到多个服务器上
NoSQL 数据库的应用场景:
- 数据量大、数据模型比较简单
- 对数据库的性能要求比较高,需要节省开发及维护成本
- 不需要高度的数据一致性
- 对于给定的吸,比较容易映射复杂值的环境,数据之间关系性不强
关系型数据库与非关系型数据库的区别:
对比项 | 关系型数据库 | 非关系型数据库 |
---|---|---|
成本 | 相对非关系型数据库可能存在软件购买费用 | 易于部署 基本是开源软件 |
查询速度 | 查询速度慢(存储于硬盘中) | 查询速度快(存储于缓存中) |
数据格式 | 基础类型 | key-value 形式、文档形式、图形形式…… 可以存储基础类型、对象、集合…… |
扩展性 | 有类似 join 这样的多表查询机制限制,扩展难 | 扩展相对容易 |
MongoDB
MongoDB 是一个基于文档的分布式数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品。它是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。
MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
- MongoDB 应用指南
- MongoDB 的 CRUD 操作
- MongoDB 聚合操作
- MongoDB 事务
- MongoDB 建模
- MongoDB 建模示例
- MongoDB 索引
- MongoDB 复制
- MongoDB 分片
- MongoDB 运维
HBase
HBase 是一个构建在 HDFS(Hadoop 文件系统)之上的列式数据库。
Redis
- Redis 应用指南 ⚡ - 关键词:
内存淘汰
、事件
、事务
、管道
、发布与订阅
- Redis 数据类型和应用 - 关键词:
STRING
、HASH
、LIST
、SET
、ZSET
、BitMap
、HyperLogLog
、Geo
- Redis 持久化 - 关键词:
RDB
、AOF
、SAVE
、BGSAVE
、appendfsync
- Redis 复制 - 关键词:
SLAVEOF
、SYNC
、PSYNC
、REPLCONF ACK
- Redis 哨兵 - 关键词:
Sentinel
、PING
、INFO
、Raft
- Redis 集群 - 关键词:
CLUSTER MEET
、Hash slot
、MOVED
、ASK
、SLAVEOF no one
、redis-trib
- Redis 实战 - 关键词:
缓存
、分布式锁
、布隆过滤器
- Redis 运维 🔨 - 关键词:
安装
、命令
、集群
、客户端
Elasticsearch
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。