常用MySQL,PostgreSQL, CUBRID和MongoDB开源数据库利弊对比

“数据库”可以简单地只是内存中的哈希表/磁盘上的日志,也可以复杂到由多种数据系统集成而来。关系型数据库只是数据系统的冰山一角(或者说冰山之巅),实际上存在着各种各样的数据系统组件:

数据库:存储数据,以便自己或其他应用程序之后能再次找到(PostgreSQL,MySQL,Oracle)

缓存:记住开销昂贵操作的结果,加快读取速度(Redis,Memcached)

搜索索引:允许用户按关键字搜索数据,或以各种方式对数据进行过滤(ElasticSearch)

流处理:向其他进程发送消息,进行异步处理(Kafka,Flink,Storm)

批处理:定期处理累积的大批量数据(Hadoop)

下面我就着重介绍下7个绝妙的免费数据库软件和开源的DBM解决方案,帮助你更好的了解数据库!

CUBRID

CUBRID 是一个很好的免费开源选择,专门针对 Web 应用程序进行优化,当复杂的 Web 服务需要处理大量数据并生成巨大的并发请求时,CUBRID 非常有用。该解决方案是用 C 写的。

优点:

多粒度锁定

在线备份

用于开发语言的 GUI 工具和驱动程序:

JDBC, PHP, Python, Perl, 和 Ruby.

自动故障切换功能,全天候在线网络服务

支持本机 DB 分片,实现水平/垂直可扩展性

大型系统通过多个数据库实例划分数据

数据库复制和事务一致性

缺点:

不适用于苹果系统

没有脚本调试器

手册仅限英文或韩文

他们论坛上的讨论往往是过时的(大部分来自几年前)

Firebird

该关系型数据库自1981年以来一直(以各种名称)用于生产系统,并具有许多ANSI SQL标准功能。 Firebird能够在Linux,Windows和各种Unix平台上运行。

优点:

Trace API 用于实时监控

Windows 信任的身份验证

四个支持的架构:

SuperClassic, Classic, SuperServer, 和 Embedded

多种开发工具:

商业工具:FIBPlus 和 IBObjects

自动扫描选项用于清理数据库

数据库触发器和存储过程的事件通知

Firebird 的大型全球社区提供免费支持

缺点:

不包括集成复制支持(仅作为附件)

缺少临时表格和与其他数据库系统的集成

与其他操作系统解决方案相比,缺乏 Windows 信任认证

MariaDB

MariaDB 由 MySQL 的原创人员开发,并被维基百科,Facebook 甚至 Google 等技术巨头使用。 MariaDB 是一种可为 MySQL 提供插件替换功能的数据库服务器。开发人员的首要关注点是安全性,在每个版本发布时,开发人员还会合并所有 MySQL 的安全修补程序,并在需要时对其进行增强。

优点:

高可扩展性,易于集成

能够实时访问

具备 MySQL 的核心功能(MariaDB 是 MySQL 的替代方案)

备用存储引擎,服务器优化和补丁

MariaDB 已经运作了20多年的广泛知识库

缺点:

缺少密码复杂性插件

没有 memcached 界面

没有优化器跟踪

MongoDB

MongoDB 创立于2007年,被称为“数据库巨头”。 由 DoubleClick, ShopWiki 和 Gilt Groupe 背后的开发人员开发,并由 Fidelity Investments, Goldman Sachs Group,Inc.,Intel Capital 这些机构投资。自成立以来,MongoDB 已经被下载了 2 亿次,并且有超过 1000 个合作伙伴支持。这些合作伙伴致力于这个免费的开源解决方案,他们相信编码与数据库应该是简单而自然的。

优点:

文件验证

加密存储引擎

常用用例:

移动应用

产品目录

内容管理

具有内存存储引擎(beta)的实时应用程序

减少主要故障恢复的时间

缺点:

不适合需要处理复杂事务的应用程序

