该选择哪个开源数据库哪一个更好

该选择哪个开源数据库哪一个更好,第1张

如果打算为项目选择一款免费、开源数据,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?

在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的。你希望一开始就选择正确。两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。对这两个开源数据库的高层次概览将会有助于你选择最适合自己需要的。

MySQL

MySQL相对来说比较年轻,首度出现在1994年。它声称自己是最流行的开源数据库。MySQL就是LAMP(用于Web开发的软件包,包括Linux、Apache及Perl/PHP/Python)中的M。构建在LAMP栈之上的大多数应用都会使用MySQL,包括那些知名的应用,如WordPress、Drupal、Zend及phpBB等。

一开始,MySQL的设计目标是成为一个快速的Web服务器后端,使用快速的索引序列访问方法(ISAM),不支持ACID。经过早期快速的发展之后,MySQL开始支持更多的存储引擎,并通过InnoDB引擎实现了ACID。MySQL还支持其他存储引擎,提供了临时表的功能(使用MEMORY存储引擎),通过MyISAM引擎实现了高速读的数据库,此外还有其他的核心存储引擎与第三方引擎。

MySQL的文档非常丰富,有很多质量不错的免费参考手册、图书与在线文档,还有来自于Oracle和第三方厂商的培训与支持。

MySQL近几年经历了所有权的变更和一些颇具戏剧性的事件。它最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个版本:Standard、Enterprise、Classic、Cluster、Embedded与Community。其中有一些是免费下载的,另外一些则是收费的。其核心代码基于GPL许可,对于那些不想使用GPL许可的开发者与厂商来说还有商业许可可供使用。

现在,基于最初的MySQL代码还有更多的数据库可供选择,因为几个核心的MySQL开发者已经发布了MySQL分支。最初的MySQL创建者之一Michael "Monty" Widenius貌似后悔将MySQL卖给了Sun公司,于是又开发了他自己的MySQL分支MariaDB,它是免费的,基于GPL许可。知名的MySQL开发者Brian Aker所创建的分支Drizzle对其进行了大量的改写,特别针对多CPU、云、网络应用与高并发进行了优化。

PostgreSQL

PostgreSQL标榜自己是世界上最先进的开源数据库。PostgreSQL的一些粉丝说它能与Oracle相媲美,而且没有那么昂贵的价格和傲慢的客服。它拥有很长的历史,最初是1985年在加利福尼亚大学伯克利分校开发的,作为Ingres数据库的后继。

PostgreSQL是完全由社区驱动的开源项目,由全世界超过1000名贡献者所维护。它提供了单个完整功能的版本,而不像MySQL那样提供了多个不同的社区版、商业版与企业版。PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。

可靠性是PostgreSQL的最高优先级。它以坚如磐石的品质和良好的工程化而闻名,支持高事务、任务关键型应用。PostgreSQL的文档非常精良,提供了大量免费的在线手册,还针对旧版本提供了归档的参考手册。PostgreSQL的社区支持是非常棒的,还有来自于独立厂商的商业支持。

数据一致性与完整性也是PostgreSQL的高优先级特性。PostgreSQL是完全支持ACID特性的,它对于数据库访问提供了强大的安全性保证,充分利用了企业安全工具,如Kerberos与OpenSSL等。你可以定义自己的检查,根据自己的业务规则确保数据质量。在众多的管理特性中,point-in-time recovery(PITR)是非常棒的特性,这是个灵活的高可用特性,提供了诸如针对失败恢复创建热备份以及快照与恢复的能力。但这并不是PostgreSQL的全部,项目还提供了几个方法来管理PostgreSQL以实现高可用、负载均衡与复制等,这样你就可以使用适合自己特定需求的功能了。

在国产数据库技术发展的初级探索阶段,技术是关键,而在当下的快速发展阶段,生态就成为最重要的一环。

开源是形成初步版本、扩大开发者和用户群体、增强技术影响里的重要一环。开源是对生态的动态推进。

openGauss(2020年6月30日开源)在2019年9 月 19 日,在华为 CONNECT 大会上,华为宣布将开源其 GaussDB 数据库,开源后的产品被命名为 openGauss,这也是openGauss的“open”开头的由来。

2020年10月12日发布第一个正式公开版本——openGauss 101版本,2021年10月发布openGauss 210版本。一款开源关系型数据库管理系统,采用客户端/服务器,单进程多线程架构,支持单机和一主多备部署方式,备机可读,支持双机高可用和读扩展。采用木兰宽松许可证v2发行。2022年4月1号,30版本正式发布。openGauss内核源自PostgreSQL,深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。

