Redis深入解析系列一:sql与nosql比较

SQL-关系型数据库

特点:

1、表格形式存储,基于行存储数据,是一个二维的模式,用来存储结构化数据

2、表结构schema是固定的

3、表之间存在关联

4、支持sql,支持复杂的关联查询

5、支持事务 ACID (酸)

 

从特点分析出限制

1、只能向上扩展,比如增加硬盘存储,通过硬件扩展。水平扩展只能通过通过技术、中间件实现,比如分库分表。不支持动态扩容缩容

2、存在数据时修改表结构很麻烦,存储的数据格式必须要和表结构完全一致

3、高并发和高数据量的情况下,关系型数据库通常会把数据持久化到磁盘,对磁盘的读写压力很大,IO压力很大

4、关系型数据库的一个瓶颈就是IO读写,所以是不适合存储大数据的(比如二进制文件等等)

 

为了解决关系型数据库的一系列问题,我们引入非关系型数据库作为关系型数据库的补充

NOSQL(Not Only Sql)-非关系型数据库

1、存储非结构化数据(文本、图片、音频、视频等)

2、表之间没有关联,扩展性强

3、不支持事务 支持BASE (碱)。Basically Available基本可用 Soft-state软状态 Eventually Consistent最终一致性

4、支持海量数据存储和高并发高效读写

5、支持分布式,能够对数据进行分片存储,扩容缩容简单

 

对于不同的存储类型,我们又有各种各样的非关系型数据库,常见如下:

1、KV结构 redis mamecach

2、列存储 hbase

3、文档存储 MongoDB

4、图存储 neo4j graph

5、对象存储

6、xml存储 等

各种nosql数据库可见 http://nosql-database.org

 

还有一种介于SQL与NOSQL之间的 NEW SQL 例如 TIDB,这里不做扩展

 

总结

关系型数据库和非关系型数据库是一个互补的关系,有各自的特点,要结合实际的业务场景选择对应特点的存储方式

 

Redis深入解析系列一:sql与nosql比较

上一篇:Oracle里的执行计划


下一篇:【论文复现】Computing label constraint reachability in graph databases SIGMOD2010