本文最初发布于 ScaleGrid 的博客,经授权由 InfoQ 中文站翻译并分享。
哪些数据库是 2019 年的“大势”?在 DeveloperWeek 上,我们询问了数百名开发人员、工程师、软件架构师、开发团队和 IT 领导者,以了解当前 NoSQL 与 SQL 的使用情况、最流行的数据库、需要跟踪的重要指标以及最耗时的数据库管理任务。通过本文,你可以了解 MySQL、MongoDB、PostgreSQL、Redis 和其他许多数据库管理系统的最新信息,看看今年最受欢迎的数据库管理系统是哪一个。
SQL vs. NoSQL
任何数据库管理员都知道,你必须问自己的第一个问题是,应用程序是使用 SQL 还是 NoSQL 数据库。这两者有什么区别?
SQL 数据库
SQL 数据库也称为关系型数据库,基于结构化查询语言(SQL)定义和操作数据。SQL 数据库是最常用的数据库,对于处理结构化数据非常有用。结构化数据是指组织数据元素,并标准化它们之间以及与不同属性之间的关系。
NoSQL 数据库
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 用户却来的很少。
单数据库 vs. 多数据库
与将所有的鸡蛋都放在一个篮子里的传统策略相比,多数据库类型的使用在过去 10 年出现了爆炸式增长。那么有多少?在我们交流过的组织中,有将近一半实际上使用了不止一种类型的数据库来支持他们的应用程序,而不是单个数据库!使用多个数据库的比例为 44.3%,使用一个数据库的比例为 55.7%:
SQL 与 NoSQL 的多数据库组合
因此,我们了解到,将近一半的受访者正在组合多个数据库来支持他们的产品,他们把哪种类型的数据库管理系统一起使用?这一点不那么令人吃惊,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 上为云数据库趋势报告做出贡献的数百名参与者!我们很高兴与大家分享这些见解,并希望可以在下面的评论中看到大家的想法。
查看英文原文:2019 Database Trends – SQL vs. NoSQL, Top Databases, Single vs. Multiple Database Use
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论