目录
数据库分类
数据库共分为两种类型:关系型数据库、非关系型数据库(NoSQL)
关系型数据库
概念介绍
关系型数据库:指用关系模型来组织数据信息的数据库。
关系模型指的是二维表格模型,而一个关系型数据库便是由二维表以及表之间的关系所构成的一个数据集合。
关系型数据库的优势
- 便于理解:二维表构造非常贴近逻辑
- 应用方便:支持通用的SQL(结构化查询语言)语句
- 易于维护:全部由表结构组成,文件格式一致
- 复杂操作:可以用SQL句子多个表之间做非常繁杂的查询
- 事务管理:促使针对安全性性能很高的数据信息浏览规定得到完成
关系型数据库的不足
- 读写性能差,尤其是海量信息的效率高读写能力
- 固定不动的表构造,灵便度稍欠
- 高并发读写时,硬盘I/O存在瓶颈
- 可扩展性不足,不像web server和app server那样简单的添加硬件和服务节点来拓展性能和负荷工作能力
非关系型数据库
概念介绍
非关系型数据库:指非关系型的,分布式系统的,且一般不确保遵照ACID标准的数据储存系统。
非关系型数据库算是一种数据结构化储存的集合,可以是文档或键值对等。
非关系型数据库的本质是传统关系型数据库的功能阉割版本,通过去掉不需要的功能来提高性能。
非关系型数据库的类型
- 键值储存数据库
- 列储存数据库
- 文档型数据库
- 图数据库
非关系型数据库的优势
- 格式灵活:数据存储格式非常多样,应用领域广泛,而关系型数据库则只适用基础的关系模型
- 性能优越:NOSQL是根据键值对的,不用历经SQL层的分析,因此 性能非常高
- 可扩展性:基于键值对,数据之间耦合度极低,因此容易水平扩展
- 低成本:非关系型数据库部署简易,且大部分可以开源使用
非关系型数据库的不足
- 不支持sql,学习和运用成本比较高
- 无事务处理机制
- 数据结构导致复杂查询不容易实现
关系型数据库与非关系型数据库区别
- 成本:Nosql数据库易部署,不用像Oracle那般花费较高成本选购。
- 查询速率:Nosql数据库将数据储存于缓存当中,不用历经SQL层的分析;关系型数据库将数据储存在电脑硬盘中,查询速率远不如Nosql数据库。
- 储存格式:Nosql的储存文件格式是key,value方式、文本文档方式、照片方式这些,能储存的对象种类灵活;关系数据库则只适用基础类型。
- 可扩展性:关系型数据库有join那样的多表查询机制限定造成拓展性较差。Nosql依据键值对,数据中间沒有耦合度,因此容易水平拓展。
- 数据一致性:非关系型数据库注重最终一致性;关系型数据库注重数据整个生命周期的强一致性。
- 事务处理:SQL数据库支持事务原子性粒度控制,且方便进行事务回滚;NoSQL也支持事务处理,但可靠性不足,其价值在于可扩展性和大数据量处理。
数据库品牌
关系型数据库品牌
SQLServer
SQL Server是由Microsoft开发和推广的关系数据库管理系统(RDBMS),具有以下特点:
- 真正的客户机/服务体系结构
- 图形化用户界面,使系统管理和数据库管理更加直观、简单
- 丰富的编程接口工具,支持分布式的分区视图
- SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。
- 具有很好的伸缩性
- 对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上,强大的基于Web的分析
- 提供数据仓库功能
- 支持OLE DB和多种查询
Oracle
Oracle是甲骨文公司的一款关系数据库管理系统,具有以下特点:
- 系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境
- 是一种高效率的、可靠性好的、适应高吞吐量的数据库方案
- 分布式处理功能
- 提供数据仓库功能
MySQL
MySQL由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品,具有以下特点:
- 采用了双授权政策,分为社区版和商业版,体积小、速度快、总体拥有成本低
- 开放源码
- 支持定制,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统
- 在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性
- 复制全局事务标识,可支持自我修复式集群
- 复制无崩溃从机,可提高可用性
- 复制多线程从机,可提高性能
- 原生JSON支持
- 多源复制
- GIS的空间扩展
PostgreSQL
PostgreSQL是加州大学计算机系开发的一款关系数据库管理系统,具有以下特点:
- 灵活的许可证,任何人都可以以任何目的免费使用、修改和分发PostgreSQL
- PostgreSQL是客户端-服务器的架构模式
- 用户定义函数扩展性好,PostgreSQL可以更方便地使用UDF(用户定义函数)进行扩展
- 具有复杂的锁定机制
- 多版本并发控制(MVCC)
SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目,具有以下特点:
- 占用资源低
- 零配置 – 无需安装和管理配置
- 独立: 没有额外依赖,不需要一个单独的服务器进程或操作的系统(无服务器的)
- 源码完全开源,可以用于任何用途,包括出售
- 支持事务处理
INFORMIX
informix是IBM公司出品的关系数据库管理系统家族,作为一个集成解决方案,它被定位为作为IBM在线事务处理(OLTP)旗舰级数据服务系统,具有以下特点:
- 主要产品分为数据库服务器(数据库核心)、应用开发工具、网络数据库互联产品
- 高性能、高可用性、分布式数据库,支持多媒体
MariaDB
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。具有以下特点:
MariaDB 是一个采用 Maria 存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。
这个项目的很多代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。
与 MySQL 相比较,MariaDB 更强的地方在于:
- Maria 存储引擎
- PBXT 存储引擎
- XtraDB 存储引擎
- FederatedX 存储引擎
- 更快的复制查询处理
- 线程池
- 更少的警告和bug
- 运行速度更快
- 更多的 Extensions (More index parts, new startup options etc)
- 更好的功能测试
- 数据表消除
- 慢查询日志的扩展统计
- 支持对 Unicode 的排序
相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。详情见列表。
Percona Server
Percona 其实是基于 MySQL 的一个分支开发的,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。具有以下特点:
- 完全兼容MySQL协议
- 支持 MySQL 社区版和企业版功能特性
- 丰富的性能诊断工具
- 性能优化
- bug修复
Microsoft Access
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。具有以下特点:
- 存储方式简单,易于维护和管理
- 面向对象,简化应用系统开发
- 界面友好,操作简便,容易使用
- 集成环境,可处理多种数据信息
- 支持广泛,易于扩展
DB2
DB2是IBM一种分布式数据库解决方案。说简单点:DB2就是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。具有以下特点:
DB2数据库核心又称作db2公共服务器,采用多进程多线索体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能。
- 支持面向对象的编程
- 支持多媒体应用程序
- 备份和恢复能力
- 支持存储过程和触发器,用户可以在建表时显示的定义复杂的完整性规则
- 提供GUI和命令行,在windows和Unix下操作相同
- 支持异构分布式数据库访问
- 支持数据复制
Sybase
Sybase是美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。 Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与SybaseSQLAnywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在我国大中型系统中具有广泛的应用。具有以下特点:
- 基于客户/服务器体系结构的数据库,支持共享资源且在多台设备间平衡负载
- 操作较为复杂,对数据库管理员的要求较高
dBASE
dBase是第一个在个人电脑上被广泛使用的单机版数据库系统,在CP/M与DOS的时期,由Ashton-Tate公司所发表。
非关系型数据库品牌
Redis
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。具有以下特点:
- 内存数据库,速度快,也支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
- 支持事务
- 支持主从同步
MongoDB
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。具有以下特点:
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
- 面向集合存储,易存储对象类型的数据。
- 模式自由。
- 支持动态查询。
- 支持完全索引,包含内部对象。
- 支持查询。
- 支持复制和故障恢复。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 自动处理碎片,以支持云计算层次的扩展性
- 支持Ruby,python,Java,C++,PHP,C#等多种语言。
- 文件存储格式为BSON(一种JSON的扩展)。
- 可通过网络访问。
MemCache
memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著 。这是一套开放源代码软件,以BSD license授权发布。具有以下特点:
- 协议简单
- 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
HBase
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。具有以下特点:
- 具有高可靠性、高性能和可伸缩性
- 适合于非结构化数据存储
- hbase是主从架构,hmaster作为主节点,hregionserver作为从节点
- Hbase为null的记录不会被存储
- 多版本号数据,依据Row key和Column key定位到的Value能够有随意数量的版本号值,因此对于须要存储变动历史记录的数据,用HBase是很方便的
BigTable
Bigtable分布式数据存储系统是Google为其内部海量的结构化数据开发的云存储技术,是Google的第三项云计算关键技术,是所有云时代分布式存储系统的开发蓝本,已经在超过60个Google的产品和项目上得到了应用 。
Bigtable的设计是为了能可靠地处理PB级的海量数据,使其能够部署在千台机器上 。Bigtable具有高可靠性、高性能、可伸缩等特性,借鉴了并行数据库和内存数据库的一些特性,但Bigtable提供了一个完全不同接口 。Bigtable不支持完整的关系数据模型,而是为用户提供了简单的数据模型,使客户可以动态控制数据的分布和格式 。
Cassandra
Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型)。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。具有以下特点:
- 分布式
- 基于column的结构化
- 高伸展性
CouchDB
CouchDB 是一个开源的面向文档的数据库管理系统,可以通过 RESTful JavaScript Object Notation (JSON) API 访问。术语 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母缩写,它反映了 CouchDB 的目标具有高度可伸缩性,提供了高可用性和高可靠性,即使运行在容易出现故障的硬件上也是如此。CouchDB 最初是用 C++ 编写的,但在 2008 年 4 月,这个项目转移到 Erlang OTP 平台进行容错,具有以下特点:
- CouchDB是分布式的数据库
- CouchDB是面向文档的数据库,存储半结构化的数据
- CouchDB支持REST API,可以让用户使用JavaScript来操作CouchDB数据库,也可以用JavaScript编写查询语句
Neo4J
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。具有以下特点:
- 开源的(社区版开源免费)
- 无模式(不用预设数据的格式,数据更加灵活)
- noSQL(非关系型数据库,数据更易拓展)
- 图数据库(使用图这种数据结构作为数据存储方式)


被折叠的 条评论
为什么被折叠?



