全网数据库大全
参考资源
何为数据库?
数据库是数据的仓库,它分为关系型数据库和非关系型数据库。
关系型数据库
何为关系型数据库?
-
关系型数据库是依据关系模型来创建的数据库。
关系模型:指二维表格模型,比如一对一、一对多、多对多等关系模型。
换而言之,一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
特点:
-
安全(因为存储在磁盘中,不会说突然断电数据就没有了)、
-
容易理解(建立在关系模型上)、
-
但不节省空间(因为建立在关系模型上,就要遵循某些规则,好比数据中某字段值即使为空仍要分配空间)
1. OldSQL
Infobright、Netezza、ParAccel、SAP Sybase IQ、Teradata、EMC、Calpont、IBM InfoSphere、Aster Data、Greenplum、VectorVise、HP Vertica、Oracle、IMB DB2、SQL Server、JustOne、MySQL、Ingres、PostgreSQL
①Oracle
Oracle数据库是甲骨文提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。
优点:
开放性:Oracle 能所有主流平台上运行。
可伸缩性,并行性:Oracle 并行服务器通过使组结点共享同簇工作来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能满足需要用户把数据库移UNIXOracle并行服务器对各种UNIX平台集群机制都有着相当高集成度。
安全性:获得最高认证级别的ISO标准认证。
性能:Oracle 性能高。
客户端支持及应用模式。
使用风险:Oracle长时间开发经完全向下兼容的广泛应用且风险低 。
缺点:
对硬件的要求很高。
价格比较昂贵。
管理维护麻烦一些。
操作比较复杂,需要技术含量较高
②MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的关系数据库管理系统应用软件。
优点:
体积小、速度快、总体拥有成本低,开源、支持多种操作系统。
是开源数据库,提供的接口支持多种语言连接操作。
核心程序采用完全的多线程编程,线程是轻量级的进程,可以灵活地为用户提供服务。
有一个非常灵活而且安全的权限和口令系统。
支持大型的数据库, 可以方便地支持上千万条记录的数据库。
拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。
提供高度多样性,能够提供很多不同的使用者界面,可以用在个人电脑或者是服务器上。
缺点:
不支持热备份。
MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。
没有一种存储过程语言。
第三方案安装收费。
③SQL Server
SQL Server是由Microsoft开发和推广的关系数据库管理系统。
优点:
易用性、适合分布式组织的可伸缩性。
用于决策支持的数据仓库功能。
与许多其他服务器软件紧密关联的集成性。
良好的性价比。
SQLServer是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言 (XML)的核心支持以及在Internet上和防火墙外进行查询的能力。
缺点:
开放性 :SQL Server 只能windows上运行。
伸缩性并行性 :SQL server 并行实施和共存模型并成熟难处理日益增多用户数和数据卷伸缩性有限。
安全性:没有获得任何安全证书。
性能 :SQL Server 多用户时性能不佳 。
客户端支持及应用模式: 只支持C/S模式,SQL Server C/S结构只支持windows客户用ADO、DAO、OLEDB、ODBC连接。
使用风险:SQL server 完全重写代码经历了长期测试断延迟许多功能需要时间来证明并十分兼容。
到了大数据时代,人们更多的数据和物联网加入的数据已经超出了关系数据库的承载范围,所以迎来了非关系型数据库。
2. NewSQL
NoSQL谢幕,NewSQL登场
何为NewSQL?
NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
TiDB、CockroachDB、FoundationDB、HandlerSocket、Akiban、MySQL Cluster、Clustrix、Drizzle、GenieDB、ScalArc、CodeFutures、Schooner MySQL、Tokutek、ScaleBase、NimbusDB、Continuent、VoltDB、Translattice、Amazon RDS、SQL Azure、Database.com、FathimDB、Xeround
&:后面的五个也属于云数据库
①TiDB
TiDB是PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库,它实现了自动的水平伸缩,强一致性的分布式事务,基于 Raft 算法的多副本复制等重要 NewSQL 特性。TiDB 结合了 RDBMS 和 NoSQL 的优点,部署简单,在线弹性扩容和异步表结构变更不影响业务, 真正的异地多活及自动故障恢复保障数据安全,同时兼容 MySQL协议,使迁移使用成本降到极低。
特性:
SQL支持(TiDB 是 MySQL 兼容的)
水平弹性扩展(吞吐可线性扩展)
分布式事务
跨数据中心数据强一致性保证
故障自恢复的高可用
海量数据高并发实时写入与实时查询(HTAP 混合负载)
②CockroachDB
CockroachDB是构建于事务处理及强一致性KV存储上的分布式SQL数据库,支持水平扩展、自动容错处理、强一致性事务,并且提供SQL接口用于数据处理,是Google Spanner/F1的开源实现。 CockroachDB适用于应用对数据要求精确、可靠、完全正确的场景,支持自动复制、均匀分布、基于极小配置的数据恢复,可用于分布式的、可复制的联机事务处理(OLTP),多数据中心的部署,私有云的基础构建,它不适用于读少写多的场景,可以用内存数据库来代替,也不适用于复杂的join查询,重量级的数据分析及联机分析处理(OLAP)。
特性:
支持PostgreSQL
对标准SQL支持较完善
较稳定
③FoundationDB(2018-4 重新开源,资料较少)
2015年,苹果公司收购了FoundationDB,并可能早已将该数据库用于iCloud云存储服务。
2018年4月20日,苹果公司宣布将旗下数据库产品FoundationDB核心开源,以建立一个开放的社区。该开源项目已公布在Github上。
FoundationDB是一个能在多集群服务器上存放大规模结构化数据的分布式数据库。该数据库系统专注于高性能、高可扩展性、和不错的容错能力。这意味着使用该数据库的项目运行起来更高效且维护成本低。
④商用NewSQL
Spanner、F1:谷歌
OceanBase:阿里
TDSQL:腾讯
UDDB:UCloud
Spanner
Spanner 是在谷歌公司设计、开发和部署的一个可扩展的、全球分布式的数据库,也是第一个把数据分布在全球范围内的系统。
非关系型数据库(NoSQL)
何为非关系型数据库?
非关系型数据库主要是基于“非关系模型”的数据库。
由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库
特点:
效率高(因为存储在内存中)、
但不安全(断电丢失数据,但其中redis可以同步数据到磁盘中),现在很多非关系型数据库都开始支持转存到磁盘中。
1. 键值数据库
键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。键值数据库是高度可分区的,并且允许以其他类型的数据库无法实现的规模进行水平扩展。
Reids
Redis是一个高性能的键值数据库。是当前最热门的的的NoSql数据库之一,也被人们称为数据结构服务器。
优点:
1、运行在内存,速度快官方号称支持并发11瓦特读操作,并发8瓦特写操作。
2、可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。
3、支持数据结构丰富(string,list,set,zset(sorted set - 有序集合)和Hash)
除此之外还有Riak、Membrain、Voldmort、BekeleyDB等
2. 文档数据库
以文档为处理信息的基本单位的数据库。
MongDB
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
3. 列式数据库
将表放入存储系统中有两种方法,而我们绝大部分是采用行存储的,而列式存储(Column-based)是相对于传统关系型数据库的行式存储(Row-based)来说的。
应用行式存储的数据库系统称为行式数据库,同理应用列式存储的数据库系统称为列式数据库。随着列式数据库的发展,传统的行式数据库加入了列式存储的支持,形成具有两种存储方式的数据库系统。
传统的关系型数据库,如Oracle、DB2、MySQL、SQL SERVER等采用行式存储法,当然传统的关系型数据库也在不断发展中。随着Oracle 12c推出了in memory组件,使得Oracle数据库具有了双模式数据存放方式,从而能够实现对混合类型应用的支持:传统的以行形式保存的数据满足OLTP应用;列形式保存的数据满足以查询为主的OLAP应用。
列式数据库可以大幅降低系统的I/O,尤其是在海量数据查询时。
随着传统关系型数据库与新兴的分布式数据库不断的发展,列式存储与行式存储会不断融合,数据库系统会呈现双模式数据存放方式,这也是商业竞争的需要。
①Hbase
HBase,即hadoop Database的简称。
它依托于Hadoop的HDFS作为其最基本的存储单元,通过使用Hadoop的HDFS工具就可以看到这些数据存储文件夹的结构,还可以通过MapReduce的框架对HBase进行操作。
存储结构和运行机制详见:https://cloud.tencent.com/developer/news/246934
②BigTable
Bigtable是一个为管理大规模结构化数据而设计的分布式存储系统。
Bigtable已经实现了以下的几个目标:适用性广泛、可扩展、高性能和高可用性。
4. 云数据库
云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。如App Engine、DataStore、SimpleDB.......
特性有:实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog备份、SQL审计、访问白名单、监控与消息通知等。
5. 图数据库
图形数据库是NoSQL数据库的一种类型,它应用图形理论存储实体之间的关系信息。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。
图数据库由结点集和连接结点的关系组成(有的也称泡泡和箭头)。
如InfiniteGraph、Neo4J、OrientDB、GraphDB等。