拥抱PostgreSQL

知道PostgreSQL有段时间了,但一直没想着去用这玩意。以前都是别人出的设计方案,加上ORM的使用,可以做到数据库的无关性,写出来的代码可以兼容各种数据库系统,所以就很少考虑开发系统的时候该使用什么样的数据库系统,但到了自己独立开发系统的时候,就不得不考虑用什么用的数据系统了。这里边涉及到很多的东西,比如著作版权,考虑跨平台,还有企业级的功能等等。

关系型数据库有很多,经常用到的有Sql Server 、Oracle、Db2 、MySql等等,有时候真不知道如何去选择,如果终端用户不差钱,那就直接买商业版本,比如大型的企业可能会买Oralce的许可,他们有专门的数据中心和专业的DBA。国内的中小企业喜欢使用Sql Server,这可能利益于Sql Server的可视界面,而又有大型数据库的功能,加上高校里大多以Sql Server为教学示例,所以很普及。

这个在有买单的情况下问题不大,但没人买单的情况下就有问题了。如果客户并没有现成的数据库系统,这就要软件提供方打包提供了。一套商业数据库系统价值不绯,一套软件开发出来可能没几万块钱,一个数据库系统就几十万了,这样的话,硬生生地将一个软件开发商弄成了一个数据库销售商,这肯定是舍本求末的。如果你的程序复杂度不到一定的级别,还是尽量不要去使用商业系统,何况Sql Server还只能Windows上运行。另一个情况就是去使用Oracle,Oracle下载下来就能用,不过Oracle相当复杂,而且非常的笨重,使用Oracle也需要非常专业的DBA专业知识,这显然对于普通的开发者的要求太高了,如果一个人真的精通Oracle的话,就靠这个数据库系统就可能谋一个不错的职业,何必多此一举再去搞什么系统开发。

大型关系型数据库虽好,但因为上述的问题,用起来不是很灵活,且要说服用户去花大价格去购买,否则只能使用盗版。如今随着版权意识的提高,盗版是越来越没有市场,我曾把注意力转向开源的Mysql,但跟这些大型数据库比起来,还是缺少了些什么。虽然这几年的发展,其功能已经向大型化靠拢,但是,依旧显得有些单薄,比如数据备份什么的,dump出来的是insert语句,这对于数据量很大的时候,操作起来是比较费事的。然后Mysql没有计划任务之类的工具,对于一些常规的计划性的操作,还得借助第三方的,比如操作系统的功能。但是,在PostgreSQL出现之前,我还真没找到更合适的数据库系统。

一般情况下,Mysql实际上是可以满足大部分的需求了。但是作为企业开发,Mysql还是弱了一点。所谓企业级的开发,如果按照Java ee定义的标准来看,真正从事企业开发的程序员并不多。SqlServer、Oracle都是企业级的数据库。但究竟什么是企业开发,咱这种没进过大厂的程序员也没有多少话语权。大概就是ERP之类的东西,里边涉及到企业管理,人事,办公,供应链等等。不过,最近Java ee 变成了Jekarta ee,本来以为Java快玩完了,没想到又通过另一种方式完成了重生。

在众多的开源项目中,我又不断地遇到了PostgreSQL这样的字眼。OpenJDK和JekartEE的出现,说了一个问题,即使开发企业应用程序,也不一定非得买昂贵的开发平台,不需要让企业投入过多的成本。即使有这么多大厂推崇PostgreSQL,为什么咱不能跟随潮流呢,况且这个数据库系统的评价也不低,有时候咱不过是懒得去接触新的事物而已。

你可能感兴趣的:(拥抱PostgreSQL)