文章目录
- 前言
- 嵌入式数据库
- 数据库服务器
- PostgreSQL和MySQL的对比
- NoSQL
- 国产数据库
- 阿里PolarDB
- 腾讯TDSQL
- 阿里OceanBase
- 和PolarDB的区别
- 华为GaussDb
前言
DB-Engines Ranking 会根据受欢迎程度对数据库管理系统进行排名,排名每月更新一次。
分为关系型数据库、Key-Value (KV) 数据库、文档数据库、时序数据库、图数据库。
排名前十的:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB、Redis、IBM Db2、Elasticsearch、SQLite、 Microsoft Access。
对中小开发者来说,MySQL、Redis、Elasticsearch、MongoDB和SQLite是生存之本,再加上个minio,基本上能满足99%的存储需求。
嵌入式数据库
SQLite、Berkeley DB、Derby、H2、HSQL DB
-
SQLite: SQLite是一种非常流行的文件型数据库,它是一款轻量级、高性能、开源的嵌入式数据库引擎。SQLite采用C语言编写,可以在各种操作系统上运行,并且支持大多数标准SQL语法。
SQLite 是 D.RichardHipp 用一个小型的C库开发的一种强有力的嵌入式关系数据库,虽然功能较 Berkeley DB(商业数据库)稍显逊色,但它简单易学、速度较快,同时提供了丰富的数据库接口,提供了对 SQL92 的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。
SQLite则不得不依赖文件系统锁。它无法支持同时访问数据库的多个进程。 因此,SQLite并不是写密集型部署的首选。而且完全没有用户认证。然而,对于简单的查询,几乎没有什么并发性的查询,SQLite的性能是很高的,这得益于它的设计思想避免了将数据传递给其他进程的开销。 -
Berkeley DB是由美国Sleepycat Software公司开发的一套开放源代码的嵌入式数据库管理系统(已被Oracle收购),它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。
Berkeley DB(BDB)是一个高效的嵌入式数据库编程库,C语言、C++、Java、Perl、Python、Tcl以及 其他很多语言都有其对应的API。Berkeley DB可以保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB支持让数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统,其中包括大多数类Unix操作系统、Windows操作系统 以及实时操作系统。 -
Apache Derby 可以说是 100% 由 Java 编写的一款数据库,以前名称为IBM Cloudscape, 是Apache软件基金会开发的关系型数据库管理系统(RDBMS),它的特点是可以嵌入到Java程序中,用于在线事务处理。它的磁盘空间占用率非常小: 3.5M左右。而且是开源免费的,非常小巧,核心部分derby.jar只有 2M!很多人可能觉得 Derby 不是很热门,但 Derby 已经开发了将近二十年!
-
H2 是一款纯java编写的另一款嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中,同时还提供了非常友好的基于 web 的数据库管理界面。
它可以嵌入到Java应用程序中,也可以在客户端-服务器模式下运行。
h2 作为嵌入式数据库的新秀,主要优势:超轻量级,可以支持内存模式,高效高速,能支持基本的全文搜索,同时与 mysql 数据库兼容性最强,一般使用场景最多的就是在开发环境上进行回归测试使用。
网上有很多开发者拿它与 derby 做对比,称它与 mysql 数据库兼容性强,口碑较好。
-
HSQLDB(HyperSQL DataBase)是一个使用 Java 语言编写的开源关系型数据库,遵循自由的 BSD 协议。纯 Java 实现,jar 文件只有 1.5 MB 左右,支持 JRE 6 以上环境。基于对数据库理论和 SQL 标准的深入研究创建的原创产品;广泛支持 SQL: 2016 标准语法,包括大多数可选功能;很多开源和商业产品都内置了一个 HSQLDB 数据库,包括 Apache ManifoldCF、OpenOffice、LibreOffice、Kepler、JBoss、Volt DB、Mathematica、Jira、Confluence、TeamCity 等。HSQLDB 拥有 20 多年的开发历史,最初由 Thomas Mueller 创建,他也是另一个嵌入式数据库 H2 的创始人。
-
UnQLite是由 Symisc Systems公司出品的一个嵌入式C语言软件库,它实现了一个自包含、无服务器、零配置、事务化的NoSQL数据库引擎。UnQLite是一个文档存储数据库,类似于MongoDB、Redis、CouchDB等。同时,也是一个标准的Key/Value存储,与BerkeleyDB和LevelDB等类似。UnQLite是一个嵌入式NoSQL(键/值存储和文档存储)数据库引擎。不同于其他绝大多数NoSQL数据库,UnQLite没有一个独立的服务器进程。UnQLite直接读/写普通的磁盘文件。包含多个数据集的一个完整的数据库,存储在单一的磁盘文件中。数据库文件格式是跨平台的,可以在32位和64位系统或大端和小端架构之间,自由拷贝一个数据库。
-
esProc SPL:如果要为 Java 小微型应用提供数据处理和计算能力,还有一个更好的选择:esProc SPL。esProc SPL 一个开源的数据处理引擎,架构简单,集成方便,可持久化存储数据,有足够的计算能力,这些特点与 SQLite 类似。SPL 架构简单,不用配置服务、节点、集群,只要引入 SPL 的 Jar 包,就可以部署在 Java 环境中。SPL 提供了 JDBC 接口,可以方便地集成到 Java 应用中,简单的查询类似 SQL。
数据库服务器
PostgreSQL和MySQL的对比
MySQL是一个纯粹的关系型数据库,但PostgreSQL是一个对象关系型数据库或ORDBMS,具有表继承和函数重载等功能。SQL,即结构化查询语言,是PostgreSQL和MySQL中与关系型数据库管理系统交互的通用语言。
MySQL是用C/C++编写的,而Postgres是用C编写的。 MySQL不支持级联,而Postgres支持。
MySQL允许的索引类型是二进制搜索树,而Postgres支持许多这种索引类型,包括GIN和Hash。MySQL使用传输层安全(TLS)协议来保证安全,而Postgres使用SSL协议。
MySQL数据库不支持高级数据类型,但Postgres允许高级数据类型,包括用户定义的数据类型。
PostgreSQL的point-in-time recovery(PITR)是非常棒的特性,这是个灵活的高可用特性,提供了诸如针对失败恢复创建热备份以及快照与恢复的能力。
NoSQL
MongoDB: MongoDB是一种文档型数据库,它采用BSON(Binary JSON)格式存储数据,并且支持类似SQL的查询语言。MongoDB适用于数据量较大、需要高性能读写操作的场景,比如Web应用程序、日志管理等。
Redis: Redis是一种基于内存的数据存储系统,支持多种数据结构(包括字符串、哈希表、列表、集合等),并且具有高性能和可扩展性。Redis可以作为缓存、消息队列等多种用途。
CouchDB: CouchDB是一种基于文档的数据库,它以JSON格式存储数据,并且支持类似MapReduce的查询方式。CouchDB具有分布式特性,支持数据同步和复制,适用于需要数据可靠性和高可用性的场景。
LevelDB: LevelDB是Google开发的一种键值对存储数据库,采用C++语言编写,支持多种操作系统。LevelDB具有高性能和可靠性,适用于需要快速读写数据的场景,比如网络爬虫、日志分析等。
国产数据库
阿里PolarDB
PolarDB也是阿里云数据产品事业部18年上线的重磅明星产品,是目前唯一100%兼容MySQL 5.6/5.7/8.0的云原生数据库产品。PolarDB从诞生时便是带着改变世界的使命,区别于传统的关系型数据库,通过多节点集群架构,存储与计算分离,共享存储等一系列创新技术加持,PolarDB拥有最高6倍于MySQL的性能,100TB的存储容量,加上100%兼容MySQL及1/10其他商用数据库的成本,为阿里云客户以及阿里集团提供强有力的数据库服务,受到业界的广泛关注和用户的海量好评。
腾讯TDSQL
TDSQL(Tencent Distributed MySQL,腾讯分布式mysql)是由腾讯技术工程事业群计费平台部针对金融联机交易场景开发的高一致性数据库集群产品。该产品第一个版本诞生于2012年,当时主要承载公司数字支付相关业务,包括Q币Q点、包月、各类点券等核心支付数据的托管;2014年被WeBank选中,作为其核心系统的数据库解决方案;2015年,在腾讯金融云上正式推出,作为唯一一款金融级数据库产品,为金融、政企机构提供数据库的公有云以及私有云服务。
分布式数据库TDSQL是一款金融级分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、HTAP双引擎、Oracle兼容、企业级安全、便捷易运维等特性,已实现99.999%高可用、完整分布式事务、全 局一致性读、国密算法支持等能力,同时提供智能DBA、自动化运营、监控告警等配套设施。
阿里OceanBase
OceanBase是由阿里巴巴和蚂蚁金服自主研发的金融级分布式关系数据库,具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系数据库、低成本等特点。
OceanBase在阿里经济体内部,目前除支持蚂蚁金服、网商银行、PayTM等核心交易系统外,还同时支撑了阿里集团数条大业务线和上百条中小业务,如淘宝收藏夹,阿里妈妈广告等。
OceanBase数据库(OceanBase DataBase Server),是OceanBase家族中的核心产品,因为其核心定位和组件众多复杂,被形象地称为OB kernel。主要解决怎么做存储,怎么做事务,怎么做查询,怎么做高可用几个关键问题,目标是让OceanBase同时具备可扩展、高可用、低成本的核心技术优势,满足金融级业务的客观实际需求。
OceanBase数据库采用 Share-Nothing 架构,各个OceanBase节点之间完全对等,每个OceanBase节点都有自己的 SQL 引擎和存储引擎。
和PolarDB的区别
数据库理论基础不同 PolarDB-X 基于传统的 ACID 理论,支持多种 SQL 查询语言和存储过程等功能,比较适合传统 OLTP 业务场景。而 OceanBase 基于 BASE 理论,支持事务和强一致性模型,同时还支持类似 Hadoop 的 MapReduce 分析计算框架,更适合复杂的 OLAP 和大数据场景。
数据分片粒度不同 PolarDB-X 的数据分片粒度可以在表级别或者库级别进行配置,而 OceanBase 支持更细粒度的表内分片。这意味着在大规模数据处理场景下,OceanBase 可以更好地支持水平扩展。
存储引擎不同 PolarDB-X 使用了自主研发的存储引擎 PolarCore,该引擎基于快照隔离技术,实现了全局串行执行事务,并支持快照读写等特性。而 OceanBase 则采用了自主研发的存储引擎 OceanBase Storage,该引擎使用了分布式存储架构,支持多种数据类型和索引类型,并实现了分布式事务和 ACID 特性。
总之,PolarDB-X 和 OceanBase 都是阿里云提供的强大分布式关系型数据库产品,在不同的场景下都有其优势和特点。需要根据实际业务需求和数据处理规模来选择适合的产品。
联机事务处理OLTP(On-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
华为GaussDb
华为自研的数据库gaussdb的优势有:1、高性能;2、分布式架构;3、多模型支持;4、高可靠性;5、安全性;6、弹性计算能力;7、全球化支持;8、生态系统整合。
GaussDB和鲲鹏芯片,欧拉操作系统拥有更加紧密的合作关系,能够基于更底层的芯片架构,组网形态,系统兼容来进行性能,可靠性方面的优化。是其他友商的数据库系统难以具备的强大底座优势。
它同时也是华为研发资源投入最多,研究最深入的全自研数据库系统,在全球范围内拥有50+以上的博士天团,以及300+的内核研发人员,为打造业务最高标准的分布式数据库产品提供了持续动力。
GaussDB在华为云上拥有两种部署形态:集中式和分布式。其中集中式版本拥有开源生态,用户可以通过开源网站直接下载,该版本华为以完全开放的态度,支持跟业内更多伙伴合作,促成更加广阔的商务模式。作为国内唯一开源数据库,也是华为开源、开放、不LOCKIN单一厂商的最佳证明。