目前,MySQL社区版服务器5.5.16在通用公共许可协议下。这意味着它也可以在开源项目中使用。我们的项目预算非常紧张,我们需要找到一个解决方案,在商业项目中使用MySQL免费版。我有几个问题:
1)哪一个较早的MySQL版本足够可靠和无bug,可以在商业项目中使用?
2)关于使用当前的MySQL社区版服务器5.5.16和GPL:如果一个项目软件架构的设计支持插入许多DBMS,那么在非GPL许可下拥有一个项目软件是合法的吗?我的意思是,假设软件设计具有多个DBMS支持,并且软件处于商业许可下。如果客户选择使用MySQL通用公共许可证版本,他是否违反了GPL许可证?
3)我听到了一些负面的回复,说PostgreSQL存在错误,并且没有针对修改和存储大型数据集进行优化。它仍然在一些小型商业项目中使用的唯一原因是它是免费的。你对此有何看法?
更新:另外,我们计划使用多个服务器,因此也需要主从复制。
UPDATE2:我听说过一个案例:使用了大约1 DB的PostgreSQL DB。通过修改几乎所有的数据,数据库在更新时被大量使用。问题是数据库每2.5个月就会持续增长10倍左右。他们使用了PostgreSQL 8.3 + CentOS。此外,还使用了AUTOVACUUM。在转储数据库、销毁旧数据库、重新创建数据库和导入数据库后,它们能够将其大小减小到原来的1/10。现有的帖子(here和here)表明,即使在最新的PostgreSQL 9版本中,这个问题也是相对的。我不认为这是一种正常的行为,在我们的情况下,这种大小的增长是不可接受的。
UPDATE3:感谢你们所有人的回答。对于这个问题,所有的答案都是相对的,都是有用的。
发布于 2011-10-20 17:01:23
其他发帖者提到,链接到mysql基本上意味着你已经获得了项目GPL或其他操作系统许可证的许可,Oracle / MySQL例外,或者这是商业性质的,你欠他们钱。不管怎样..。
好的,PostgreSQL将其数据存储在支持多版本并发控制的数据存储中。这意味着在一个简单的级别上,每个事务都会获得一个数据库快照,该快照从事务开始到提交或回滚都是一致的。这意味着在任何给定时间,单个元组在数据库中可以有多个活动版本。由于MVCC在pgsql中的实现方式,这两个版本同时存在于数据存储中。最终,除了最新的事务之外的所有事务都将比最旧的正在运行的事务更旧,并且可以由数据库恢复和重用。回收这些旧的已死元组的过程称为清理。
在8.3中,使用称为空闲空间映射的共享内存段来跟踪旧的死块。如果真空不够积极,或者如果您在空闲空间映射中耗尽了空间,那么数据库可能会以比恢复它们(真空)或记住它们(空闲空间映射)更快的速度生成死亡元组。
在8.4中,用户可以免费维护可用空间映射,因为它以.fsm文件的形式存储在硬盘上。然而,真空的问题仍然存在。autovacuum被调整为不太激进,以便在安装时不会杀死笔记本电脑或小型服务器等东西。在具有大量IO功能的大型计算机上,例如在RAID-10阵列中具有16个SSD的服务器上,您可以提高autovacuum的攻击性,并且它可以保持相当疯狂的tps速率。在具有足够强大的自动真空和具有大量磁盘的快速硬件RAID控制器的服务器上,您可以在很长一段时间内保持每秒1,000到3,000个事务。对于更昂贵和更大的服务器,TPS数量接近10,000是可能的。所有这些都是在服务于数百个连接的同时进行的。
tl;dr: 8.3是旧的,def有一些问题。8.4和更高版本有更好的空闲空间恢复,但仍然需要积极的autovac来跟上沉重的负载。
发布于 2011-10-19 16:39:37
3)我听到许多否定的回复,说PostgreSQL有缺陷,并且没有针对修改和存储大型数据集进行优化。它仍然在一些小型商业项目中使用的唯一原因是它是免费的。你对此有何看法?
这是FUD。PostgreSQL是一个功能齐全的、高性能的关系型数据库管理系统,用于多个大规模部署。
发布于 2011-10-19 16:44:11
2)关于使用当前的MySQL社区版服务器5.5.16和GPL:如果一个项目软件架构被设计成支持插入许多DBMS,那么在非GPL许可下拥有一个项目软件是合法的吗?我的意思是,假设软件设计具有多个DBMS支持,并且软件处于商业许可下。如果客户选择使用MySQL通用公共许可证版本,他是否违反了GPL许可证?
只要您链接到GPL许可的库,整个代码主体就会在GPL下获得许可。甲骨文只为其他免费许可证制作了一个exception。
https://stackoverflow.com/questions/7818582
复制相似问题