NoSQL系统舍弃了一些SQL标准中的功能,取而代之的是提供了一些简单灵活的功能。NoSQL的构建思想就是尽量简化数据操作,尽量让执行操作的效率可预知。现有的NoSQL种类繁多,应用场景和设计理念也不尽相同,但通常具有如下特征:
1)弹性可扩展
NoSQL具有很好的弹性可扩展能力,当数据增长到一定规模时,可以通过简单地添加硬件或服务节点的方式对系统进行扩展,这弥补了关系型数据库在扩展性上的不足。NoSQL数据库可以在系统运行过程中动态地增删节点,数据自动平衡移动,不需要人工干预操作。
2)多分区存储
传统关系型数据库往往把数据都存储在一个节点上,通过增加内存和磁盘的方式来提高系统的性能,以实现数据的纵向扩展,这种方式不仅昂贵且不可持续。NoSQL数据库会将数据分区存储在多个节点上,这是一种水平的扩展方式。这种方式不仅能够很好地满足大数据的存储要求,而且还可以提高数据的读写性能。
3)多副本异步复制
为了保证数据的安全性,NoSQL数据库往往会保存数据的多个副本。在操作的时候往往都是将数据快速地写入一个节点,其余节点通过读取写入节点的读写日志来实现数据的异步复制。(www.xing528.com)
4)较弱的事务模型
关系型数据库的事务机制必须满足ACID属性,关系型数据库的逻辑复杂并且需遵循事务一致性的要求,使得死锁等并发性问题时有发生,严重影响了系统的并发读写性能。与关系型数据库ACID事务属性相比,NoSQL系统只支持较弱的事务,如事务只需满足最终一致性的要求,弱事务的使用能提高系统的并发读写能力。
5)模式自由
NoSQL数据库不像传统的关系型数据库需要定义数据库、数据表等结构才可以存取数据,其在增删数据时不需要进行数据的完整性检查。数据表中的每一条记录都可能有不同的属性和格式。
6)逆范式化
为了减少数据冗余,增强数据一致性,在关系型数据库设计时,要遵循范式要求,数据表至少要满足第三范式。这样,多个表之间建立各种关联关系就不容易实现数据库的横向扩展,并且这些连接操作也会降低数据库的查询效率。而NoSQL数据库去除约束,放宽事务保障,更利于数据的分布式存储。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。