上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.4 非关系型数据库
进入21世纪,随着互联网技术的突飞猛进,移动设备和智能终端的广泛使用,以及云计算和物联网技术的发展,人类用户、硬件和传感器产生了海量数据,因此数据存储和处理需求爆发式增长。关系型数据库在应对这些需求时逐渐无能为力,主要表现为以下3点。
· 无法通过提升硬件性能来提高数据处理效率。
· 依据关系范式所设计的数据库模型及其完整性约束虽然很实用,但是无法适应新的应用场景。
· 事务处理机制虽然可以保证数据的强一致性,但是在分布式环境下很难维持。
针对以上弊端,逐渐出现了一些非关系型数据库(Not Only SQL或No More SQL),这些数据库不再依据关系范式来设计表,表之间不强制要求外键约束,也不支持事务处理,而是把重点放到以下几个方面。
· 数据不再以二维表的方式组织,可以适应各种非结构化数据。数据库能够支持的数据格式包括键-值对类型、JSON/XML文档类型、图节点类型和基于列式存储的类型。
· 采用分布式架构。数据存储节点和数据计算节点都使用分布式结构,一个表中的数据、分片存储在多个节点上。数据均匀分配在每个节点上,平摊了读取数据的压力。采用分布式架构也可以通过增加节点的方式平滑扩充数据库能力。
· 数据多副本存储。采用冗余方式重复存储表数据可以确保系统的高可用性。Hadoop HBase把同一条数据存储了3次,并且放在不同的节点上。
非关系型数据库没有像关系型数据库那样功能完善的权限控制功能。不同类型的非关系型数据库之间并没有太多的共同点,各自都有优点、缺点和适用场合。在实际应用中,比较复杂的系统都会结合使用两种类型的数据库,或者同时使用多种非关系型数据库。