0

目前,MySQL 社区版服务器 5.5.16 处于 GPL 之下。这意味着它也可以在开源项目中使用。我们的项目预算非常紧张,我们需要找到解决方案在商业项目中使用 MySQL 免费版。我有几个问题:

1) 哪个早期的 MySQL 版本足够可靠且没有错误,可以在商业项目中使用?

2) 关于在 GPL 中使用当前 MySQL 社区版服务器 5.5.16:如果项目软件架构设计为支持插入许多 DBMS,那么在非 GPL 许可下拥有项目软件是否合法?我的意思是,假设该软件的设计具有多个 DBMS 支持,并且该软件已获得商业许可。如果客户选择使用 MySQL GPL 版本,他是否违反了 GPL 许可?

3) 我听到一些关于 PostgreSQL 存在缺陷且未针对修改和存储大型数据集进行优化的负面回复。它仍在一些小型商业项目中使用的唯一原因是因为它是免费的。你对此有何看法?

更新:另外,我们计划使用多台服务器,因此还需要主从复制。

UPDATE2:我听说过一个案例:使用了~1GB PostgreSQL DB。通过修改几乎所有数据,该数据库被大量用于更新。问题是数据库每 2.5 个月不断增长大约 10 倍。他们使用了 PostgreSQL 8.3 + CentOS。此外,还使用了 AUTOVACUUM。在转储数据库、销毁旧数据库、重新创建数据库并导入后,它们能够将其大小减小约 10 倍。现有帖子(此处此处)表明,即使在最新的 PostgreSQL 9 版本中,这个问题也是相对的。我不会称其为正常行为,在我们的案例中,这种规模增长是不可接受的。

UPDATE3:谢谢大家的回答。所有答案都是相对的,对问题有用。

4

5 回答 5

2

3) 我听到很多关于 PostgreSQL 存在缺陷且未针对修改和存储大型数据集进行优化的负面回复。它仍在一些小型商业项目中使用的唯一原因是因为它是免费的。你对此有何看法?

这是 FUD。PostgreSQL 是一个功能齐全的高性能 RDBMS,用于多个大规模部署。

于 2011-10-19T08:39:37.443 回答
2

2) 关于在 GPL 中使用当前 MySQL 社区版服务器 5.5.16:如果项目软件架构设计为支持插入许多 DBMS,那么在非 GPL 许可下拥有项目软件是否合法?我的意思是,假设该软件的设计具有多个 DBMS 支持,并且该软件已获得商业许可。如果客户选择使用 MySQL GPL 版本,他是否违反了 GPL 许可?

一旦你链接到一个 GPL 许可的库,整个代码体就会在 GPL 下获得许可。Oracle仅对其他免费许可证例外。

于 2011-10-19T08:44:11.090 回答
2

3) 我听到很多关于 PostgreSQL 存在缺陷且未针对修改和存储大型数据集进行优化的负面回复。它仍在一些小型商业项目中使用的唯一原因是因为它是免费的。你对此有何看法?

ROFL

你一定是在开玩笑!纯 FUD,仅此而已。

我们在 PostgreSQL 数据库中有几 TB 的数据,而且它每月仍在增长约 200GB。没有错误,没有问题,只有出色的性能。同样在 500 个并发用户时,完全没有问题。检查邮件列表以计算错误并查看解决这些错误的速度。如果在数小时内修复,请不要感到惊讶。MySQL 可以从中学习。

http://archives.postgresql.org/pgsql-bugs/

于 2011-10-19T09:14:27.567 回答
1

我有同样的问题。早些时候,我在商业项目中使用了 mysql。但在 oracle 接管并更改许可政策后,我寻找其他选项,包括 SQL-Express、DB2-Express、SQL-lite、PostgreSql

我不会进行比较,因为周围有很多信息。但是 PostgreSql 是迄今为止最好的

a) 处理大型数据集

b) SQL 标准

c) 内联文档

d) 数据库使用统计

事实上,我可以在一夜之间开始一个项目,而无需任何有关更改 SQL 命令或文档的开销。

但是,由于我在 Windows 上使用 dotnet,Npgsql 是唯一让我们害怕的受信任连接器。

但到目前为止,使用 PostgreSql 9.0 开发绝对是小菜一碟。

于 2011-10-19T10:22:17.670 回答
1

其他海报提到,基本上链接到 mysql 意味着您已经获得了项目 GPL 或其他一些操作系统许可 Oracle / MySQL 例外,或者它是商业的,你欠他们钱。反正...

OK,PostgreSQL 将其数据存储在支持 MVCC、多版本并发控制的数据存储中。这意味着在一个简单的级别上,每个事务都会获得数据库的快照,该快照从事务开始到提交或回滚是一致的。这意味着在任何给定时间,单个元组可以在数据库中拥有多个实时版本。由于在 pgsql 中实现 MVCC 的方式,这两个版本同时存在于数据存储中。最终,除了最新的事务之外,所有事务都将比最旧的运行事务更旧,并且可以由数据库恢复和重用。回收这些旧死元组的过程称为清理。

在 8.3 中,旧的死块通过称为空闲空间映射的共享内存段进行跟踪。如果真空不够积极,或者如果可用空间映射中的空间用完,那么数据库可以使死元组比恢复它们(真空)或记住它们(可用空间映射)更快。

在 8.4 中,可用空间映射对用户来说无需维护,因为它以 .fsm 文件存储在硬盘驱动器上。但是真空的问题仍然存在。autovacuum 被调整为不太激进,以免在安装时杀死笔记本电脑或小型服务器之类的东西。在具有大量 IO 功能的大型机器上,例如在 RAID-10 阵列中具有 16 个 SSD 的服务器,您可以提高 autovacuum 的积极性,它可以跟上一些非常疯狂的 tps 速率。在具有足够积极的自动清空功能和具有大量磁盘的快速硬件 RAID 控制器的服务器上,您可以长时间持续每秒处理 1,000 到 3,000 个事务。使用更昂贵和更大的服务器可以实现接近 10,000 的 TPS 数量。同时为 100 个连接提供服务。

tl;dr: 8.3 is old, and def had some issues. 8.4 and up have better free space recovery but still need aggressive autovac to keep up with a heavy load.

于 2011-10-20T09:01:22.617 回答