按照数据结构来组织,存储和管理数据的仓库。 是一个长期存储在计算机内的,有组织的,可共享的,统一管理的大量数据的集合。 关系型数据库采用了二维表格关系模型来组成数据的数据库,一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织 关系型数据库管理系统 RDBMS MySQL Oracle msSQL 优点: <1,二维表结构,容易理解 <2,通用SQL语言,使用方便 <3,支持ACID(原子性,一致性,隔离性,持久性),可以维护数据一致性 <4,数据稳定,数据持久化到硬盘,支持海量数据存储 <5,服务器性能卓越,服务稳定 缺点: >1,高并发下IO压力大 数据按行存储,即使只针对其中某一列进行运算,也会将整行数据从存储设备中读入内存,导致IO较高 >2,为维护索引付出的代价大 数据的新增,更新必然伴随着所有二级索引的新增,更新。从而降低关系型数据库的读写能力,索引越多读写能力越差 >3,为维护数据一致性付出的代价大 关系型数据库在高并发下的能力是有瓶颈的,尤其是写入/更新频繁的情况下,出现瓶颈的结果就是数据库CPU高,sql执行慢,客户端报数据库连接池不够等错误 非关系型数据库非关系型的,分布式,且一般不保证遵循ACID原则的数据存储系统 NoSql(Not Only SQL)是对关系型数据库的一种补充,二者各有优势,取长补短 优点: 易扩展 NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间,在架构的层面上带来了可扩展的能力。 大数据量,高性能 NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般MySQL使用Query Cache。NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说性能就要高很多。 灵活的数据模型 NoSQL无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是——个噩梦。这点在大数据量的Web 2.0时代尤其明显。 高可用 NoSQL在不太影响性能的情况,就可以方便地实现高可用的架构。比如Cassandra、HBase模型,通过复制模型也能实现高可用。 缺点:
大多数nosql都不支持事务(redis支持,MongoDB不支持)
大多都是初创产品,不够成熟,和传统数据库几十年的完善不可同日而语
不支持sql这样的工业标准查询,所以学习成本就比较高
nosql只能保证数据相对一致性,尤其是在数据同步的时候,主从服务器的状态是不一致的
第一种分类:KV型NoSql ---- Redis,MemCache 以键值对形式存储 · 数据基于内存,读写效率高 · KV型数据,时间复杂度为o(1),查询速度快 · 查询方式单一 · 无法支持海量数据存储 · 存储是基于内存的,会丢失数据 · 读远大于写,读取能力强 搜索型NoSql ---- ElasticSearch 其诞生就是为了解决关系型数据库全文搜索能力较弱的问题 ,全文搜索的原理是倒排索引 列式NoSql ---- Hbase 大数据时代最具代表性技术之一 以Hbase为代表 文档型NoSql ---- MongoDB
第二种分类:
|
|