打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关系型数据库和非关系型数据库有什么区别,mongdb和redis怎么选择,mongdb优势在哪?

数据库、关系数据库

数据库(database)是有组织的数据集合。

关系数据库是遵循关系理论的数据库。严格意义上地说是模式( schemas)表格( tables),查询( queries,,报告(reports),视图( views)和其他元素的集合。关系数据库用数学中的集合论来指导数据库的设计、存储和查询等过程。

数据库管理系统(DBMS)是一种计算机软件应用程序,用于终端用户,应用程序和数据库本身进行交互以获取和分析数据。通用数据库管理系统允许定义,创建,查询,更新和管理数据库。

通常意义上我们说的数据就是关系数据库,数据库也实际上指的是DBMS,比如常见的Oracle、DB2、sql server、mysql,PostgreSQL等。


数据库发展历史

数据库的发展其实经历了三个大的阶段

1、上世纪60年代及以前主要是导航数据库(navigational database

导航数据库的记录和对象是通过链接其他对象的引用进行查询。

导航数据库分为 网络模型和层级模型两种。

网络数据库:

层级模型是以树形结构组织数据的,每个子节点只会拥有唯一的父节点,比如IBM的IMS数据库以及常用LDAP数据库就属于层级模型。

2、上世纪70年代——关系数据库

上世纪70年代埃德加·科德(Edgar Frank Codd) 处于对导航模型CODASYL方法数据的,特别是“搜索”功能的严重欠缺,他撰写了一篇划时代的论文《大型共享数数据的关系模型》(A Relational Model of Data for Large Shared Data Banks)发表在《ACM通讯》上,在论文中首次提出了关系模型的概念。关系模型对数据的设计和存储提出了一定的规范,最主要的是要符合范式:

1NF: 字段是最小的的单元不可再分;

2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到);

3NF:满足2NF,非主键外的所有字段必须互不依赖;

4NF:满足3NF,消除表中的多值依赖;

一般来说关系模型必须符合到第三季模式。

关系数据库最重要是,也是第一流行的原因还主要是SQL语言的发张和流行,而SQL语言也来源于科德的贡献,他最初版本叫 SEQUEL。

由于埃德加·科德的杰出贡献,现在尊称他为“关系数据库之父”,于1981年获得ACM图灵奖。

3、2000年以后,NoSQL和NewSQL

NoSQL数据库结构简单,无固定的表模式,存储非规格化的数据可以避免搜索中连接操作从而实现快速读写。NoSQL设计时候考虑可以实现水平扩展。

最流行的NoSQL系统包括MongoDB,Couchbase,Memcached,Redis,CouchDB, Cassandra和HBase等等,基本上都是开源软件。

NewSQL是一类现代关系数据库,旨在为在线事务处理(读写)工作负载提供与NoSQL系统相同的可扩展性能,同时仍然使用SQL并维护传统数据库系统的ACID保证。这些数据库包括Google F1,Spanner,Citus,CockroachDB,TiDB,ScaleBase,MemSQL,NuoDB和VoltDB等。

关系数据库和NoSQL数据的区别

在上面的第二部分我们介绍了两者特地,这里再概括下:

关系数据库,结构严谨、符合关系理论,可以存储结构化数据;支持比较复杂的数据关系关联查询;支持事务,可以保障数据安全;支持SQL语言做操作

NoSQL: 结构简单、健值对关系,而且大多数都是直接存内存的,所以具有很高的性能;而且结构简单支持水平扩展;大多数都是开源,可以免费试用。

mongodb和redis怎么选择

mogondb、redis和memcached可能是用的最多的的NoSQL数据库了。关于redis和memcached笔者有另一个问答做过比较,现在在介绍下mongodb和redis:


数据类型

我们知道redis支持有几类的数据结构包括字符串、哈希,列表、数据集和有序数集合等数据类型,而mongodb则支持更多更丰富是数据类型,还支持索引,比较接近于关系型数据库,支持丰富的查询语句(大多数sql语句都有类似的语句表达,虽然比较别扭)。

数据存储

mongodb存采用的文件存储,比较适合大数据量存储,依靠os虚拟内存,采用镜像文件存储;内存占用率比较高。redis数据存储在内存中,对内存要求较高,支持数据持久化到文件。

集群性

mongodb支持主从结构,复制集集群。其中官方推荐复制集群,具有自动故障恢复,自动分片,auto sharding机制。redis支持主从,但是严重依赖持久化的快照,而且增量恢复做的不好,很多时候恢复主从需要全量快照复制

事务和一致性

mongodb不支持事务,redis支持一定的事务

所以选择来看,mongodb适合作为替代关系数据库比如mysql sqlserver等作为线上数据库用,而redis还主要适合用于做缓存。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
基于MongoDB的高并发高可用政府云平台架构实践
Redis-第二章节-简介
全面!2016全球最强数据库大盘点
5款主流NoSQL数据库全方位横评
数据库的简介与类型
一种数据库打天下?开源数据库选型应该注意什么?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服