各位做系统开发的朋友都知道,数据库是系统非常重要的组成部分,选用合适的数据库也是大家最关心的问题。大家选用较多的数据库可能包括MySQL、SQL Server、PostgreSQL、SQLite、Access等等。我这里就以这五种数据库为例谈一些体会。
针对小型应用,比如单机版应用,使用Access和SQLite都不错。二者均是文件型数据库、性能均一般、支持的SQL标准有限、并发处理能力比较差,均不支持存储过程、自定义函数,一般适合做小型应用、或者作为大型应用的本地存储。
Access数据库属于微软,作为Office套件,与Office其它套件的融合比较好,但要用还是要花钱的。SQLite是完全开源、免费、没有任何商用限制的,一般的开发环境都内置了SQLite支持。
在Windows平台下测试会发现,Access和SQLite的速度相差不大,但如果在Linux平台下应用SQLite,速度会有很大提升。要想在Linux环境下使用Access数据库,那还是洗洗睡吧。
如果在Access和SQLite之间做选择,建议最好选择SQLite。SQLite为嵌入式而生,她小巧精致却又性能优良、免费开源却又应用广泛。重要的,SQLite支持Windows、Linux、Unix等等主流的操作系统。
做较大应用时,如果考虑开发成本和应用成本,大家选用较多的可能是MySQL、SQL Server和PostgreSQL这些。这三个都是应用广泛的关系型数据库,一般的云供应商都有提供这三种云数据库应用。
MySQL和PostgreSQL首先大规模应用于Linux系统,后来移植到Windows系统;SQL Server主要应用于Windows系统,从2016版本开始也可支持Linux系统。
MySQL与PHP融合完美,做Web开发曾是首选。但MySQL被Oracle收购后,开源越来越受限,前景不太明朗。有一个分支叫做MariaDB是MySQL很好的替代品,MariaDB源于MySQL,跟MySQL同宗同源。从MySQL迁移到MariaDB非常简单,两者几乎是完全兼容的。最重要的是,MariaDB是完全开源的,商业应用不受任何限制。
PostgreSQL号称是业界功能最强大的开源数据库,这名头不是盖的,确实是真材实料的。与MySQL相比,PostgreSQL功能更强大、性能更优越,特别是对Json的支持,突破了关系型数据库的限制,对NoSQL的支持也很好。而且PostgreSQL是完全开源的,商业应用不受任何限制。如果您在PostgreSQL和MySQL之间选择,我觉得PostgreSQL无疑是更好的选择。
SQL Server属于商业数据库,通俗来说,开源数据库是完全免费的、商业数据库大多情况下是收费的。就性能来说,SQL Server与MySQL和PostgreSQL相比是不逊色的。较多朋友是基于Windows平台做开发的,SQL Server用起来会更顺手,如果您只是担心费用问题倒也不怕,SQL Server有Express版本是免费的,而且发布时,您可以为客户安装MSDE作为数据库后台,这也是免费的。Express和MSDE有较多限制,包括支持的并发访问一般只有几个、单个数据库体积不能超过4G、只能使用单处理器、可使用的存储器也只有1G。
综上所述,如果是做大型开发,最好的选择是PostgreSQL。如果您不担心版权风险,使用D版的SQL Server也是不错的选择。