本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

注:转载文章

什么是数据库

简单的说,数据库(英文 Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种方法来管理数据库里的数据更简单的形象理解,数据库和我们生活中存放杂物的仓库性质一样,区别只是存放的东西不同。

早期比较流行的数据库模型有三种,分别为层次式数据库网络式数据库关系型数据库。而在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库非关系型数据库

常用的数据库

常用的数据库有 MySQL、Oracle、Mongodb。那么用户想要选择一个数据库,什么样的数据库才是最能满足用户自身需求的呢?


MySQL 数据库

定位:开源、多平台、关系型数据库。目前使用最广泛、流行度最高的的开源数据库。

特点:支持食物,符合关系型数据库原理,符合 ACID,支持多数 SQL 规范,以二维表方式组织数据,有插件是存储引擎,支持多种存储引擎格式

使用:使用标准的 SQL 语句进行数据库管理,简单 SQL 语句的并发和性能较好,对视图、存储过程、函数、触发器等支持的不是太好

监控:在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有比较多的开源监控工具来监控和记录数据库的状态,比如 zabbix,nagios,cacti,lepus 等

备份:逻辑备份 mysqldump/mysqldumper ,物理备份 用 xtrabackup 等工具进行备份;

高可用:MySQL 高可用有多种方案,官方有基础的 master-slave 主从复制,新版本的 innodb cluster,第三方的有 MHA 等高可用方案;

扩展:MySQL 水平拆分,可以通过水平拆分 proxy 中间进行逻辑映射和拆分,扩大 MySQL 数据库的并发能力和吞吐量。

适用场景

默认的 innodb 存储引擎,支持高并发,简单的绝大部分 OLTP 场景;

Tokudb 存储引擎,使用高并发 insert 的场景;

Inforbright 存储引擎,可以进行列压缩和 OLAP 统计查询场景;


Oracle 数据库

定位: 商业、多平台、关系型数据库;功能最强大、最复杂、市场占比最高的商业数据库;

功能:支持事务,符合关系型数据库原理,符合 ACID,支持多数 SQL 规范,以二维表方式组织数据

部署:Oracle 单实例数据库部署相对容易,但 Oracle RAC 集群环境,部署的步骤和依赖条件都比较多;

使用:通常使用命令行工具,进行各种数据库的管理,通常也可以用 shell 脚本和 python 脚本提高 Oracle 数据库管理效率;各种管理功能,都比较强大;

监控:Oracle 官方有比较全面的监控工具,常用的第三方监控平台,如 zabbix,cacti,lepus 等都有对 Oracle 数据库的各项指标的完善监控;

备份:支持冷备份和热备份,可以用 exp/imp , expdp/impdp 等进行逻辑备份和恢复,可以使用强大的 RMAN 工具进行专业的物理热备份和恢复;

高可用:Oracle 数据库的高可用架构,可以用第三方双机热备软件,结合 Oracle 单实例实现;可以使用 Oracle Dataguard,实现 master 和 standby 的备份;可以使用 Oracle RAC 集群实现实例级别的高可用和负载均衡,使用 ASM 实现存储级别的高可用;

扩展:由于 Oracle 集群采用共享存储的方式,一般只能通过垂直硬件升级进行升级;适用场景:绝大多数 OLTP 场景,部分 OLAP

选择注意:Oracle 从架构到运维,可以说是最难的数据库,学习和使用难度较高。


Mongodb 数据库

定位:开源、多平台、文档型 nosql 数据库;非常主流的文档型 nosql 数据库,“最像关系型数据库”,定位于 “灵活” 的 nosql 数据库

功能:数据文件存储格式为 BSON,模式自由,整体架构与关系型数据库有对应关系,具有较好的高可用性和伸缩性,有插件式存储引擎,新版本默认是 writedtiger 存储引擎;

部署: 部署比较简答,下载软件,设置好配置文件即可启动服务;

使用:不支持 SQL 语句,使用与 SQL 对应的 json 方式管理数据库;

监控:有比较丰富的监控和性能命令,官方有比较完善的图形监控系统,但需要购买;

备份:支持冷备份和热备份,可以使用 mongoexport/mongimport 进行逻辑备份,也可以使用基于 oplog 的 mongodump/mongorestore 物理热备份;

高可用:MongoDB master-slave 主从复制:在 master 节点上加 --master 参数,从数据库加 -slave 和 - source 参数,就可以实现同步,这种目前不建议;

ReplicaSets 复制集,在 mongodb 1.6 之后,开发了新的 replicaset,着呢家了故障自动切换和自动修复成员节点,各个 DB 将数据一致,建议使用这种方式;可以测试读写分离和故障转移;

扩展:mongodb 海量数据水平拆分,将数据分别存储在 sharding 各个节点上,构建出分布式集群。Sharding 架构由 底层多个 mongodb Shared Server,config 水平拆分配置库 config server,前端路由 route process,三部分构成。Sharding 集群底层可以是 mongodb 单实例,也可以高可用的 replicaSet 复制集。

网站后台数据库:mongodb 非常适合实话实说插入、更新与查询,并可以实时复制和高伸缩性,适合更新迭代快、需求变更多、以对象为主的网站应用;

小文件系统:对于 json 文件,二进制数据,适合用 mongodb 进行存储和查询;

日志分析系统:对于数据量大的日志文件,IM 会话消息记录,适合用 mongodb 来保存和查询;

缓存系统:mongodb 数据库也会使用大量的内存,合理的设计,也可以作为缓存系统使用;不过目前缓存系统使用更多的方案是 memcached 和 redis。

了解常用数据库MySQL、Oracle、MongoDB的更多相关文章

  1. 【搜索引擎】Solr最新安装以及通过关系型数据库(MySQL,Oracle,PostgreSQL)导入数据

    版本号 最新的solr版本 : Solr 8.1.1下载地址:https://lucene.apache.org/solr/downloads.html solr-8.1.0.tgz for Linu ...

  2. 数据库 MySQL Jdbc JDBC的六个固定步骤

    *0 案例:    a)在JavaScript中使用正则表达式,在JS中正则表达式的定界符是://     var regexp = /^[0-9]+$/;     if(regexp.test(nu ...

  3. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号

    mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...

  4. 常用数据库高可用和分区解决方案(2) — MongoDB篇

    MongoDB是当前比较流行的文档型数据库,其拥有易使用.易扩展.功能丰富.性能卓越等特性.MongoDB本身就拥有高可用及分区的解决方案,分别为副本集(Replica Set)和分片(shardin ...

  5. 常用数据库高可用和分区解决方案(1) — MySQL篇

    在本文中我们将会讨论MySQL.Oracle.MongoDB.Redis以及Oceanbase数据库,大家可能会奇怪为什么看不到有名关系型数据库MSSQL.DB2或者有名NoSQL数据库Hbase.L ...

  6. 24、jQuery常用AJAX-API/Java调用MySQL / Oracle过程与函数

      1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...

  7. Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结

    Atitit 数据库 标准库  sdk 函数库 编程语言 mysql oracle  attilax总结 1.1. 常见的编程语言以及数据库 sql内部函数库标准化库一般有以下api1 1.2. 各个 ...

  8. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  9. sql server 导出的datetime结果 CAST(0x00009E0E0095524F AS DateTime) 如何向mysql,oracle等数据库进行转换

    1. 处理 sql server 导出的 datetime 类型的字段 在进行sql server向mysql等其他数据进行迁移数据时,会发现使用sql server导出的datetime类型的结果是 ...

随机推荐

  1. 总结下js排序算法和乱序算法

    其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...

  2. 一文彻底搞懂JS前端5大模块化规范及其区别

    码文不易,转载请带上本文链接,感谢~ https://www.cnblogs.com/echoyya/p/14577243.html 目录 码文不易,转载请带上本文链接,感谢~ https://www ...

  3. SqlServer触发器的创建与使用

    前言 上期我们介绍了SqlServer的视图和存储过程创建与使用,这期我们介绍一下触发器. 有需要回顾的可以电梯直达看一下: SqlServer视图的创建与使用 SqlServer存储过程的创建与使用 ...

  4. 【OO第二次作业】关于Homework2性能分的思考

    为了获得更多的性能分,个人目前想到了以下注意点: Homework2与Homework1还是有不少相似之处的,因此在上次作业中的这些性能提升点,此次依然有效-- 表达式之间不含空格 如果存在正项,则表 ...

  5. canvas判断点是否在路径内

    应用场景 我们的项目中有个功能是,canvas上的某个图片选中后可以再这个图片上用鼠标拖拽绘制画笔线条. 当然绘制的边界要控制在图片大小范围内的,那么鼠标是可以随意动的,怎么能控制只在图片上的时候才绘 ...

  6. 6.1vector用法

    目录 一.用法介绍 二.基本用法 三.PAT A1039 一.用法介绍 vector<typename>name; 按照这样的格式进行定义与书写. 注意定义成双数组的情况要加上空格. ve ...

  7. Java(100-113)【类与对象、封装、构造方法】

    1.对象的创建以及使用 Student stu =new Student(); 根据一个类创建一个对象 导包.创建.使用 2.手机练习 有main才能run Phone.java package cn ...

  8. JMeter自定义采样器插件开发

    JMeter自定义采样器插件开发 目录 JMeter自定义采样器插件开发 1. 简介 2. 需求简介 3.成品展示 成功展示 失败展示 4. 准备开发环境 4.1 准备pom文件 4.2 新建Java ...

  9. 交换机之间的通信 VLAN和trunk

    只有 PC0和PC2可通信,PC1和PC3可通信 将PC0和PC2加入同一个VLAN 将PC1和PC3加入同一个VLAN 将左边的交换机的Fa0/3口开启trunk模式即可(如下图)

  10. JAVAEE_Servlet_07_设置网站欢迎页面

    Web站点的欢迎页面的设置 * 欢迎页面怎么设置? - 假设在WebContent下创建login.html,想让login.html作为站点的欢迎页面. - 打开web.xml文件,添加<we ...