另外:OceanBase(2021年6月1号开源)阿里和蚂蚁集团开源的数据库,是完全自研的分布式关系数据库

TiDB(2015年4月开源)PingCAP 公司自主设计、研发的开源分布式关系型数据库,一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品。

Sharding 策略

数据 Sharding 的策略与分区表的方式有很多类似的地方 有基于表 ID 范围 数据产生的时间或是SOA理念下的基于服务等众多方式 可选择 而与传统的表分区方式不同的是 Sharding 策略和业务结合的更为紧密 成功的 Sharding 必须对自己的业务足够熟悉 进行众多可行性分析的基础上进行 业务逻辑驱动

Sharding 实现案例分析 Digg 网站

作为风头正劲的 Web 网站之一的 Digg 虽然用户群庞大 但网站数据库数据并非海量 去年同期主数据大约只有 GB 的样子 现在应该更大一些 但应该不会出现数量级上增长 数据库软件采用 MySQL x Digg 的 IO 压力非常大 而且是读集中的应用( %的 IO 是读请求) 因为提供的是新闻类服务 这类数据有其自身特点 最近时间段的数据往往是读压力最大的部分

根据业务特点 Digg 根据时间范围对主要的业务数据做 Sharding 把不到 % 的 热 数据有效隔离开来 同时对这部分数据用以更好的硬件 提供更好的用户体验 而另外 % 的数据因用户很少访问 所以尽管访问速度稍慢一点 对用户来说 影响也很小 通过 Sharding Digg 达到了预期效果

现有的Sharding 软件简介

现在 Sharding 相关的软件实现其实不少 基于数据库层 DAO 层 不同语言下也都不乏案例 限于篇幅 作一下简要的介绍

MySQL Proxy + HSCALE

一套比较有潜力的方案 其中 MySQL Proxy (//fe mysql /wiki/MySQL_Proxy) 是用 Lua 脚本实现的 介于客户端与服务器端之间 扮演 Proxy 的角色 提供查询分析 失败接管 查询过滤 调整等功能 目前的 版本还做不到读 写分离 HSCALE 则是针对 MySQL Proxy 插件 也是用 Lua 实现的 对 Sharding 过程简化了许多 需要指出的是 MySQL Proxy 与 HSCALE 各自会带来一定的开销 但这个开销与集中式数据处理方式单条查询的开销还是要小的

Hibernate Shards

这是 Google 技术团队贡献的项目(// hibernate / ) 该项目是在对 Google 财务系统数据 Sharding 过程中诞生的 因为是在框架层实现的 所以有其独特的特性 标准的 Hibernate 编程模型 会用 Hibernate 就能搞定 技术成本较低 相对d性的 Sharding 策略以及支持虚拟 Shard 等

Spock Proxy

这也是在实际需求中产生的一个开源项目 Spock(// spock /)是一个人员查找的 Web 网站 通过对自己的单一 DB 进行有效 Sharding化 而产生了Spock Proxy(//spockproxy sourcefe net/ ) 项目 Spock Proxy 算得上 MySQL Proxy 的一个分支 提供基于范围的 Sharding 机制 Spock 是基于 Rails 的 所以Spock Proxy 也是基于 Rails 构建 关注 RoR 的朋友不应错过这个项目

HiveDB

上面介绍了 RoR 的实现 HiveDB (// hivedb /)则是基于Java 的实现 另外 稍有不同的是 这个项目背后有商业公司支持

PL/Proxy

前面几个都是针对 MySQL 的 Sharding 方案 PL/Proxy 则是针对 PostgreSQL 的 设计思想类似 Teradata 的 Hash 机制 数据存储对客户端是透明的 客户请求发送到 PL/Proxy 后 由这里分布式存储过程调用 统一分发 PL/Proxy 的设计初衷就是在这一层充当 数据总线 的职责 所以 当数据吞吐量支撑不住的时候 只需要增加更多的 PL/Proxy 服务器即可 大名鼎鼎的 Skype 用的就是 PL/Proxy 的解决方案

lishixinzhi/Article/program/SQL/201311/16327

以上就是关于该选择哪个开源数据库哪一个更好全部的内容,包括:该选择哪个开源数据库哪一个更好、如何看待 openGauss 坚持开源开放,打造面向数字基础设施的开源数据库的行为、开源数据库Sharding技术[2]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9528609.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存