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,这里不做扩展
总结
关系型数据库和非关系型数据库是一个互补的关系,有各自的特点,要结合实际的业务场景选择对应特点的存储方式