不是传统应用程序的替代品

年轻的解决方案:软件更新快

MySQL

MySQL 诞生于 1995 年前后,现在归 Oracle 拥有。它是开源的,但也有几个付费版本提供其他功能,如异地备份和自动缩放。因为MySQL是一个行业标准,所以它兼容每个操作系统,并由 C 和 C++ 编写。该解决方案对于国际用户来说是一个很好的选择,因为服务器可以用多种语言向客户端发送错误消息,而且支持多种不同的字符集。

优点:

基于主机的验证

即使没有网络也可用

灵活的权限和密码系统

所有密码的安全加密

可以嵌入到独立应用程序中的库

提供服务器作为客户端/服务器联网环境的独立程序

缺点:

被 Oracle 收购:

用户觉得 MySQL 不再属于免费和开源

不再是社区驱动

会员无法修复 bug 和补丁

由于更新缓慢而落后于其他数据库

PostgreSQL

PostgreSQL 拥有超过 15 年的积累,是另一个明星级开源选择,运行于所有主要的操作系统,包括Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和 Windows。 PostgreSQL 还完全符合 ACID 要素(原子性,一致性,隔离性,持久性)。

优点:

创建自定义数据类型和查询方法

框架允许定义和创建自定义数据类型

以十几种编程语言运行存储过程:

Java,Perl,Python,Ruby,Tcl,C / C ++及其自己的PL / pgSQL

GiST(广义搜索树)系统

B 树,B+树,R 树,部分和树,以及排名的 B+ 树

提供不同的排序和搜索算法:

创建扩展如 CitusDB 更多的并行性,而不修改 Postgres 代码

缺点:

MVCC系统需要定期的“清理(vacuuming)”

高交易率环境中的问题

由强大的社区发展起来的

改进需要更大的努力

SQLite

SQLite 自称是世界上部署最广泛的数据库,2000年开始使用,已被诸如苹果,Facebook,微软和谷歌等知名公司使用。 每个版本均经过仔细测试来以确保可靠性。即使有错误,SQLite 的开发人员也会通过诚实地提供每个版本的错误列表和代码更改时间来告知其潜在的缺点。

优点:

没有单独的服务器进程

文件格式是跨平台的

紧凑型库:运行速度比更大内存的还要快

符合 ACID 原则

还可提供专业支持

缺点:

不推荐用于:

客户端/服务器应用程序

大容量网站

大数据集

高并发性

总结:

选择适合的数据库之前,你需要问自己一些问题:

你是否分别基于这些数据库对你的产品性能做过测试?哪一个表现更好,为什么?

你是否打算使用其中一个数据库专门提供的功能?

你是否打算使用其中一个数据库专门提供的数据库引擎?

你的操作系统是否默认支持你所选的数据库?要部署它需不需要很多工作量?

你是否计划将来从一种数据库类型迁移到另一种数据库类型?如果是这样,你是否考虑过兼容性和复制方面的问题?

如果你能回答好这些问题,可能就很清楚哪个数据库更适合你。

转载请注明出处:https://www.onexin.net/mysql-postgresql-cubrid-mongodb/

相关文章:

1、创建 PDO 实例请求连接SQL数据库
https://www.onexin.net/pdo-database/

2、CentOS 8.2 服务器上yum安装Apache+Php+MariaDB+MongoDB
https://www.onexin.net/centos-8-2-yum-apache-php-mariadb-mongodb/

3、PDO数据抽象简介及MySQL,PostgreSQL,ODBC,Oracle应用
https://www.onexin.net/pdo-data-abstraction-introduction-and-mysql-postgresql-odbc-oracle-applications/

4、PHP 8.0:PostgreSQL:不推荐使用几个别名函数
https://www.onexin.net/php-8-postgresql/

5、玩转MySQL 8.0源码编译compile
https://www.onexin.net/mysql-8-compile/

Leave a Reply