【数据库】了解开源数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 【数据库】了解开源数据库

开源数据库只是一个普通的数据库,它与源代码一起分布。

用户可以自由地阅读、修改和扩展软件,尽管很少有人利用这些机会。对许多人来说,最吸引人的功能可能是随时在任何硬件上运行它的权利。源代码是所有程序员都可以使用的公共资源。

并不是说定义开源数据库的架构、语言或特性集有什么不同。事实上,许多开源选项讲的是SQL的一个版本,就像它们的专有同类一样。

对于那些与专有软件供应商进行过重新许可谈判的经理来说,许可证一直都很有吸引力。如果源代码不被共享,那么他们要想应对价格的大幅上涨,唯一的选择就是转向另一个产品,这通常包括大量的重写。

但是没有免费的午餐。源代码的天赋可能会带来一些捕获,有些是显式的,有些是隐式的。有许多开源许可证。有些人对用户几乎没有任何限制,有些人坚持要求用户共享任何增强功能作为回报,基本上确保公共代码对所有人开放。

另一个没有明确说明但对用户来说显而易见的义务是,必须有人向开发人员付费。一些使用开放源代码数据库的公司雇佣人员为代码库做贡献。他们不是购买专有许可证,而是通过工资支付。选择这条道路的公司倾向于赞扬他们对代码库的控制。

许多开源数据库是在混合模式下发布的。有些人会创建两个不同的版本,其中更简单、更通用的代码可能会被称为“社区版”之类的东西,并发布以自由流通。开发人员可以免费下载这项技术并创建新的原型。


为支持开发的公司支付的费用通常由那些逐渐采用“商业版”的公司支付,后者通常提供与使用更大的数据集或提供更好的安全性相关的额外功能。它们通常是新开发人员不需要的特性,但对运行生产代码的组具有长期价值。

设置多个版本并确保每个版本都有正确的功能是一门艺术。在商业版中保留太多的特性,没有人会去尝试。在社区版本中留下太多,没有人会觉得需要升级和付费。

开源数据库分为许多类别,这些类别很大程度上取决于它们的开发时代。最早的工具,如MySQL或PostgreSQL,模仿了商业领袖。他们使用SQL,将数据存储在按索引排序并通过连接例程链接的关系表中。有时它们并没有提供相同的完整功能选择,但它们逐渐演变为支持相同样式的数据存储。

后来的NoSQL数据库,如MongoDB和Cassandra,以其灵活的模式和文档风格的键值对存储而闻名。这类特殊的数据库在很大程度上是作为开放源代码发展起来的。


一些最新的数据库,比如支持分类帐或地理数据的数据库,通常是与不断发展的产品对的混合。一个是免费提供的全功能社区版。另一个通常被称为“企业版”,因为它包含支持可能需要更高稳定性和可靠性的更大数据集的功能。这些额外的功能通常只提供一个价格。

主要供应商是如何接受开源的

甲骨文在2009年收购Sun Microsystems的过程中收购了MySQL,有效地认识到了开源模式的威力。他们继续开发和支持数据库。用户可以选择免费版(称为社区版),也可以选择更高级的版本,其中包括更大公司需要的额外功能。备份、额外的安全性和群集管理都是收费的。

Oracle还购买了BerkeleyDB,这是一组经常被编译成程序的键值数据库库。它们允许开发人员减轻维护数据结构的工作。


微软已经选择在其Azure云上托管一些主要的开源数据库。想要依赖PostgreSQL或MySQL的团队可以启动由Microsoft管理的实例,从而省去了配置和维护服务器的麻烦。硬件和馆藏的价格是捆绑在一起的。

其他的云也在遵循类似的路径。Amazon、Google、DigitalOcean、Rackspace和其他一些公司提供了租用完全配置的服务器以及运行主要开源数据库版本的选项。仅Amazon就提供了大多数主要开源数据库的托管版本。

这些托管实例的出现让一些开发人员感到恼火。云计算提供商发布的许多新产品都提供了安装和维护开源软件包的功能。这些不是虚无缥缈的任务,但工作可以自动化。这导致了这些工具的开发者和云公司之间的一些摩擦,而这些冲突远未得到解决。

