NoSQL和传统数据库有什么区别?NoSQL能取代传统数据库吗?
Redis 等 NoSQL 工具也能够存储数据,有人认为 NoSQL 来会取代数据库,但是笔者却不那么认为,这里谈谈 NoSQL 和传统数据库的差异。
首先,NoSQL 的数据主要存储在内存中(部分可以持久化到磁盘),而数据库主要是磁盘。其次,NoSQL 数据结构比较简单,虽然能处理很多的问题,但是其功能毕竟是有限的,不如数据库的 SQL 语句强大,支持更为复杂的计算。
再次,NoSQL 并不完全安全稳定,由于它基于内存,一旦停电或者机器故障数据就很容易丢失数据,其持久化能力也是有限的,而基于磁盘的数据库则不会出现这样的问题。最后,其数据完整性、事务能力、安全性、可靠性及可扩展性都远不及数据库。
基于以上原因,笔者并不认为 NoSQL 会取代数据库。
毫无疑问,Redis 作为一种 NoSQL 是十分成功的,但是它的成功主要是解决互联网系统的一些问题,而主要的问题是性能问题。
实际上,在互联网系统大部分的业务场景中,业务都是相对简单的,而难以处理的问题主要是性能问题,特别是那些会员数比较多的高并发服务网站。
例如,你可以常常在淘宝或者京东网站上看到一个即将被抢购的商品,有多达几万人的关注,可能一个时刻就发生了成千上万笔业务,此时使用 Redis 作为缓存数据,就可以明显提升系统的性能,而且这十分有效。
所以基于两者之间的区别,笔者认为使用 NoSQL 去取代数据库,目前还做不到,但是作为一种提高互联网应用性能的辅助工具,它十分有用。
首先,NoSQL 的数据主要存储在内存中(部分可以持久化到磁盘),而数据库主要是磁盘。其次,NoSQL 数据结构比较简单,虽然能处理很多的问题,但是其功能毕竟是有限的,不如数据库的 SQL 语句强大,支持更为复杂的计算。
再次,NoSQL 并不完全安全稳定,由于它基于内存,一旦停电或者机器故障数据就很容易丢失数据,其持久化能力也是有限的,而基于磁盘的数据库则不会出现这样的问题。最后,其数据完整性、事务能力、安全性、可靠性及可扩展性都远不及数据库。
基于以上原因,笔者并不认为 NoSQL 会取代数据库。
毫无疑问,Redis 作为一种 NoSQL 是十分成功的,但是它的成功主要是解决互联网系统的一些问题,而主要的问题是性能问题。
实际上,在互联网系统大部分的业务场景中,业务都是相对简单的,而难以处理的问题主要是性能问题,特别是那些会员数比较多的高并发服务网站。
例如,你可以常常在淘宝或者京东网站上看到一个即将被抢购的商品,有多达几万人的关注,可能一个时刻就发生了成千上万笔业务,此时使用 Redis 作为缓存数据,就可以明显提升系统的性能,而且这十分有效。
所以基于两者之间的区别,笔者认为使用 NoSQL 去取代数据库,目前还做不到,但是作为一种提高互联网应用性能的辅助工具,它十分有用。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算