青鸟100问

SQL是什么?、NoSQL又是什么?业务系统如何数据库技术选型呢?
北大青鸟总部

摘要:SQL是什么?、NoSQL又是什么?业务系统如何数据库技术选型呢?

随着云计算、大数据、物联网时代的到来,越来越多的网民涌入互联网,越来越多的应用系统需要支撑海量数据存储,还需要随着业务需求满足高并发、高可靠、高扩展性等要求,传统的关系型数据库已经不能完全满足需求了,因此NoSQL应运而生。
那么SQL是什么?、NoSQL又是什么业务系统如何数据库技术选型呢

NoSQL!=  NO SQL,而是NotOnlySQL,作为关系型数据库的补充而出现。关系型数据库即采用了关系模型来组织的数据库,简单来说,就是二维表格模型,包含关系(表名)、元组(二维表中的一行)、属性(二维表中的一列)、域(属性的取值范围)、关键字(唯一能标识元组的属性)、关系模式(表结构,对关系的描述)等概念。以一个用户信息表来说,用户信息表就是整个关系,元组就是姓名、性别、年龄、电话、地域组成的一行记录,属性则是单独的地域列、年龄列等,域就是地域是中国全省市等,关键字就是用户ID、能唯一标识这个用户,关系模式就是这整个表,包含姓名、性别、年龄、电话、地域属性。


对于关系型数据库来说,一直非常流行的原因有如下四个:1、强事务一致性,数据库的ACID(原子性、一致性、隔离性、持久性)保障了所有记录的数据全是准确的,对于早期互联网来说,大家都不完全信任看不到摸不着的东西,所以这个特点非常重要;
2、容易理解,二维表的结构非常贴合现实世界。
3、使用方便,通用的sql语言使得操作关系型数据库非常方便;
4、容易维护,在设计的时候采用了实体完整性、参照完整性等理念,减少了数据冗余和数据不一致。常用的关系型数据库有Mysql、Oracle等。
然而随着互联网海量数据的增加,关系型数据库也产生了瓶颈,具体表现如下:
1、无法应对高并发的读写请求,关系型数据库是以行结构来存储的,比如我们想获取某个地域的用户名单,需要按行读取,再获取其中的用户名字这一属性,对于磁盘的IO消耗非常大;
2、无法弹性伸缩,关系型数据库无法像webserver那样简单的通过增加更多的硬件和服务节点来扩展性能,对于数据库海量剧增的今天、服务需要24小时提供的企业来说,这非常难受;
3、不再需要事务强一致性、读写实时性,早期这是关系型数据库的优点,而随着互联网业务覆盖范围的广泛,用户可以接受一定的延迟、一定的错误。
因此NoSQL关系型数据库出现了,作为关系型数据库的补充,再根据互联网时代的需求不同,可以分为:
1、支持高性能并发读写的Key-Value数据库,如Redis;
2、支持海量数据访问的文档数据库,如MongoDB、CouchDB;
3、支持大数据存储和分析的列式数据库,如HBase;
4、支持全文搜索的搜索引擎数据库,如ElasticSearch。


相关阅读
热门推荐