数据库使用系列专栏:数据库使用系列文章


目录

1 数据库分类

1.1 关系型数据库

1.2 非关系型数据库

2 数据库对比


1 数据库分类

数据库根据数据结构可分为关系型数据库和非关系型数据库。非关系型数据库中根据应用场景又可分为键值(Key-Value)数据库、列存储数据库、面向文档数据库、搜索引擎数据库等。

1.1 关系型数据库

这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式), 如图2是一个二维表的实例。通常该表第一行为字段名称,描述该字段的作用,下面是具体的数据。在定义该表时需要指定字段的名称及类型。

图一 数据库表实例

在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上。在大型系统中通常有多个表,且表之间有各种关系。实际使用就是通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。

典型产品:MySQL、SqlServer、Oracle、PostgreSQL、SQLite等。

1.2 非关系型数据库

键值存储数据库

键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。

图2 键值存储数据示意图

如图2是某公有云的键值存储示意图,其中键包含分区键和排序键,而值包含更多的实际信息。比如实际使用是可以以学号为键,姓名、性别、年龄和班级等信息为值进行存储。实际存储形式很灵活,是业务需求自行定义即可。

典型产品:Redis、Memcached等。

列存储数据库

列式存储(column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是对表中数据的存储形式的差异。

图3 列存储数据

如图3是传统行数据库和列数据库表中数据在磁盘上的存储形式的差异对比。对于行存储数据库,表中的数据是以行为单位逐行存储在磁盘上的;而对于列存储数据库,表中的数据则是以列为单位逐列存储在磁盘中。

列存储解决的主要问题是数据查询问题。我们知道,平时的查询大部分都是条件查询,通常是返回某些字段(列)的数据。对于行存储数据,数据读取时通常将一行数据完全读出,如果只需要其中几列数据的情况,就会存在冗余列,出于缩短处理时间的考量,消除冗余列的过程通常是在内存中进行的。而列存储,每次读取的数据是集合的一段或者全部,不存在冗余性问题。这样,通过这种存储方式的调整,使得查询性能得到极大的提升。

典型产品:HBase等。

面向文档数据库

此类数据库可存放并获取文档,可以是XML、JSON、BSON等格式,这些文档具备可述性(self-describing),呈现分层的树状结构(hierarchical tree data structure),可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的键值数据库。

典型产品:MongDB、CouchDB等。

图形数据库

图形数据库顾名思义,就是一种存储图形关系的数据库。图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如图4这种人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。

图4 图形数据库示例

典型产品:Neo4J、InfoGr id等。

搜索引擎存储

搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。

典型产品:Solr、Elasticsearch等。

2 数据库对比

几种主流关系型数据库对比:

数据库 优势 缺点
MySQL 1)MySQL性能卓越,服务稳定,很少出现异常宕机。
2)MySQL开放源代码且无版权制约,自主性及使用成本低,版本更新较快。
3)MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低。
4)MySQL支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。
数据量大时处理性能不及Oracle
SqlServer 1)真正的客户机/服务器体系结构
2)图形化的用户界面,使系统管理和数据库管理更加直观、简单
3)丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地
4)与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQL Server也可以很好地与Microsoft  BackOffice产品集成。
5)提供数据仓库功能,这个功能只在Oracle和其他昂贵的DBMS中才有。
只能在Windows系统下运行
Oracle

1)Oracle 能在所有主流平台上运行

2)Oracle 性能高,保持开放平台下TPC-D和TPC-C世界记录

3)获得最高认证级别的ISO标准认证

价格昂贵
PostgreSQL 1)PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步。
2)PG 性能高速度快。任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降。
3)PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型。
4)PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统
5)PG对数据量大的文本以及SQL处理较快
 
SQLite

1)零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复

2)SQLite是被设计成轻量级,自包含的,不依赖服务进程

3)采用无数据类型,所以可以保存任何类型的数据,SQLite采用的是动态数据类型,会根据存入值自动判断

4)可移植,可运行在不同操作系统上

数据量不宜过大,sql语句执行相比其他数据库效率较低

几种主流非关系型数据库对比:

数据库 优势 缺点
Redis 1)支持内存缓存,这个功能相当于Memcached
2)支持持久化存储,这个功能相当于MemcacheDb,ttserver
3)数据类型更丰富。比其他key-value库功能更强
4)支持主从集群,分布式
5)支持队列等特殊功能
 
Memcached 开源的、高性能的、具有分布式内存对象的纯缓存系统 不支持持久化
HBase

1)适合存储半结构化或非结构化数据

2)高可用和海量数据以及很大的瞬间写入量

3)记录很稀疏,RDBMS的行有多少列是固定的,为null的列浪费了存储空间。HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。

1)不适合于大范围扫描查询
2)不直接支持 SQL 的语句查询
MongoDB

1)弱一致性(最终一致),更能保证用户的访问速度

2)查询与索引方式灵活,是最像SQL的Nosql

3)内置GridFS,支持大容量的存储

4)内置Sharding,支持复制集、主备、互为主备、自动分片等特性

