|
知识路径: > 数据库技术 > 数据库技术基础 > 数据库模型 > 典型数据库:RDB(关系数据库)、OODB(面向对象数据库)、ORDB(对象关系数据库)、XML数据库、NoSQL(非关系数据库) > 非关系型数据库NoSQL >
|
相关知识点:2个
|
|
|
|
在基于Web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像Web Server和App Server那样简单地通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断地添加服务器节点来实现扩展呢?
|
|
|
在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于Web 2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如:
|
|
|
(1)数据库事务一致性需求。很多Web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。
|
|
|
(2)数据库的写实时性和读实时性需求。对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多Web应用来说,并不要求这么高的实时性。
|
|
|
(3)对复杂的SQL查询,特别是多表关联查询的需求。任何大数据量的Web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大地弱化了。
|
|
|
因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题,非关系数据库应运而生。
|
|
|
NoSQL是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语在2009年初得到了广泛认同。
|
|
|
当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。而NoSQL存储就是为了实现这个需求。Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现。一些开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同。
|
|
|