资料库是大部份应用领域应用领域软件的基础,几乎大部份的应用领域软件合作开发都须要一个或数个资料库,不论是Web应用领域控制系统、企业信息控制系统、PDP控制系统或实时控制系统,还是人工智慧(Artifical intelligence)、机器自学(machine learning)、巨型计算机(HPC)、区块链(Blockchain)、物联网(IoT)之类。资料库技术发展到今天,成形的产品愈来愈多,如何优先选择适宜自学或生产环境的资料库控制系统,并并非两件很难的事。
随着微服务项目、云服务项目、洛佐韦、全球扩充、半形式化统计数据、大统计数据、快统计数据等需求的蓬勃发展,现代的资料库控制系统须要与NoSQL、NewSQL和此类资料库并重,就可以满足用户顾客和市场的要求。
右图是主流资料库的市占率(普通用户社会群体)为萤:
右图是常见资料库发动机名列:
责任编辑对现阶段常见的两款资料库控制系统mySQL/PostgreSQL/MS SQL Server进行较为全面性的较为,为资料库新手和应用领域软件合作开发人员提供参照;较为内容主要就包括下列几个方面:
与否开放源码/完全免费,以及适用于的操作控制系统主要就机能的特征适用于情景普通用户社会群体行业发展趋势对个人使用实战经验注:没有招入Oracle,因为Oracle价格低廉,新手碰触不出,其使用者社会群体也并非很大;在2000年从前,Oracle是应用领域软件产品资料库控制系统的主要就优先选择。
MySQL
MySQL是这款开放源码的关系资料库信息控制系统(RDBMS),由三位技师Michael Widenius和David Axmark于1995年合作开发,因此迅速在业界和街道社区盛行。MySQL具有虚拟化的机能,且完全免费开放源码,有灵巧的街道社区许可,也可升级换代为民用许可。
主要就特征
如前所述SQL国际标准合作开发的这款开放源码完全免费的资料库控制系统,可适用于绝大多数操作控制系统,现在有街道社区版和企业版;提供ACID事务保证,从资料库的CAP原理(一致性、可用性和分区容错性)而言,其具备即时一致性;横向分表机能,因而具有可用性高、统计数据吞吐量大和延时小的特征;使用MySQL Cluster,可实现数个ACID事务;多种模式的资料库,支持形式化统计数据(SQL)和半形式化统计数据(JSON)主要就用于PDP控制系统、小型控制系统和前端合作开发适用于的情景
处理形式化统计数据,且具有ACID事务保证横向可扩充是关键需求,特别是写操作的统计数据量大多主ACID事务是基本需求统计数据安全要求高对OLTP和OLTP工作负载有均衡要求不适用于的情景
不适宜事务量非常多的情况,要求使用分布式SQL不适宜统计数据关系紧密的情况,如社交媒体不适宜处理半形式化统计数据,如JSON、XML等不适宜统计数据保护等级高的情况对个人实战经验
MySQL在procedure方面相对稚嫩,在健壮性、稳定性和成形度方面总体还不及PostgreSQL和MS SQL Server;
行业发展趋势
MySQL经过二十多年的发展和应用领域,现在尽管还拥有非常大的普通用户社会群体,但其上升势头已经不再,并呈现出下降的趋势。如右图:
PostgreSQL
PostgreSQL是加州大学贝克利合作开发的这款现代资料库控制系统,在上世纪起始年代合作开发之初,只是一个教学项目(Ingres),后来发展成为完整的关系资料库信息控制系统(Post-Ingres)。经过30多年的发展,PostgreSQL成为使用最多的资料库控制系统之一,因此在现代资料库信息控制系统方面有很多创新。
主要就特征
如前所述SQL国际标准合作开发的开放源码完全免费的RDMBS,可适用于于绝大多数操作控制系统;扩充工具包众多,具有多种高级机能;提供ACID事务保证,从资料库的CAP原理(一致性、可用性和分区容错性)而言,其作为单一服务项目器使用时具备即时一致性;Citus Data 是PostgreSQL的一个扩充包,能提供更深入的分布式SQL机能;提供了更高级的部分索引、布隆过滤等,即非阻塞方式创建索引其具有丰富的机能和多种模式资料库,支持形式化统计数据(SQL)和半形式化统计数据(JSON、XML)、键-值和空间统计数据PostGIS的机能非常强大,GIS DB扩充能力可用于任何类型的资料库除了提供的pgplsql编程语言之外,还可使用其他几种编程语言进行资料库编程,如Python, C/C++适用于的情景
处理形式化统计数据,对统计数据的完整性要求高,关键是要有ACID事务保证;符合分布式SQL的要求,可在全球范围内建起分布式资料库,用来处理数百万的事务量;要求使用先进的查询计划;可靠性高,具备灾难恢复能力,即PITR和Active Standbys(热备份)能处理地理空间统计数据。不适用于的情景
处理多主ACID事务是必须的机能;处理半形式化统计数据,即用高级查询计划处理JSON统计数据;对资料库有OLTP和OLAP的均衡要求;对个人实战经验
PostgreSQL中提供各种机能的扩充工具包一般的运行时间都在100s左右;在时间序列、统计数据表切分和地理控制系统方面支持非并行统计数据处理;可以优先选择不同的统计数据类型建立不同的索引。
行业发展趋势
PostgreSQL一直在资料库的高级机能和创新方面贡献很大,在其30多年的发展和应用领域过程中,普通用户社会群体稳步扩大,如右图:
MS SQL Server
微软于1988年并购了Ashton-Tate和Sybase,创建了自己的关系资料库控制系统 Sybase SQL Server,次年发布了Microsoft SQL Sever的第一版。尽管多年的发展,MS SQL server尽管在机能方面没什么创新,但是仍然通过升级换代和改造打造出了这款成形的资料库控制系统,并获得了很大的普通用户社会群体,成为在windows操作控制系统上运行的中型资料库控制系统的非主流商业产品。
主要就特征
有知识产权和使用许可的资料库控制系统,分为Developer版和Express版(完全免费)、国际标准版和企业版(民用版);提供ACID事务保证,从资料库的CAP原理(一致性、可用性和分区容错性)而言,其作为单一服务项目器使用时具备即时一致性;支持服务项目器端编程,可以使用T-SQL、.Net、R、Python和Java编程语言;多模式资料库,支持形式化统计数据(SQL)、半形式化统计数据(JSON)和空间统计数据支持本地和云端部署。适用于的情景
处理有ACID事务保证的形式化统计数据(SQL);合作开发平台与微软的其他产品可以很好的对接;Azure Cloud优先使用;使用该资料库的公司,可以转换到云端。不适用于的情景
资料库控制系统预算少;处理多主ACID事务是必须的机能;处理半形式化统计数据(如JSON),须要高级查询操作;要求使用分布式资料库;需要处理资料库负载均衡对个人实战经验
对于MS SQL Server来说,最值得说的就是Transact SQL,其独有的 t-sql 是构建在国际标准SQL之上的,比SQL的机能更强大;对于复杂的大规模统计数据操作,或者在错误操作发生时利用触发器和规则等机制锁定资料库(这样的应用领域情景下,用PostgreSQL也可以做到),那T-SQL是不错的优先选择;在统计数据导入和导出方面,PostgreSQL相对并非很方便 ,MS SQL Server比 mySQL要好用,mySQL又比PostgreSQL方便。另外,在查询统计数据表时,查询执行的背后机制都使用了use sys.table,只是在查询语句中不用写出来。
MS SQL Server在GIS方面,不仅运行速度比PostgreSQL慢很多,而且在健壮性和机能方面与PostGIS的差距也很大。
行业发展趋势
MS SQL Server是这款发展时间长、性能稳定的资料库控制系统,但其在创新方面乏善可陈,近年来的发展也呈现出下降趋势,如右图:
以上是对两款常见的资料库控制系统所做的较为,至于普通用户如何优先选择,看自己的实际情况。对个人认为,如果是新手或前端合作开发者,不关心资料库的能力,可以优先选择MySQL;如果用于生产环境,要考虑资金预算和目标环境,可以优先选择PostgreSQL或MS SQL Server;当然,同样的生产环境下,优先选择MS SQL Server会更好。
说明:文中的对个人实战经验,仅仅是自己的实战经验体会,有对个人主观性,仅供批判!