近几年NoSQL,这个词极受关注,而且很多最初看到这个词的人很可能会误解为“No SQL”的缩写,这其实是错误的,实际上,它是“ Not only SQL ”的缩写。 引用本人刚刚看的一本书上的解释,它的意义是“ 适用关系型数据库的时候就使用关系型数据库,不适用的时
近几年NoSQL,这个词极受关注,而且很多最初看到这个词的人很可能会误解为“No SQL”的缩写,这其实是错误的,实际上,它是“Not only SQL”的缩写。
引用本人刚刚看的一本书上的解释,它的意义是“适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储”,可以理解为:为了弥补关系型数据的不足,NoSQL数据库应运而生。
为了更好的理解NoSQL,下面先介绍一下关系型数据库:
在关系型数据库还未出现之前,存在另外两种类型的数据库:
① 阶层型数据库,顾名思义,它是把数据通过阶层结构的方式表现出来的,这样虽然可以提高查询效率,但是不理解数据库结构就无法进行高效的查询,而且结构更改的时候维护量大。
② 网络型数据库,是在阶层型数据库的基础上发展而来的,它使子记录可以同时拥有多个父记录,从而解决了数据冗余的问题,但是结构间复杂的网络关系使得维护起来更加复杂。
为了弥补上述两种数据库的不足, E.F.Codd 于1970年发表了一篇题为“A Ralation Model of Data for Large Shared Data banks”,掀起了关系型数据库的热潮,现如今关系型数据库已经发展的相当成熟,常见的有Oracle,MSSQLServer,MySQL..
关系型数据库的优势:
① 保持数据一致性;
② 由于以标准化为前提,数据更新的开销很小;
③ 可以进行多表间的复杂查询(join);
④ 技术成熟;
关系型数据库的不足:
① 大量数据的写入处理
② 为有数据更新的表做索引或表结构变更
③ 对于不固定字段的处理
④ 对简单查询(没有复杂条件的查询)快速返回结果,需解析
对于NoSQL数据库,因为它本身就不支持join,所以不必向关系型数据库一样把需要join的多个表保存在一个服务器上。相反,NoSQL的各个数据都是独立设计的,很容易分散到多个服务器,从而可以减少每个服务器的数据量,即使进行大量数据写入,处理起来也更加高效。