数据库与操作系统、中间件合称为三大基础软件。中国的软件行业在应用程序开发上已经与国外水平相似,可能还超过国外应用软件开发行业。但是在基础软件上由于历史原因,中国的国产基础软件还是很薄弱的。例如在国内基础软件市场份额,,以数据库为例:2015年中国数据库市场,Oracle份额高达56%,远超排在第二的IBM(15.9%),微软份额排行第三为9.5%,SAP以8.5排行第四,Oracle市场份额比其他数据库的总和还要多,再次印证了IE好去O难舍。而在全球Oracle占有率为43.9%。从统计数据来看,国外数据库在中国的市场占有率还是非常大的。
现在国内的数据库产品有以下几种:1、国外商业数据库;2、开源数据库;3、国产数据库;4、以开源为基础进行微小修改的伪国产数据库;5、以开源数据库为组件,在其基础之上开发出更满足用户需求的产品。以下是对于几种不同来源数据库的分析:
1、国外商业数据库:数据库行业的巨头,速度快,稳定性高,服务好.......这些都是他们的优点,总的来说,就是省心省力。在国内的很多企业和机构的首选。这些数据库是经历了时间的沉淀,潮流的考验。但是他们的代码不公开,对于数据安全难免会有些担心。而且价格昂贵,以某厂为例,会按CPU数或用户数收费,而且每年都会有不斐的服务费。
2、开源数据库:这种产品有很多,比如关系型的mysql、postgresql;分析型的hadoop,clickhouse;newsql类型的mongodb、cockroach、tidb等等,开源数据库有很多,现在市场上所有的数据库需求都能在开源上找到对应的产品。听起来很不错,既能免费用还能看代码,感觉好爽。但是其中也是存在很大的问题的。首先先说明下开源产品是不收费还能看源码的目的。首先,作者有两种,一种是社区,一种是企业。前者大多数据是有共同兴趣的一群人,聚在一起做件大家都感兴趣的事。后者是为了推广企业的产品而抛出来的试用模式。前者大家只是对这件事,这个产品感兴趣,去下载,去修改,去测试,去提交,去审核,去发布,却不会承担任何的责任。后者呢,会闭源很多的功能,例如有一个时序数据库,单机是开源的,但是分布式是商业的;在开源产品的使用过程中,如果开源的产品出现问题,需要自己想办法解决,因为开源产品是没有售后服务的;如果对开源产品有新需求,但开源社区还没支持或开源这个功能就需要自己想办法支持,还可以提交到开源社区。这也是开源的目的,不光是索取还要负出。所以使用开源产品请谨慎,尤其是像数据库这样基础的软件,若是技术人员充足而且技术水平较高(源码级的水平)这是一个不错选择。反之,要谨慎,谨慎,再谨慎,避免入坑。
3、国产数据库:这些数据库是国内数据库行业的先驱者,虽然国产数据库行业一直不景气,但是他们在夹缝中生存了多年。这种不屈不挠的精神很让人敬佩。而且现在国内大多数的数据库人才也都他们培养的。他们的产品大多数都是提供给政府和军工使用。他们与很多高校合作有很浓的学术气息。由于他们经营和历史原因,他们所背负的也成为了所阻碍他们进步的。可能他们的业务场景会比较少,在现在的互联网行业基本上没有应用。
4、以开源为基础进行微小修改的伪国产数据库:现在去IOE正热,很多在之前没有多少积累的企业也看准了这个市场,想要分一杯羹。人员可以现招,但是产品是需要岁月积累的。他们并没有自己的产品,只能将开源的某些产品改个名字,加一些边角功能,转身化为国产数据库。其实与开源的数据库并没有太大区别,在很多根本功能、瓶颈上并没有修改。一些好点的个企业可能可以对这些产品进行售后服务。但是更多的可能只是借着国产软件的名号。
5、以开源数据库为组件,在其基础之上开发出更满足用户需求的产品:这些公司有自己的积累,最起码对某些开源产品是熟悉的。在某方面的技术也是有积累的,对于市场上用户的需求也是有了解的。能弥补开源产品的一些缺陷,还能做出一些更符合用户使用习惯的功能,让开源产品可以更好发挥自己的优势。他们有些是开源产品的commiter,同时他们可以从源码上定位问题,分析问题,修改问题。既能提供不一样的产品也能为使用者提供服务。
如何选择数据库?
现在数据库驱于多元化发展,各种各样的数据库系统应用而生,怎么为应用选择一个适合的数据库成了一个很关键的问题。数据库是一个应用系统最主要的一个部分。如何选择数据库,要根据应用系统的数据结构、场景、需求来选则,现在数据库大致上可以分为以下几种类型:关系型数据库、分析型数据库、文档型数据库、内存数据库、图数据库、时序数据库。以下从数据表现形式、存储方式、适用场景对这几种数据库的介绍。
关系型数据库:这是最常用的数据库,也是计算机学科必学的一种数据库。它的数据表现形式为行、列。看起来像一个EXCEL 一样。可以很明确的表达数据之间的关系。大多数据关系型数据库以行来存储的。所以在查询数据时一次能得到整行的数据。在索引加速基础,它在海量数据中,获取一条数据的速度是非常快的。关系型数据库还有一个重要的名词叫事务,以事务的ACID特性加上数据完整性。所以关系型数据库对于数据正确保证性是最强的。关系型数据库适用于对于数据要求比较高、并发高但是查询数据少的系统。