什么版本以及如何在商业项目中使用免费的MySQL DBMS?

时间:2011-10-19 08:35:03

标签: mysql postgresql gpl community-server

目前,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个月不断增长十次。他们使用了PostgreSQL 8.3 + CentOS。此外,还使用了AUTOVACUUM。在转储数据库之后,销毁旧数据库,重新创建数据库并导入它们可以将其大小减小~10倍。现有帖子(herehere)表明,即使在最新的PostgreSQL 9版本中,此问题也是相对的。我不会称之为正常行为,在我们的案例中这种规模增长是不可接受的。

更新3:谢谢大家的答案。所有答案都是相对而有用的。

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

  

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

只要您与GPL许可的库链接,整个代码就会根据GPL许可。 Oracle仅为其他免费许可证提供exception

答案 2 :(得分:2)

  

3)我听到很多关于PostgreSQL错误的负面回复   非优化用于修改和存储大量数据。唯一的   之所以仍然在一些小型商业项目中使用是因为   免费。你对此有何看法?

ROFL

你一定是在开玩笑!纯粹的FUD,没有别的。

我们在PostgreSQL数据库中有几个TB数据,它仍然每月增长约200GB。没有错误,没有问题,只有很好的性能。此外,在500个并发用户,没有任何问题。检查邮件列表以计算错误并查看这些错误的解决速度。在几个小时内修复时不要感到惊讶。 MySQL可以从中学习。

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

答案 3 :(得分:1)

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

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

a)处理大型数据集

b)SQL标准

c)内联文档

d)数据库使用统计

事实上,我可以在一夜之间启动一个项目,而不会对SQL命令或文档的更改产生任何开销。

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

但到目前为止,使用PostgreSql 9.0进行开发绝对是一块蛋糕。

答案 4 :(得分:1)

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

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

在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已经过时了,def有一些问题。 8.4及以上版本具有更好的可用空间恢复能力,但仍然需要积极的autovac来承受高负荷。