新贵

许多新数据库都是从开源项目开始的。有几十家新公司在社区开源许可下发布了新的数据库。大多数公司还试图通过出售一些混合的支持和额外的专有功能来支持自己。

有些项目建立在以前的版本上。MariaDB是MySQL的一个分支,由MySQL的创始人之一montywidenius发起。他在把MySQL卖给甲骨文之后开始了这个新版本。早期版本是从最初的代码库开始的,但最新版本增加了一些特性,可以加快处理超大数据集的速度。SQL语法的许多基本特性和核心部分是相同的,因为它们有共同的传统,所以许多开发人员可以在它们之间自由切换。在未来,这种差异可能会扩大。例如,MariaDB增加了与Cassandra、TokuDB和SphinxSE等流行数据库的集成。

SequoiaDB是一个大型分布式数据库,支持SQL、键值文档存储和直接JSON存储。数据库将各种节点连接在一起,每个节点可能是不同的存储引擎,如MySQL或PostgreSQL。数据库将查询路由到适当的节点,同时确保事务可以提供ACID级别的并发性。核心是在AGPL下发布的,而一些连接器是由Apache许可证管理的。


虽然许多新的数据库都是开源的,但并不是所有的公司都接受这种模式。例如,fanus为其分布式数据库选择了一个商业许可证。企业友好型的特点是面向那些必须同时处理数据保留策略和快速扩展的管理者。新开发人员可能无法访问源代码,但他们可以使用托管服务的免费层,该层对每个月可以读取或写入的元素数量进行严格限制。

治理问题

软件的控制吸引了许多用户使用开源数据库。他们愿意为私有软件公司出售的产品及时支付工资,通常是为了避免因供应商锁定而带来的痛苦。开源许可证明确地让用户成为控制代码的完全合作伙伴。

然而,这种伙伴关系的性质和局限性仍然受到质疑。最近,一些数据库公司对一些云公司将硬件和维护捆绑在一起的方式进行了反抗。首先是MongoDB,最近是Elastic,质疑这个过程是否公平,部分原因是云计算公司没有直接与原始公司分享收入。云计算公司并没有违反开源许可证的规定,但一些公司认为他们保留了大部分的支付份额,这违反了开源许可证的精神。

找到解决办法并不简单。最近,Elastic的首席执行官Shay Banon宣布,他们正在将所有新的开发转移到一套更严格的许可证上,旨在阻止大型云提供商在不限制最终用户的情况下自由转售他们的工具。

巴农在2021年1月的公告中说:“我们已经尝试了所有可用的途径,包括通过法庭,但随着AWS的持续行为,我们决定改变我们的许可证,以便我们能够专注于建筑产品和创新,而不是诉讼。”

亚马逊对此做出回应,宣布将为Elastic“分叉”代码。也就是说,他们会公开使用最新的版本,并继续自己维护,同时在云中转售。

亚马逊的Carl Meadows、Jules Graybill、Kyle Davis和Mehul Shah在公告中写道:“今天,我们在Amazon ES上提供18个版本的Elasticsearch,这些版本都不受许可证更改的影响。”未来,亚马逊ES将由Elasticsearch和Kibana的新分支提供支持。我们将继续提供新功能、修复和增强功能。


将有两条路径可能沿着相同的方向发展,也可能不沿着相同的方向发展。核心特性可能会保持不变,但用户可能需要将自己与其中一个保持一致。他们的代码可以顺利地处理这两个问题,或者可能有问题。我们不知道开发团队会做出哪些决定。

像这样的叉子是在过去发展起来的。Oracle的MySQL版本仍然与MariaDB非常相似,似乎两家公司都认为保持紧密的兼容性很重要,至少在核心特性和语法上是如此。

另一家数据库公司MongoDB是采用限制性更强的许可证(服务器端公共许可证(SSPL))的先驱之一,该许可证限制了非其合作伙伴的云提供商。自2018年以来,该公司一直在此许可证下发布产品,平衡了公司和用户的需求。

