本文共 3088 字,大约阅读时间需要 10 分钟。
本文最初发布于ScaleGrid的博客,经授权由InfoQ中文站翻译并分享。
哪些数据库是2019年的“大势”?在DeveloperWeek上,我们询问了数百名开发人员、工程师、软件架构师、开发团队和IT领导者,以了解当前NoSQL与SQL的使用情况、最流行的数据库、需要跟踪的重要指标以及最耗时的数据库管理任务。通过本文,你可以了解MySQL、MongoDB、PostgreSQL、Redis和其他许多数据库管理系统的最新信息,看看今年最受欢迎的数据库管理系统是哪一个。
任何数据库管理员都知道,你必须问自己的第一个问题是,应用程序是使用SQL还是NoSQL数据库。这两者有什么区别?
SQL数据库也称为关系型数据库,基于结构化查询语言(SQL)定义和操作数据。SQL数据库是最常用的数据库,对于处理结构化数据非常有用。结构化数据是指组织数据元素,并标准化它们之间以及与不同属性之间的关系。
NoSQL数据库也称为非关系型数据库,允许使用动态模式存储和检索非结构化数据。NoSQL由于其创建独特结构的灵活性而被广泛使用,它可以把文档、图、列,甚至是键值组织为数据结构。
几十年来,SQL数据库一直领先于非关系型数据库,但是,随着MongoDB、Redis和Cassandra等数据库的流行,NoSQL正在迅速缩小差距。尽管许多组织选择从遗留数据库(如Oracle)迁移,但并非所有组织都采用NoSQL方式。根据我们的调查,随着对PostgreSQL等系统的需求不断增长,SQL仍然占据了60%的市场份额。
SQL数据库使用率: 60.48%NoSQL数据库使用率:39.52%
那么,2019年,哪些数据库最受欢迎?我们了解到,超过3/5的受访者使用SQL,你可能会认为Oracle抢了风头。再猜一遍。MySQL以38.9%的使用率高居榜首,其后依次是MongoDB(24.6%)、PostgreSQL(17.4%)、Redis(8.4%)和Cassandra(3.0%)。Oracle仅以1.8%的使用率排在这些数据库之后,而CouchDB、Berkeley DB、Microsoft SQL Server、Redshift、Firebase、Elasticsearch和InfluxDB的用户总和仅占2.4%。
虽然这些数字可能令人震惊,但毫无疑问,MySQL、MongoDB和PostgreSQL正变得越来越流行。那么,该调查与最知名的数据库管理系统趋势相比如何呢?数据库引擎排名——流行趋势报告将这些领导者排在了前5位,但Oracle仍然保持在第1位,而Microsoft SQL Server位列第3位。
虽然按照我们的预期,到场的Oracle数据库用户会多得多,但在世界最大的开发博览会上,Oracle用户却来的很少。
与将所有的鸡蛋都放在一个篮子里的传统策略相比,多数据库类型的使用在过去10年出现了爆炸式增长。那么有多少?在我们交流过的组织中,有将近一半实际上使用了不止一种类型的数据库来支持他们的应用程序,而不是单个数据库!使用多个数据库的比例为44.3%,使用一个数据库的比例为55.7%:
因此,我们了解到,将近一半的受访者正在组合多个数据库来支持他们的产品,他们把哪种类型的数据库管理系统一起使用?这一点不那么令人吃惊,75.6%的多数据库类型组合使用了SQL和NoSQL数据库。这进一步说明,对于许多组织来说,并不能一刀切。对于SQL和NoSQL,虽然你可能有偏爱,但不可否认的事实是,它们相比于对方都提供了明显的优势。与其将你的组织限制在一种数据库类型上,不如发展你的数据库策略,使其具有兼容性,以便这些强大的数据库管理系统能够互相补充,并填补你数据需求中的空白!
SQL + NoSQL数据库使用率:75.6%SQL + SQL数据库使用率:14.6%NoSQL + NoSQL数据库使用率:9.8%如果你是一个单类型数据库用户,并且正在考虑将另一种数据库类型添加到你的组合中,那么这一节可能会非常有趣——SQL和NoSQL,哪些数据库最常一起使用。
MySQL和MongoDB的组合是明显的赢家,这对组合占据了多数据库类型超过三分之一的份额。虽然MongoDB通常被认为是MySQL的替代品,但如果设计得当,这两个数据库可以很好地协同。第二流行的组合是MySQL和PostgreSQL的组合。这两个SQL数据库显然是竞争对手,但可以一起使用,用于存储不同的数据集。从上一节的图中可以看到,MySQL和PostgreSQL组合的使用率为9.76%,占了多数据库中SQL + SQL组合的绝大部分。
MySQL + MongoDB:34.15%MySQL + PostgreSQL:9.76%MongoDB + PostgreSQL:7.32%MongoDB + Redis:7.32%MySQL + MongoDB + PostgreSQL:4.88%MySQL + MongoDB + PostgreSQL + Redis:4.88%好了,我们已经知道了哪些数据库管理系统、类型和使用组合最流行,让我们看看在数据库管理方面什么任务消耗了我们的时间。任何以前管理过数据库的人都知道,维护一个健康的生产部署涉及无数的任务。因此,对于最耗时的数据库管理任务这个问题,有如此多样化的回答,我们并不感到惊讶。
根据我们的调查,监控排在第一位,占12.6%,稍稍领先于备份,管理磁盘空间、扩展和添加表都以11.6%的比例并列第二。排在第三位的是视图和存储程序的维护和变更发布,占8.7%。清理和数据库安装配置并列第四,占7.2%。升级以6.5%的比例排在第五位,其他十几项任务占11.6%,包括迁移、查询、比较、调优和复制。
虽然对于最重要的数据库管理任务,我们看到了各种各样的回答,但是,对于最重要的性能跟踪指标则有三个最为突出的。
查询响应时间不仅是跟踪最多的指标,也是回答中最多的指标,有51.8%!在我们2018年10月编制的一份最耗时的PostgreSQL管理任务报告中,我们预计这一比例将达到30.8%,但是,当扩展到所有的数据库管理系统时,这一比例大幅增加。查询速度是一个非常重要的度量指标,需要连续跟踪,这样就可以确定运行缓慢的查询是否会影响应用程序的性能。许多DBA使用一个慢查询分析器工具来识别问题查询,看看它与哪种查询相关,按时间范围理解它们的查询,并找到导致系统中读取负载的顶级查询,以识别那些没有索引的查询。
排在第二位的是可靠性,我们的受访者中有18.2%的人这么认为。不用说,与慢查询相比,停机并不常见,但如果数据库宕机,则会对性能造成最严重的影响。这就是生产部署实现高可用框架的一个非常重要的原因,要在数据中心发生故障时保持数据库在线。
内存以8.2%的回答排在第三位。可用内存越多,数据库的性能就应该越好。理解和监控内存使用应该是你的首要任务,因为内存不足或耗尽将导致数据库读取和向磁盘写入数据的速度非常慢。
感谢在2019 DeveloperWeek上为云数据库趋势报告做出贡献的数百名参与者!我们很高兴与大家分享这些见解,并希望可以在下面的评论中看到大家的想法。
查看英文原文:
转载地址:http://dyvix.baihongyu.com/