NoSQL 数据库
1-技术发展
1.1-技术分类
解决功能性的问题:
Java、Jsp、Tomcat、Linux、RDBMS、HTML、JDBC、SVN。
解决扩展性的问题:
Struts、Spring、SpringMVC、Hibernate、Mybatis。
解决性能的问题:
NoSQL、Java 线程、Hadoop、Nginx、MQ、ElasticSearch。
1.2-Web 1.0
Web 1.0 时代,数据访问量很有限,用一台高性能的单点服务器可以解决大部分问题。
1.3-Web 2.0
随着 Web 2.0 时代到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
- 解决 CPU 及内存压力:
- 解决 IO 压力:
2-NoSQL 数据库
2.1-NoSQL 概述
NoSQL(Not Only SQL),即:不仅仅是 SQL,泛指非关系型的数据库。NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value 模式存储,因此大大的增加了数据库的扩展能力。
- 不遵循 SQL 标准。
- 不支持 ACID。
- 远超于 SQL 的性能。
2.2-NoSQL 使用
NoSQL 适用场景:
- 数据高并发读写。
- 海量数据的读写
- 数据高可扩展性。
NoSQL 不适用场景:
- 需要事务支持。
- 基于 SQL 的结构化查询存储,处理复杂的关系,需要即席查询。
用不着 SQL 的和用了 SQL 也不行的情况,请考虑用 NoSQL。
2.3-Memcache
- 很早出现的 NoSQL 数据库。
- 数据都在内存中,一般不持久化。
- 支持简单的 key-value 模式,支持类型单一。
- 一般是作为缓存数据库辅助持久化的数据库。
2.4-Redis
- 几乎覆盖了 Memcached 的绝大部分功能。
- 数据都在内存中,支持持久化,主要用作备份恢复。
- 除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如List、Set、Hash、Zset等。
- 一般是作为缓存数据库辅助持久化的数据库。
2.5-MongoDB
- 高性能、开源、模式自由(schema free)的文档型数据库。
- 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘。
- 虽然是 key-value 模式,但是对value(尤其是json)提供了丰富的查询功能。
- 支持二进制数据及大型对象。
- 可以根据数据的特点替代 RDBMS,成为独立的数据库。或者配合 RDBMS 存储特定的数据。
3-数据库种类
3.1-行式数据库
3.2-列式数据库
3.2.1-HBase
HBase 是Hadoop项目中的数据库。它用于需要对大量的数据进行随机、实时的读写操作的场景中。
HBase 目标就是处理数据量非常庞大的表,可以用普通的计算机处理超过10 亿行数据,还可处理有数百万列元素的数据表。
3.2.2-Cassandra
Apache Cassandra 是一款免费的开源 NoSQL 数据库,其设计目的在于管理由大量商用服务器构建起来的庞大集群上的海量数据集(数据量通常达到PB级别)。在众多显著特性当中,Cassandra 最为卓越的长处是对写入及读取操作进行规模调整,而且其不强调主集群的设计思路能够以相对直观的方式简化各集群的创建与扩展流程。
计算机存储单位:B、KB、MB、GB、TB、EB、ZB、YB、BB,它们间的关系是:
- Bit:位、比特、Binary Digits,存放一位二进制数,即 0 或 1,最小的存储单位。
- B:字节、byte,8 个二进制位为一个字节,最常用的单位。
- KB:千字节、Kilobyte,1 KB = 1024 B。
- MB:兆字节、简称 兆、Megabyte,1 MB = 1024 KB。
- GB:吉字节、又称 千兆 Gigabyte,1 GB = 1024 MB。
- TB:太字节、万亿字节、Trillionbyte,1 TB = 1024 GB,其中 1024 = 2^10(2 的10次方)。
- PB:拍字节、千万亿字节、Petabyte,1 PB = 1024 TB。
- EB:艾字节、百亿亿字节、Exabyte,1 EB = 1024 PB。
- ZB:泽字节、十万亿亿字节 、Zettabyte,1 ZB = 1024 EB。
- YB:尧字节、一亿亿亿字节 、Jottabyte,1 YB = 1024 ZB。
- BB:一千亿亿亿字节、Brontobyte,1 BB = 1024 YB。
3.3-图关系型数据库
应用:社会关系、公共交通网络、地图及网络拓谱(n*(n-1)/2)。
还没有评论,来说两句吧...