数据存储方式和 NoSQL
1. 数据存储方式
互联网时代各种数据存储方式层出不穷,有传统的关系型数据库如:MySQL 、Oracle 等;有全文检索框架,如:ElasticSearch 、Solr ; 有 NoSQL,如:Cassandra 、 Redis
这些存储方式的特点:
- 关系型数据库:支持事务,二级索引,SQL 语句,支持主从架构
- 全文检索:分布式,p2p 架构,不支持事务,采用倒排索引提供全文检索
- NoSQL:一般基于内存,支持分布式,面向列,不支持 SQL
2. NoSQL 概述
NoSQL,泛指非关系型的数据库,NoSQL去掉关系数据库的关系型特性,数据之间无关系,非常容易扩展
NoSQL型数据库一般包含一些共同特性:
-
易扩展
NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展,在架构的层面上带来了可扩展的能力
-
大数据量,高性能
NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下。一般 MySQL 使用 Query Cache
NoSQL 的 Cache 是记录级的,是一种细粒度的 Cache,所以 NoSQL 在这个层面上来说性能就要高很多
-
灵活的数据模型
NOSQL 无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情
-
高可用
NoSQL 在不大影响性能的情况,就可以方便地实现高可用的架构。比如 Cassandra、 HBase 模型,通过复制模型也能实现高可用
3. NoSQL的分类
键值(Key-Value)存储数据库
这一类数据库主要使用(哈希表),这个表中有一个特定的键和一个指针指向特定的数据。Key/value 模型的优势在于简单、易部署。代表为:Redis
列存储数据库
这类数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排排的。如:Cassandra, HBase
文档型数据库
文档型数据库和第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如 JSON
文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如: CouchDB, MongoDb
图形(Graph)数据库
图形结构的数据库同其他行列以及关系型数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上