我正处于为公司规划和设计定制会计应用程序的早期阶段.我的目标是为数据存储部分使用开源关系数据库,我知道有两个广泛支持的可靠数据库:MySQL和PostgreSQL.
对于需要事务,存储过程,函数和安全性的系统,是否有任何关于这两个数据库中哪一个最适合会计应用程序的意见,或者是否存在我缺少的另一个数据库?
我对MySQL和MS SQLServer 2005比较熟悉,但由于许可成本的原因,我试图摆脱后者.
让我补充一点:这不是像Quickbooks或Peachtree那样的会计需求.这基本上是一个处理我们提供的特定业务服务的会计的系统.可能有两到三个系统满足这种需求,在任何定制之前定价在六位数范围内,并且需要我的小公司长期与供应商结婚.因此,我们正在内部构建应用程序.
此外,虽然我很欣赏买入与建造的观点,但我想摆脱那个特定的宗教问题,因为购买道路已经被采取,供应商失败了.有时您只需要自己完成工作,这个特定的项目和预算需要保证.
感谢大家到目前为止的回复.
有四种主要的开源关系数据库管理系统可能适合这种应用程序:Postgresql,MySQL,Firebird和Ingres.还有其他系统,例如SQLite,但它们没有这种类型的体系结构,并且并非真正针对此类工作负载而设计.这种类型的一些其他开源数据库管理系统确实存在,但由于某些原因似乎不太可行,例如缺乏明显的供应商承诺.具有此类问题的系统的示例是SAP-DB.
Postgresql具有任何开源数据库的最佳功能集,并支持XA事务,如果您的应用程序是三层系统并且支持非平凡复杂性的事务,您可能需要它.特别是如果要进行跨多个数据库调用的事务,则需要这样做.
多年来已经构建了几种PostgreSQL的商业变体,例如Illustra, Greenplum和EnterpriseDB. Illustra是PostgreSQL的商业版本,随后被Informix收购.Greenplum是一个为数据仓库应用程序设计的mofified版本.EnterpriseDB是一家为PostgreSQL支持的商业版本提供一些增值软件的公司.
MySQL 5.x有一个功能集,支持合理的横截面功能,但它不像PostgreSQL那样功能丰富.它具有更广泛的主流接受度,并且是最容易招募熟练开发人员的开源数据库管理系统.虽然旧版本没有强大的事务支持,但InnoDB等事务存储引擎已有一段时间了.围绕 Sun收购的当前 政治 已经产生了代码叉,并且MySQL格局有些混乱,对5.1版本中的质量问题存在争议. 然而,MySQL是迄今为止最受欢迎和最知名的开源数据库管理系统,并且是唯一一个在开源圈子之外具有重要品牌认知度的系统.
Firebird是Interbase的开源版本.最后我看,它没有XA支持,但如果您的应用程序设置为双层客户端 - 服务器系统,那就没问题了. 更新:我找不到关于此的明确规范,但文档确实表明它支持两阶段提交,但我能找到的并不是特定于它是否支持XA协议.该文档暗示JDBC驱动程序确实支持两阶段提交.
该系统的一个有趣的变体是Fyracle,它旨在提供与Oracle的一定程度的兼容性.这最初是作为Compiere的后端而开发的,它是针对Oracle构建的,并且与它紧密耦合.
Ingres现在可以获得开源许可证,但开源社区已经受到了一些集体打哈欠的欢迎.然而,它非常丰富且非常成熟 - 我知道人们在1990年做过INGRES应用程序,并且可以追溯到20世纪80年代.
我的建议?别.最好买一个.对会计有更多了解的人已经写好了已经处理过GAAP的软件包.他们拥有比以往更大的用户群,可以更快地发现缺陷.这是一个经典的"购买与构建".通过编写自己的公司,没有竞争优势.如果你这样做是因为你担心许可费用,我会说你还没有正确考虑开发时间.这是你在内部做这件事的唯一方法.
话虽如此,如果您担心SQL Server许可成本,我建议先将PostgreSQL或MySQL秒作为您选择的数据库.
我非常同意duffymo和tuinstoel等人的回答.重新考虑您的构建与购买决策.我来告诉你一个故事:
当我在一家中型公司(国际,年收入> 1亿美元)工作时,CFO决定用Oracle Financials取代金融系统.只有该软件包与该公司使用的会计惯例不完全匹配.
因此,首席财务官聘请了一个合同程序员团队,并付钱给他们,以根据首选的会计实践来定制Oracle Financials.她沉没了12个月的时间,100万美元的程序员工资,再加上软件的初始成本,只是为了复制他们打算取代的会计系统.
她说,如果她不得不再做一遍,她会购买商业套餐,但要将公司的会计习惯调整到软件支持的默认值.这将更容易,更快,更有可能成功.
因此,请考虑构建自定义程序包的成本.还要考虑贵公司对该软件的维护,调试和增强的持续成本.即使购买六位数的商业套餐,也可能比支付程序员开发和维护这样一个系统要便宜.
为了更直接地回答您提出的问题,我认为PostgreSQL和MySQL之间没有与您的项目相关的显着差异.既然你对MySQL感到满意,你也可以选择它.
我想提供一个强制性的提示不使用不准确的数据类型,如FLOAT
或DOUBLE PRECISION
财务数据.