数据库是现代IT的基础,无论是传统的本地数据库还是较新的云数据库,都可以支持各种应用程序。最初,专有技术主导着数据库市场,这些技术由单一供应商拥有和控制。目前此类产品仍然被广泛使用,但很多用户也开始部署开源数据库。
开源软件为用户企业提供源代码承诺,这些源代码为公开可用,通常在社区流程中开发。这样做的目的是扩大参与开发过程的人数,而不是将用户锁定在特定供应商的技术中。开源数据库的部署增加,部分原因是Linux和基于云的系统越来越受欢迎,这些系统通常依赖于开源操作系统。同时,NoSQL数据库的出现也推动着开源数据库,其中很多NoSQL数据库坚持或与开源模型保持一致。
什么是开源数据库?
开源数据库是在开源许可证下开发和发布的数据库。虽然开源有时被用作营销术语,但当涉及到软件许可证时,它有非常具体的定义。要成为开源技术,数据库需要使用Open Source Initiative(OSI)批准的许可证。OSI是决定许可证是否遵守开源定义(OSD)的管理机构,该定义是开源许可的指导文件。
然而,现在事情变得更加复杂。越来越多的供应商在创建开源数据库时,他们采用的许可证在很大程度上符合OSD原则,但未经OSI批准。最常见的是,这是因为他们需要(提供数据库即服务DBaaS)的云服务提供商在同一许可证下公开发布修改后的或相关的源代码。此类许可证通常被称为“源代码可用”许可证。尽管如此,这些许可证下的数据库通常仍然与完全开源的技术放在一起,作为专有、闭源数据库的替代品。
开源和源代码可用数据库的广泛类别包含各种类型的数据库软件。这包括基于SQL的关系数据库(这是使用最广泛的类型),以及四种主要的NoSQL技术:键值存储、文档数据库、宽列存储和图形数据库。还有特殊用途系统的开源版本,例如矢量数据库和时间序列数据库。此外,很多供应商现在提供多模型数据库,这些数据库支持多个数据模型。
使用开源数据库的潜在好处
开源数据库提供很多潜在的好处,其中一些也适用于源代码可用技术。以下是对用户企业的主要好处:
- 易于开始。开源方法的核心前提是该技术是免费可用的。因此,用户可以轻松尝试和部署开源数据库,而无需首先付费,尽管在很多情况下,供应商确实提供付费支持,以及具有附加功能的数据库的闭源版本。
- 社区支持和参与。开源或源代码可用代码通常有一个由参与用户和贡献者组成的社区,他们可以帮助新用户部署该技术。还允许参与代码开发过程。例如,用户可以提交错误报告和功能请求,并让自己成为贡献者。
- 可理解的源代码。当源代码是开放的并且任何人都可以查看时,就有更好的机会了解数据库的工作原理,以及如何有效地使用它来满足业务需求。
- 灵活性和定制化。通过一些开源许可证,开发人员可以自由修改数据库软件以满足特定的自定义要求。
- 提高安全性。由于源代码是开放的,开发人员、用户和安全研究人员可以对其进行全面审查以识别漏洞。当发现漏洞后,他们可以进行快速修补。
下面列出的技术是最流行的开源和源代码可用数据库。该列表由TechTarget编制,基于对数据库市场的研究报告,包括Gartner的供应商排名和DB-Engines网站的数据库管理系统(DBMS)人气排名。然而,该列表本身没有排名。其中包括5个关系型开源数据库、3个NoSQL数据库和4个源代码可用技术,并按此顺序排列。
下面介绍了每种技术的关键功能、潜在用例、许可和商业支持选项,以帮助企业选择适合其应用需求的开源数据库。
1. MySQL
MySQL是部署最广泛的开源数据库之一。它于1996年首次发布,由Michael “Monty” Widenius和其他两名开发人员独立开发,他们共同创立了MySQL AB来创建该数据库。该公司于2008年被Sun Microsystems收购,随后于2010年被甲骨文收购。从那时起,MySQL一直是甲骨文数据库产品组合的核心部分,同时作为开源软件进行维护。
MySQL是关系数据库,最初它被定位为在线事务处理(OLTP)系统。现在它仍然主要支持事务用途,尽管甲骨文的MySQL HeatWave云数据库服务现在也支持分析和机器学习应用程序。作为开源技术(Linux、Apache、MySQL和PHP、Perl或Python)的LAMP堆栈的基石,MySQL获得早期的部署,这些技术为第一代网络开发提供动力。MySQL仍然是很多网站上的基础数据库。
常见用例:与其他关系数据库一样,MySQL符合ACID属性(原子性、一致性、隔离性和持久性),以确保数据完整性和可靠性。正因为如此,它支持广泛的应用程序。例如,它通常用作Web应用程序服务器,并运行云应用程序和内容管理系统。
许可:MySQL有双重许可,包括GPL版本2开源许可证和Oracle许可证,适用于希望将数据库与商业应用程序一起分发的企业。
源代码存储库:https://github.com/mysql/mysql-server
商业支持选项:MySQL有很多商业部署。除了MySQL Heatwave外,Oracle还提供多种选项,包括企业版和标准版,以及嵌入式版本。MySQL也可以在云端使用,作为AWS的亚马逊关系数据库服务(RDS)以及谷歌的Cloud SQL和微软的Azure数据库服务的一部分。Aiven、PlanetScale和Percona等供应商也提供MySQL云服务。
2. MariaDB
MariaDB于2009年作为MySQL的分支首次亮相,该分支由Widenius领导的团队创建,Widenius于当年早些时候离开了Sun,因为他担心MySQL的方向和发展。MariaDB的工作开始于他还在Sun的时候,它最初被设计为MySQL的替代品。但直到这两个数据库的5.5版本发布,MariaDB才真正作为MySQL的替代品。此后,MySQL中没有的新功能被添加到MariaDB中,MariaDB在后续版本中使用了不同的编号。
然而,即使有版本更新,从MySQL迁移到MariaDB也相对容易。后者的数据文件通常是与MySQL兼容的二进制文件,数据库的客户端协议也兼容。在很多情况下,用户只需卸载MySQL并安装MariaDB即可。
MariaDB PLC通过MariaDB基金会领导该软件开发,他们维护着与MySQL不兼容和功能差异的列表。
常见用例:MariaDB通常用于与MySQL相同的目的,包括在网络应用程序和云应用程序中,都涉及事务处理和分析工作负载。
许可:免费的MariaDB服务器软件(被该公司称为MariaDB Community Server)是在GPLv2许可证下发布。
源代码存储库:https://github.com/MariaDB/server
商业支持选项:MariaDB PLC销售该数据库的MariaDB企业服务器版本,该版本也支持JSON数据和柱状存储。SkySQL提供完全托管的DBaaS部署,这是一家于2023年底从MariaDB PLC分离出来的公司。MariaDB也可以作为亚马逊RDS和Azure数据库的一部分使用,尽管微软计划在2025年9月停用其产品。
3. PostgreSQL
PostgreSQL源于1986年加州大学伯克利分校的Postgres项目。Postgres项目是由关系数据库先驱Michael Stonebraker(他当时是该大学的教授)领导,以作为Ingres的更高级替代品,Ingres是一个专有的RDBMS,Stonebraker在Ingres的开发中也发挥了主导作用。该软件于1995年成为开源,当时还添加了SQL语言解释器,并于1996年正式更名为PostgreSQL。然而,几十年后,开发人员、供应商和用户仍然可以互换使用PostgreSQL和Postgres来称呼该数据库。
PostgreSQL提供完整的RDBMS功能,包括ACID合规性、SQL查询以及支持过程语言查询,以在数据库中创建存储流程和触发器。与MySQL、MariaDB和很多其他数据库技术一样,它还支持多版本并发控制(MVCC),因此不同的用户可以同时读取和更新数据。此外,PostgreSQL支持标准关系表以外的其他类型的数据库对象,并在该开源项目的网站上被描述为对象关系数据库管理系统。
常见用例:PostgreSQL通常被定位为专有甲骨文数据库的开源替代品。它被广泛用于支持企业应用程序,这些应用程序需要复杂事务和高水平并发性,有时还用于数据仓库。
许可:该软件在OSI批准的PostgreSQL许可证下提供。
源代码存储库:https://git.postgresql.org/gitweb/?p=postgresql.git;a=summary
商业支持选项:PostgreSQL有广泛的商业支持和云产品。EDB(此前被称为EnterpriseDB)专门提供PostgreSQL,并在云端提供自我管理和DBaaS版本。AWS、Google、Microsoft和Oracle以及Aiven、Percona和NetApp的Instaclustr子公司等供应商也提供托管PostgreSQL云服务。
4. Firebird
Firebird开源关系数据库的技术根源可以追溯到20世纪80年代初,当时创建了专有InterBase数据库。在InterBase被多个供应商收购后,商业产品开发结束,最终版本于2000年以开源许可证提供。一周内,Firebird项目成立,以继续开发该技术的分支。
Firebird支持符合ACID的事务、外部用户定义功能和各种标准SQL功能,它包含一个多代架构(提供MVCC功能)。该软件相对较小,可用于嵌入式单用户版本,但它也可用于与数百名并发用户一起运行多兆字节数据库。它不应该与Firestore和Firebase Realtime Database混淆,这是由谷歌开发的两个商业NoSQL数据库。
常见用例:Firebird可以处理操作和分析应用程序。它用于各种类型的企业应用程序,包括ERP和CRM系统。
许可:Firebird在InterBase Public License(IPL)和Initial Developer’s Public License(IDPL)下提供。两者都是Mozilla公共许可证版本1.1的变体,该版本已获得OSI批准,但现在被2.0版本取代。IPL涵盖了原始的InterBase源代码,而IDPL适用于添加或改进的代码—作为Firebird项目的一部分而开发。
源代码存储库:https://github.com/FirebirdSQL/firebird
商业支持选项:Firebird是一个独立的开源项目,不由特定供应商驱动,该软件可以免费使用,包括用于商业目的。Firebird网站列出了六家公司,他们提供商业支持、咨询和培训服务。在Windows Server 2019上运行的Firebird云服务可在AWS、Azure和Google云中购买,尽管支持将于2024年8月在Google Cloud上结束。
5. SQLite
SQLite是一个在应用程序内运行的轻量级嵌入式RDBMS。它由计算机分析师和程序员D. Richard Hipp于2000年创建,当时他作为政府承包商支持美国海军项目,该项目需要可在资源最少的环境中且在没有数据库管理员(DBA)的情况下运行的数据库。现在Hipp继续领导该软件的开发,他作为Hipp, Wyrick & Company Inc.公司的项目架构师领导软件,该公司是一家软件工程公司,通常简称为Hwaci。
作为一个嵌入式数据库,SQLite是自给自足的,这意味着它在它所支持的应用程序中功能齐全。该软件是一个库,它嵌入支持ACID事务的全功能SQL数据库引擎。其中没有单独的数据库服务器进程。数据读取和写入直接发生在普通磁盘文件,包括表、索引、触发器和视图的完整SQLite数据库可以包含在单个文件中。
常见用例:SQLite通常用于移动应用程序、网络浏览器和物联网设备中,因为它体量小,并且能够在没有单独的服务器进程的情况下运行。
许可:SQLite源代码在公共域中,无需许可证即可出于任何目的自由使用、修改和分发。同时,Hwaci还向企业出售所有权,例如出于法律原因想要永久使用权许可证的企业。
源代码存储库:https://sqlite.org/src/doc/trunk/README.md
商业支持选项:Hwaci提供付费技术支持、维护和测试服务,并提供一组SQLite的专有扩展,这些扩展在单独的许可证下出售。与Firebird一样,SQLite数据库服务在AWS、Azure和Google Cloud上可用,在这种情况下,都在Ubuntu Server 20.04上运行。
6. Apache Cassandra
Cassandra宽列存储可以追溯到2007年,当时由Facebook开发,以支持新收件箱搜索功能-当时Facebook正在将该功能添加到该社交网络中。NoSQL数据库于2008年开源,并于2009年成为Apache软件基金会的一部分,它最初是孵化器项目,然后在第二年被提升为顶级项目状态。
Cassandra是一个容错分布式数据库,可用于在集群(包含很多商品服务器)中存储和管理大量数据。该软件在多个服务器节点上复制数据,以避免单点故障,并且可以根据处理需求向集群添加更多服务器来动态扩展。Cassandra目前提供最终一致性,由于临时数据不一致,这可能会限制其事务用途,但Apache项目正在努力增加对ACID事务的支持。
常见用例:Cassandra专门用于需要快速性能、可扩展性和高可用性的用途。它可部署用于各种应用程序,包括库存管理、电子商务、社交媒体分析、消息系统和电信等。
许可:Cassandra软件在Apache许可证2.0下提供。
源代码存储库:https://github.com/apache/cassandra/tree/trunk
商业支持选项:多家供应商为该数据库的Cassandra和DBaaS版本提供商业支持,包括DataStax、Aiven和Instaclustr。Amazon Keyspaces和Azure Managed Instance (适用于Apache Cassandra)也分别作为AWS和微软的数据库服务提供。
7. Apache CouchDB
CouchDB是一个NoSQL文档数据库,由软件工程师Damien Katz于2005年首次发布,并于2008年成为Apache项目。其中Couch是“不可靠的商品硬件集群”的首字母缩写,这源于该项目的最初目标:创建一个可以在普通硬件上高效运行的可靠数据库系统。CouchDB可以部署在服务器节点上,也可以作为跨集群中
多个节点的单个逻辑系统部署,该集群可以通过添加更多服务器根据需要进行扩展。
该数据库使用JSON文档来存储数据,并将JavaScript作为其查询语言。其他关键功能包括支持单个文档中的MVCC和ACID属性,尽管最终一致性模型用于存储在多个数据库服务器上的数据,这种权衡将可用性和性能置于绝对数据一致性之上。数据通过增量复制功能在服务器之间同步,该功能可以设置为双向任务,并用于支持移动应用程序和其他离线优先应用程序。
常见用例:CouchDB用于各种目的,包括数据分析、时间序列数据存储和需要离线存储和功能的移动应用程序。
许可:CouchDB在Apache许可证2.0下提供。
源代码存储库:https://github.com/apache/couchdb
商业支持选项:IBM Cloudant云数据库基于CouchDB,并添加了开源技术,支持全文搜索和地理空间索引。其他几家公司也支持CouchDB,包括AWS、Azure和Google云中的封装实例。
8. Neo4j
Neo4j是一个NoSQL图形数据库,非常适合表示和查询高度连接的数据集。Neo4j使用由节点和关系组成的属性图数据库模型,其中节点代表单个数据实体,而关系(也称为边缘)则定义了不同节点的组织和连接方式。节点和关系也可以包括属性或特性,以键值对的形式,以进一步描述它们。
Neo4j最早于2007年作为开源软件发布,由数据库供应商Neo4j Inc.监管。它最初只是一个基于Java的图形数据库,但随后它已经扩展了额外的功能,包括矢量搜索和数据存储。它的主要功能包括完全的ACID合规性、水平可扩展性—通过Autonomous Clustering 架构和Cypher查询语言。Neo4j Inc.计划将Cypher与GQL融合,GQL是国际标准化组织于2024年4月发布的标准图形查询语言,它使用基于SQL和Cypher的语法。
常见用例:Neo4j的典型用途包括社交网络、推荐引擎、网络和IT运营、欺诈检测和供应链管理,现在还通过矢量搜索功能支持生成AI应用程序。
许可:Neo4j社区版在GPL版本3下获得许可。名为openCypher的开源版本也可以在Apache许可证2.0下获得。
源代码存储库:https://github.com/neo4j/neo4j
商业支持选项:Neo4j Inc.提供多种受支持的商业产品,包括已添加闭源组件的Neo4j企业版和基于订阅的Neo4j Aura云数据库服务。
9. Couchbase服务器
Couchbase Server是一个NoSQL文档数据库,具有多模型功能,可将数据存储在JSON文档中,以及作为键值对存储。该技术是2011年两家开源数据库公司合并的结果:CouchOne—由CouchDB创建者Damien Katz创立,主要提供基于该数据库的系统,以及Membase—由memcached分布式缓存技术的开发人员为构建键值存储而建立。合并后的公司成为Couchbase,引领着Couchbase Server的开发。
尽管它们名称相似,并且根源也相似,但Couchbase Server和CouchDB并不直接相关或兼容,它们是不同的数据库技术,分别有自己的代码和API。Couchbase Server支持强大的一致性、分布式ACID事务和SQL++(一种用于JSON数据查询的类似SQL的语言)。它还包括矢量和全文搜索功能,以及多维缩放功能,可根据工作负载需求隔离和单独扩展不同的数据库功能。
常见用例:Couchbase Server通常用于支持分布式应用程序工作负载以及移动、边缘和物联网应用程序。
许可:最初在Apache License 2.0下提供,Couchbase Server于2021年切换到Business Source License (BSL) 1.1,这是一个源代码可用许可证,限制其他供应商对该软件的商业使用。数据库版本在推出四年后转换回Apache开源许可证。
源代码存储库:https://github.com/couchbase/manifest
商业支持选项:Couchbase提供企业版Couchbase Server,可用于云端和本地部署,以及该数据库的移动版本和名为Couchbase Capella的完全托管DBaaS技术。
10. MongoDB
MongoDB是另一个NoSQL文档数据库,最初是作为开源软件而开发,现在是源代码可用技术。MongoDB于2009年首次发布,它以名为BSON的类似JSON的文档格式存储数据,BSON是Binary JSON的缩写。顾名思义,BSON在二进制结构中对数据进行编码,该结构旨在支持比JSON更多的数据类型以及更快的索引和查询性能。
对于希望在没有固定模式约束的情况下构建应用程序的开发人员来说,该数据库通常被视为有吸引力的选择。除了其文档数据模型外,MongoDB还包括对图形、地理空间和时间序列数据的原生支持。MongoDB Atlas是由主要开发公司MongoDB Inc.提供的云数据库服务,它还提供矢量和全文搜索功能,可以免费用于本地环境中的开发和测试。MongoDB的其他关键功能包括多文档ACID事务、水平可扩展性的分片和自动负载平衡。
常见用例:MongoDB被广泛用于人工智能、边缘计算、物联网、移动、支付和游戏应用程序,以及网站个性化、内容管理和产品目录。
许可:自2018年以来,新版本的MongoDB Community Server 和以前版本的补丁已在 Server Side Public License (SSPL)版本1下提供,这是由MongoDB Inc.创建的源代码可用许可证。
源代码存储库:https://github.com/mongodb/mongo
商业支持选项:除了MongoDB Atlas外,MongoDB Inc.还提供自我管理的MongoDB企业服务器,该服务器还提供社区版本之外的额外功能。MongoDB支持和托管服务也可以从Datavail和Percona等供应商那里获得。Amazon DocumentDB(具有MongoDB兼容性)是AWS的完全托管DBaaS产品,支持MongoDB的4.0和5.0版本,但不支持较新的6.0和7.0版本。
11. Redis
Redis是一个NoSQL内存数据库,于2024年3月转换成源代码可用技术。Redis项目由软件程序员Salvatore Sanfilippo(绰号为antirez)于2009年创建,旨在通过实时网站日志分析工具帮助解决数据库扩展问题。Redis是远程字典服务器的首字母缩写,最初它被定位为软件,该软件提供键值数据存储作为缓存技术,以加速现有数据库和应用程序工作负载。
该数据库缓存功能仍然是Redis的基础,其功能包括内置复制、磁盘数据持久性和对复杂数据类型的支持。但该平台已扩展到包括其他功能,例如支持存储JSON文档以及矢量和时间序列数据。还增加了图形数据库模块,但主要开发商Redis Inc.已于2023年停止开发它。
常见用例:虽然Redis可以用作完整的数据库,但其最常见的用途之一仍然是作为数据库查询缓存层。它还经常用于通过集成的pub/sub功能支持实时通知,并作为会话存储,以帮助管理Web和移动应用程序的用户会话。
许可:截至2024年3月,Redis核心软件通过Redis Source Available License 2.0和SSPL v1获得双重许可。自2022年以来,这些许可证涵盖了添加的数据库模块和Redis Stack捆绑包。
源代码存储库:https://github.com/redis/redis
商业支持选项:Redis Inc.在商业许可证下提供闭源Redis Enterprise产品,以及完全托管的Redis Cloud服务。微软的Azure Cache for Redis是一项托管服务,包括核心Redis软件和Redis Enterprise作为选项。Aiven和Instaclustr也提供Redis托管服务。此外,AWS、谷歌和甲骨文提供与Redis兼容的云服务。
12. Cockroach DB
CockroachDB是一个源代码可用分布式SQL数据库,部分受到谷歌专有 Spanner数据库的启发。CockroachDB主要由供应商Cockroach Labs开发,于2015年首次发布,两年后出现了初始生产版本。就像蟑螂一样,CockroachDB的核心设计目标是难以杀死。该云原生数据库被设计为容错、弹性和一致的数据管理平台。
据其开发人员称,CockroachDB可以水平扩展,可以在各种类型的设备故障中存活下来,且对用户的干扰最小,还不需要数据库管理员手动干预。主要功能包括自动修复和恢复、支持具有强大一致性的ACID事务、SQL API和数据地理分区,以提高应用程序性能。它还具有“多活动可用性”模型,允许用户在没有冲突的情况下从任何集群节点读取和写入数据。
常见用例:CockroachDB非常适合跨多个数据中心和地理区域的大批量OLTP应用程序和分布式数据库部署。
许可:自2019年以来,CockroachDB的大部分核心功能都是通过BSL版本许可提供,如果其他供应商想提供商业数据库服务,他们需要从Cockroach Labs购买许可证。其他核心功能包含在 Cockroach Community License(CCL)中,该许可证允许查看和修改源代码,但未经与Cockroach实验室达成协议,不得重复使用。根据BPL许可的功能转换为Apache License 2.0,并在新数据库发布三年后成为开源,这一变更不适用于CCL版本。
源代码库:https://github.com/cockroachdb/cockroach
商业支持选项: Cockroach实验室提供技术支持和其他付费企业功能,这些功能在自我管理和DBaaS部署中都可用。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
![TechTarget微信公众号二维码](/wp-content/uploads/res/images/spriteimg/ttweixin.jpg)
TechTarget
官方微博
![TechTarget中国官方微博二维码](/wp-content/uploads/res/images/spriteimg/ttweibo.jpg)
TechTarget中国
翻译
相关推荐
-
如何使用数据治理成熟度模型
如果没有强大的数据治理,数据就无法产生有价值的见解以及改善决策。数据治理成熟度模型可帮助企业评估当前的成就水平 […]
-
Databricks推出生成式AI工具,包括AI助理
在2023年7月,Databricks公司首次公布开发生成式AI助理的计划,现在他们已经正式推出这个新功能。 […]
-
图形数据库与关系数据库:主要区别
关系数据库在各行各业广泛使用,而图形数据库提供不同的功能,可更好地满足企业需求。 图形数据库是四种流行的NoS […]
-
在混合云中管理数据库:10个关键考虑因素
在帮助企业安全迁移到云端方面,混合云架构发挥着至关重要的作用,混合云架构还可为必须留在本地的数据提供方法,以确 […]