随着互联网大数据时代的到来,越来越多的网站、应用系统都需要支撑大量甚至海量数据存储,同时还伴有高并发、高可用、高可扩展等特性要求。
很多时候,传统的关系型数据库在应付这些已经显得力不从心,并暴露了许多难以克服的问题。
由此,各种各样的 NoSQL(Not Only SQL)数据库作为传统关系型数据的一个有力补充得到迅猛发展。
本文将分析传统数据库(即SQL数据库)存在的一些问题,以及盘点目前市面上几大类 NoSQL 特性、优缺点等,希望给大家提供一些在不同业务场景下存储技术选型方面的参考。
传统SQL数据库的缺点
传统的关系数据库有如下几个缺点。
1)大数据场景下 I/O 较高:因为数据是按行存储,即使只针对其中某一列进行运算,关系型数据库也会将整行数据从存储设备中读入内存,导致 I/O 较高。
2)存储的是行记录:无法存储数据结构。
3)表结构 Schema 扩展不方便:如要修改表结构,需要执行 DDL(data definition language),语句修改,修改期间会导致锁表,部分服务不可用。
4)全文搜索功能较弱:关系型数据库下只能够进行子字符串的匹配查询,当表的数据逐渐变大的时候,like 查询的匹配会非常慢,即使在有索引的情况下。况且关系型数据库也不应该对文本字段进行索引。
5)存储和处理复杂关系型数据功能较弱