5)第三方支持丰富 6)性能优越

1)单机可靠性比较差 2)磁盘空间占用比较大

3)大数据量持续插入,写入性能有较大波动

架构设计有一句流行语:不以业务模型为基础的架构设计都是耍流氓。同样数据库选型也应该根据自己业务需求选择最适合自己的数据库

数据库分类及主流数据库对比相关推荐

  1. 深度解析SQL和NoSQL数据库,掌握主流数据库【两万字解析】

    大家好,我是辣条. 大家国庆玩的快乐否,玩开心的兄弟萌评论扣1,觉得不怎么样的兄弟萌扣2,我希望看到大家都是扣1呦,觉得这篇文章对你有帮助的话可以给辣条一个三连呦. 目录 数据库高级特性 一.存储引擎 ...

  2. 数据库分类及常用数据库

    数据库常见类型分为四种:层次式数据库.网络式数据库.关系型数据库.非关系型数据库. 但是常用数据库类型为:关系型数据库和非关系型数据库. 关系型数据库: 将复杂的数据结构归结为简单的二元结构(也可以叫 ...

  3. 超全的数据库分类介绍

    〓数据库的分类〓 数据库通常分为层次式数据库.网络式数据库和关系式数据库三种.而不同的数据库是按不同的数据结构来联系和组织的. 而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系 ...

  4. 几种主流数据库的压缩技术对比

    原文链接:http://blog.inkernel.info/archives/1.html 压缩功能几乎是当前主流数据库的标配功能,除了能够节省存储空间外,在IO密集型的系统中, 可能也会带来性能的 ...

  5. 常见主流数据库对比介绍

    常见数据库有<关系数据库系统>: ORACLE(甲骨文).DB2.SQL Server.Sybase.Informix.MySQL.VF.Access等. 其实数据库系统几乎支持所有的操作 ...

  6. 国产 神通数据库 对比国际主流数据库的优势

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 以下纯属 ...

  7. 数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复“数据库2018”下载典藏版PDF报告)

    数据简化社区2018年全球数据库总结及18种主流数据库介绍(公号回复"数据库2018"下载典藏版PDF报告) 秦陇纪 数据简化DataSimp 今天 数据简化DataSimp导读: ...

  8. 关系型数据库和非关系型数据库的优劣对比?

    关系型数据库和非关系型数据库的优劣对比? 关系型数据库和非关系型数据库的优劣对比? 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织. 优点: 1.易于维护:都是使用表结构 ...

  9. 关系型数据库 和 非关系型数据对比 以及 MySQL与Oracle对比

    一.关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库.     关系模型1970年提出的,关系模型的概念得到了充分的发展并逐渐成为主流数据库结构的主流模型.     简单来说,关系模型 ...

  10. 【数据库】第一章 数据库的分类、SQL、数据库、表和表记录的常用操作

    [数据库]第一章 数据库的分类.SQL.数据库与表的常用操作 文章目录 [数据库]第一章 数据库的分类.SQL.数据库与表的常用操作 一.数据库的分类 1.关系型数据库 2.非关系型数据库 3.MyS ...

最新文章

  1. 反射中 BindingFlags标识
  2. 【解决方案】OpenCV配置【Win10+VS2017】(本人于2018年3月30日完成)
  3. Kali获取不到IP解决方案
  4. LeetCode 1660. 纠正二叉树(BFS)
  5. 我的Go+语言初体验——(6)整型有理数数据类型
  6. 玩转SpringSession,重要知识点全面剖析(续篇)
  7. Scala Case
  8. Maven 缺省内置变量
  9. jenkins ssh 部署 Can't connect to server 错误
  10. 如何将Sublime Text中的代码以彩色高亮形式复制到博客或word文档里
  11. MySQL之级联删除、级联更新、级联置空
  12. 基于dubbo + maven 的项目搭建
  13. 笔记本开机密码忘记了怎么解决,消除笔记本密码
  14. 如何免费注册一个域名?
  15. Python爬虫入门教程 41-100 Fiddler+夜神模拟器+雷电模拟器配置手机APP爬虫部分
  16. 僵尸网络新世界:摄像头的背叛和战争
  17. 利用百度网盘引流方法,如何利用百度网盘进行精准引流?
  18. DICOM图像像素值(灰度值)转换为CT值
  19. Latex编译成功但是无法输出到PDF
  20. Chrome的HTTPS安全站点标志将于今年9月停用

热门文章

  1. 光环PMP 二模错题知识点
  2. html表单实例:用户反馈表单页面代码
  3. python去除视频马赛克_十行python代码教你如何去除万恶的,如s一样的马赛克
  4. ROS 机器人操作系统:概述
  5. ros清华源_ROS操作系统学习(一)ROS安装
  6. 华为HCIE之TS部分整理
  7. 黑马redis实战-秒杀页面
  8. Spring-Boot开发者工具:自动重启、LiveReload、远程开发、默认的开发时属性值
  9. NB50/60 TJ1/TK1 模具 黑苹果保姆级教程整理
  10. 机器学习基石(一):什么是机器学习