本文由 简悦 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. webgoat白盒审计+漏洞测试

    前言 小白,记录,有问题可以交流 乖乖放上参考链接: https://www.freebuf.com/column/221947.html https://www.sec-un.org/java代码审 ...

  2. Spark中普通集合与RDD算子的sortBy()有什么区别

    分别观察一下集合与算子的sortBy()的参数列表 普通集合的sortBy() RDD算子的sortBy() 结论:普通集合的sortBy就没有false参数,也就是说只能默认的升序排. 如果需要对普 ...

  3. Java学习之数组的简单用法

    •概念 其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作. 数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配: 而数组的定义语法有两种 ...

  4. Python异步asyncio快速实践模版

    只是参考快速跑起来模版,细节或者封装流畅使用需要详细阅读aiohttp文档 1 import asyncio 2 3 async def foo(): 4 await print('bar') 5 6 ...

  5. 【Django学习笔记】-环境搭建

    对于初学django新手,根据以下步骤可以快速进行Django环境搭建 虚拟环境创建 使用virtualenv创建并启用虚拟机环境 ,关于virtualenv可参考https://www.yuque. ...

  6. Redis解读(1):Redis安装启动及常见数据类型

    Redis 简介 Redis 是我们在互联网应用中使用最广泛的一个 NoSQL 数据库,基于 C 开发的键值对存储数据库. Redis 这个名字是 Remote Dictionary Service ...

  7. HTML(一):语法结构

    HTML语法规范 基本语法概述 HTML标签是由尖括号包围的关键词,例如<html>. 2HTML标签通常是成对出现的,例如<html>和</html> ,我们称为 ...

  8. Dynamics CRM产生公共签名,避免每次插件换环境重新输入签名密钥账号密码

    在Dynamcs CRM项目维护交接过程中,我们经常会使用其他合作者的插件代码.但是每次拿到别人代码编译的时候插件密钥都要重新输入密钥的账号密码.而且如果密钥都是的话比较麻烦.所以这里就针对这个问题做 ...

  9. OO UNIT 1 个人单元总结

    面向对象课程--第一单元个人总结 作业分析 第一次作业 概要 本次作业主要对简单幂函数的多项式进行求导计算,要点在于对输入字符串的处理,利用正则表达式匹配即可,并且需要对输出表达式的长度进行优化. 度 ...

  10. 学习WEB前端是应该自学还是参加培训机构?

    先说观点,我强烈建议每个人都要自学,不要参加培训班. 我干web前端工程师这个职位已经有6年多的时间,之前在蚂蚁金服做过2年,后来离开是因为加班实在熬不住才走的,像这些已经上市的互联网公司几乎没有不加 ...