数据库选型参考

文章目录

    • 前言
    • 嵌入式数据库
    • 数据库服务器
      • 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单一厂商的最佳证明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/142291.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC 学习(七)JSON

9. JSON 9.1 简介 JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级数据交换格式,采用独立于编程语言的文本格式储存和表示数据,易于机器解析和生成,提升网络传输效率。 任何 JavaScript 支持…

9.26 牛客Java题库day 3

1.类变量(static)在不设置初始值时,会进行默认值赋值,而局部方法中声明的变量则必须进行初始化,它不会进行默认值赋值 2.了解forward,redirect: URL:统一资源定位符,又是也被俗称为网页地址 http://www.runoob.com/…

描述性统计分析

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件可在个人主页—…

电压放大器在无损探伤中的应用研究

电压放大器是一种常见的电子设备,其主要作用是将低电平信号转换为高电平信号。在无损探伤中,电压放大器被广泛应用于信号增益和分析,以便更好地检测表面或内部缺陷。下面安泰电子Aigtek将详细介绍电压放大器在无损探伤中的应用研究。 电压放大…

ForkJoin详解

1.分支合并 (大数据量的去使用) package com.kuang.forkjoin;import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; import java.util.function.LongBinaryOperator; import java.util.stre…

MSF的安装与使用教程,超详细,附安装包和密钥

MSF简介 Metasploit(MSF)是一个免费的、可下载的框架 它本身附带数百个已知软件漏洞,是一款专业级漏洞攻击工具。 当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了,仿佛一夜之间&#xff0…

【CentOS7】安装docker

【CentOS7】安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过命令查看你当前的内核版本 。2.使用 root 权限登录 Centos,将 yum 包更新到最新。(确保联网)3. 如果安装过旧版本的话,卸载旧版本4. 设置yu…

springboot实战(八)之整合redis

目录 序言: 环境: 依赖: 配置: 测试: redis序列化配置: 连接池: 序言: Redis是我们Java开发中,使用频次非常高的一个nosql数据库,数据以key-value键…

云原生之使用Docker部署RSS阅读器Huntly

云原生之使用Docker部署RSS阅读器Huntly 一、Huntly介绍1.1 Huntly简介1.2 Huntly功能2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Huntly镜像五、部署Huntly5.1 创建挂载目录5.2 创建Hun…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更高的要求。 二、企业通过数字化转型,不仅有利于优化业务流程、提升经营管…

vue2.x 迭代更新项目去掉缓存处理

找到build文件下的webpack.prod.conf.js文件 定义一个常量version const Version new Date().getTime(); 然后在.js和.css前面加上.${Version}就可以了(注意得把原本的换成)

javaee之黑马乐优商城6

商品品牌的查询 上面就是我们需要根据分类id去找品牌 假设我们现在拿到的是 商品的分类id,我们需要根据分类id查询出对应的品牌即可 下面我们拿到上面的接口,直接撸代码 这个是和品牌相关联的操作,因为先去看一下BrandMapper,这个mapper是…

设计模式篇---桥接模式

文章目录 概念结构实例总结 概念 桥接模式:将抽象部分与它的实现部分解耦,使得两者都能够独立变化。 毛笔和蜡笔都属于画笔,假设需要有大、中、小三种型号的画笔,绘画出12种颜色,蜡笔需要3*1236支,毛笔需要…

电缆隧道在线监测系统:提升电力设施安全与效率的关键

随着城市化进程的加快,电力电缆隧道在保障城市电力供应方面的地位日益重要。然而,电缆隧道环境复杂,容易受到多种因素影响,如温度、湿度、烟雾、水位等,严重威胁电力设施的安全与稳定运行。在此背景下,电缆…

MySQL的时间差函数、日期转换计算函数

MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date) 时间差函数(TIMESTAMPDIFF、DATEDIFF) 需要用MySQL计算时间差,使用TIMESTAMPDIFF、DATEDIFF,记录一下实验结果 --0 …

基于微信小程序的电影院订票系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信小程序端的主要功能有:管理员的主要功能有:具体实现截图详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考论文参考源码获取 前言 💗博主介绍&…

openMVS编译

参考官方文档:https://github.com/cdcseacave/openMVS/wiki/Building vcglib的安装 cd /home/juling/lib git clone -b v1.0.1 https://github.com/cdcseacave/VCG.git vcglibgit clone --recurse-submodules https://github.com/cdcseacave/openMVS.git cd openMV…

外汇天眼:多平台涉嫌欺诈,各监管机构出手打击!

在当今快速发展的金融领域,随着外汇和加密货币市场的崛起,投资者们享受到了前所未有的多元化投资机会。然而,这个多元化的市场也引来了一些不法分子,威胁着投资者的资金和信任。就在上周,多个平台涉嫌欺诈,…

SQLAlchemy关联表删除策略设置

目录 SQLAlchemy关联表 常用的级联选项 外键 SQLAlchemy关联表 SQLAlchemy 是一个 Python 的 ORM(对象关系映射)库,它允许你在 Python 中使用类来表示数据库中的表,从而更方便地进行数据库操作。在 SQLAlchemy 中,可…

肖sir__mysql之综合题练习__013

数据库题(10*5) 下面是一个学生与课程的数据库,三个关系表为: 学生表S(Sid,SNAME,AGE,SEX) 成绩表SC(Sid,Cid,GRADE) 课程表C(Cid&…