“我们希望为开发人员提供一种方便的方式来访问我们的产品,以便他们能够以无摩擦的方式使用、修改和重新发布它。MongoDB首席执行官兼总裁DevIttycheria在接受采访时表示:“在SSPL下,这没有什么不同。”。

但他同时指出,公司在研发方面投入了7亿美元。”他解释说:“我们想对抗超规模云供应商的威胁,他们把我们的免费产品作为一种服务提供,而不给予任何回报。”我们将许可证更改为SSPL已经两年多了,这对用户采用和我们作为一家公司的成功都没有负面影响。”

换言之,该公司已经不遗余力地支持自由阅读、使用和修改代码的原始愿景,同时缩减了一类尚未与之形成成功商业伙伴关系的公司。正如开源软件运动的最初开发者之一richardstallman喜欢说的那样:开源是自由的,而不是啤酒

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
6天前
|
存储 容灾 关系型数据库
PolarDB开源数据库进阶课11 激活容灾(Standby)节点
本文介绍了如何激活PolarDB容灾(Standby)节点,实验环境依赖于Docker容器中用loop设备模拟共享存储。通过`pg_ctl promote`命令可以将Standby节点提升为主节点,使其能够接收读写请求。激活后,原Standby节点不能再成为PolarDB集群的Standby节点。建议删除对应的复制槽位以避免WAL文件堆积。相关操作和配置请参考系列文章及视频教程。
18 1
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课5 在线备份
本文介绍了如何在PolarDB RAC一写多读集群中进行在线备份,特别针对共享存储模式。通过使用`polar_basebackup`工具,可以将实例的本地数据和共享数据备份到本地盘中。实验环境依赖于Docker容器中用loop设备模拟的共享存储。
19 1
|
6天前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
19 0
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
28 0
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
18 0
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课13 单机版转换为集群版
本文介绍如何将“本地存储实例”转换为“共享存储实例”,依赖于先前搭建的实验环境。主要步骤包括:准备PFS二进制文件、格式化共享盘为pfs文件系统、启动pfsd服务、停库并拷贝数据到pfs内、修改配置文件,最后启动实例。通过这些操作,成功实现了从本地存储到共享存储的转换,并验证了新实例的功能。相关系列文章和视频链接提供了更多背景信息和技术细节。
16 0
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课7 实时流式归档
本文介绍了如何在PolarDB RAC一写多读集群中实现实时归档,确保WAL日志的及时备份。实验依赖于Docker容器和loop设备模拟的共享存储环境。通过配置主节点的`pg_hba.conf`、创建复制槽以及使用`pg_receivewal`工具,实现实时接收并归档WAL文件。此外,还提供了详细的命令行帮助和相关文档链接,方便读者参考和操作。注意:如果已搭建容灾节点,则无需重复进行实时归档。
10 0
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课2 创建容灾(standby)节点
本文介绍了如何在macOS中搭建PolarDB的容灾(standby)节点,作为“穷鬼玩PolarDB RAC一写多读集群”系列的一部分。基于前一篇通过Docker和loop设备模拟共享存储的经验,本文详细描述了创建虚拟磁盘、启动容器、配置网络、格式化磁盘、备份数据及配置standby节点的具体步骤。
14 0
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课12 集群版转换为单机版
本文介绍了如何将“共享存储实例”转换为“本地存储实例”,实验环境依赖于Docker容器中的loop设备模拟共享存储。具体步骤包括准备本地目录、停库、拷贝数据、修改配置文件并启动实例。通过这些操作,可以实现从共享存储到本地存储的平滑转换。相关系列文章详细记录了PolarDB RAC一写多读集群的搭建与管理,提供了丰富的实战经验。
14 2
|
6天前
|
关系型数据库 分布式数据库 PolarDB
PolarDB开源数据库进阶课1 搭建共享存储集群
在笔记本上构建PolarDB RAC环境,本文介绍了一种适用于Windows、macOS和Linux的方法:通过将宿主机上的文件模拟为块设备,并在多个Docker容器中使用loop设备共享该文件。此方法解决了macOS不支持直接挂载块设备的问题。
16 2

热门文章

最新文章