您的位置首页生活百科

关系型数据库和非关系型数据库有什么区别?

关系型数据库和非关系型数据库有什么区别?

先说说关系型数据库和非关系型数据库有什么区别这里的关系型和非关系型,主要是数据存储格式的区别,我们常见的关系型数据库有Mysql、Oracle、DB2、SQL Server等,都是通过关系模型来组织数据,也就是二维表格模型。而非关系型数据库,就不是按照这个二维表格来存储数据了,例如Redis是使用键值对(key-value)来组织数据,MongoDB是采用BSON的格式(可以想象成JSON);并且不局限于固定的结构。关系型数据库和非关系型数据库之间的关系,也不是有你没有,二者选其一,通常都是配合起来使用的。

各自的优缺点关系型数据库,容易理解,使用方便(通过SQL语言操作),易于维护;但是因为数据在磁盘上存储,I/O会成为一个很大的瓶颈,如果在高并发的场景下,性能降低的很快;另外,对于关系型数据库,当单表数据量增加到一定程度的时候,表的操作效率也会很低;表结构固定,当数据量比较大的时候,对表结构的扩展会是灾难性的。非惯性数据库因为数据结构的“随性”,用户可以根据需要增加字段,关系型数据习惯设计成多张表,然后通过表关联查询,而非关系型数据库(文档性)会把所有字段放到一个集合中,避免多表的关联。不过缺点也非常明显,“随性”也就意味着没有标准,单集合有好处也有坏处,没有完整性约束,对于复杂的业务场景支持比较差。

至于MongoDB和Redis怎么选择,两者差别还是很大的,适用场景也不同Redis的数据存储格式是key-value,支持持久化、 支持事务,经常用于缓存、高并发下的读写(计数器、最新列表、秒杀),因为单线程的机制也会用于分布式锁。MongoDB的数据存储格式为BSON(类似于JSON),支持快速读写,特别是大吞吐量的写操作;如果表结构不明确,未来可能会发生很大的变化,非常适合使用MongoDB。架构中可以同时包含关系型数据库、Redis和MongoDB,各司其职。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

抖音看短剧