先说说关系型数据库和非关系型数据库有什么区别这里的关系型和非关系型,主要是数据存储格式的区别,我们常见的关系型数据库有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开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
欢迎关注我,一个程序员老司机,和你分享编程、运营、需求等等经验和趣事。
作为一个多年的程序员,两种数据库都使用过现在将自己的一些感受和你分享一下。
最大的区别两种数据库的最大区别在于存储方式,关系数据库是将关系存储到数据库里面,什么关系呢?就是一对一、一对多和多对多关系,这样存储进去之后就能够通过sql命令查询到符合客观需求的数据,但是将关系存储进行查询时,有时需要关联很多个数据表才能够得到需要的数据,于是就诞生的分关系数据库,也就是nosql数据库。
两种常见的非关系数据库一种是redis数据库,这种数据库主要做为缓存使用,它一般配合关系数据库一起用,也就是先从关系数据库获取或者计算数据,然后保存到redis数据库里面,而mongodb数据库除了具备redis的特点,也具备关系数据库的特点,所以一般业务数据还是用它来保存。
那为什么不用mongodb来代替redis因为redis非常小巧和专业,已经将缓存做到了极致。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)