本文由 简悦 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. C++覆盖,隐藏,重载

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  2. Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译前准备(1)

    最近项目也和linux kernel技术有关,调试内核和内核模块.修改内核源码,是学习内核的重要技术手段之一.应用这些技术时,都有一本基本的要求,那就是编译内核.因此,在分析内核调试技术之前,本随笔给 ...

  3. kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析

    作者:詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作. 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云TKE集群和运维中心开发工作. 引言 降本增 ...

  4. OMnet++ 初学者教程 第一节 入门

    第1部分-入门 1.1模型 首先,让我们从一个包含两个节点的"network"开始.节点将做一些简单的事情:一个是节点将创建一个数据包,而两个节点将继续来回传递相同的数据包.我们将 ...

  5. 工具 | Typora + PicGo-Core 自动上传图片到图床

    0 前言 Markdown 是现在十分流行的标记式语言,在博客等很多场景中应用十分广泛.众所周知,Markdown 中的图片是以链接的形式存在的,不像 Word 等传统文本编辑器直接把图片嵌入文档中. ...

  6. 干货!Apache Hudi如何智能处理小文件问题

    1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...

  7. MySQL-一条sql语句的执行顺序

    手写: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_tab ...

  8. Java网络编程快速上手(SE基础)

    参考资料:百度百科TCP协议 本文涉及Java IO流.异常的知识,可参考我的另外的博客 一文简述Java IO 一文简述JAVA内部类和异常 1.概述 计算机网络相关知识: OSI七层模型 一个报文 ...

  9. 【笔记】《Redis设计与实现》chapter19 事务

    chapter19 事务 Redis通过MULTI.EXEC.WATCH等命令来实现事务功能 19.1 事务的实现 事务开始 redis> MULTI ok 通过切换客户端状态的flag属性的R ...

  10. python程序—一键部署keepalived+lvs

    一个DS 两个RS keepalived端在/root下准备好已经修改好的配置文件 import paramiko # keepalived端 需要修改的信息 keepalived_ip='192.1 ...