为什么我们在追求敏捷的路上抛弃了关系数据库

译文 精选
数据库
本篇文章将会阐述,在一个实验性应用中放弃使用关系数据库的决定是如何深刻改善业务的。

旅行者保险公司是美国最大的商业、财产和意外保险承保人之一。作为一名资深架构师,我目睹了该行业在过去10多年中的巨大发展,数据需求推动静态数据需求的增长,随后是动态数据,最后是消费中的数据。

如今,董事会要求企业管理者利用技术重新设计生产和销售,并最终提高公司的生产力和效率。

按理说,软件可以减少企业发展瓶颈,这意味着我们需要更好地持续构建和交付软件应用。虽然我们认为自己是敏捷狂热者,精通微服务,但我们并没有一觉醒来突然改变数据库。

事实上,我们用了数年进行数据库技术迭代,才最终用文档数据库取代了底层关系数据库,使我们能够捕捉到使用微服务的价值,并提高开发人员的工作效率和速度。

通过运行数据存储变得更加敏捷

起初,我们的目标是为我们的经纪人构建一个单一视图的应用程序,因为他们需要登录12个不同的服务,以满足单一用例的要求。关系数据模型一直阻碍着我们。

在当今的软件开发实践中,你需要根据简短的业务功能描述来构建软件。游戏的关键在于保持轻便和不断迭代。这与传统的瀑布式方法不同,在瀑布式方法中,可能要花费六个月的时间进行需求分析,才能编写一行代码。在瀑布式方法中,这没有问题——你知道了最终状态,才能创建数据库对象。但是,如果采用敏捷方法,就无法做到这一点,因为根本无法根据太简短的业务需求建立数据模型。现实情况是,你需要不断修改数据库。

在旅行者公司(Travelers),我们在 2014 年推出了单一视图应用程序,尽管它仍然依赖于 ETL、具有单一的代码库,并面临持续的集成挑战。现在,我们每年要部署五次软件,这对我们来说非常重要,并在内部营造了重新设计的应用程序对业务影响的氛围。

我们意识到,如果工程团队需要加快交付速度,我们就必须放弃关系数据库。

再见表格,你好 JSON!

2017 年,我们决定使用 MongoDB Atlas 这种文档模型数据库。然而,要想取得成功,我们需要做的不仅仅是学习如何针对不同的数据库进行编程。对于一家从未使用过关系数据库以外其他任何东西的公司来说,这是一次巨大的变革。要想取得成功,我们不仅需要实现技术的现代化,还需要实现企业文化的现代化。

在我们的开发人员开发软件的同时,我们还与许多其他团体建立了关系,让他们也参与到我们的旅程中来。

  • 我们这样做是为了确保能够利用他们的专业知识
  • 让噪音安静下来
  • 教会每个团队如何使用 JSON 建立数据模型

与表格相比,用 JSON 建模让许多人大开眼界,他们认识到我们可以更快地将软件交付到生产中。

很快,随着我们的开发团队更快地将功能交付到生产中,业务产品负责人的工作积压开始减少。这创造了一个飞轮势头。随着我们的业务部门正在做的事情在内部传开,我们开始看到其他团队对我们的成果产生了极大的兴趣。

现在是微服务

尽管我们的开发人员在首次发布之前没有使用 MongoDB 的经验,但我们仍然能够在 8 周内将产品投入生产,消除了 600 多行代码,并在时间和预算范围内完成了任务。

此外,反馈表明,文档数据模型有助于消除数据映射和建模等繁琐的关系数据库工作。这样,开发人员就有时间重新专注于高度优先的项目。

我们刚开始使用 MongoDB 时,生产中只有两个集合。一年后,我们在生产中部署了 120 个集合,每天编写 1000 万个文档。如今,每个团队都拥有自己的依赖关系,并拥有自己专用的微服务和数据库,从而为应用程序和数据库的变更提供了单一的管道。总之,这些变化以及不重构数据模型所节省的时间,让我们将部署时间从几小时甚至几天缩短到了几分钟。

引领未来创新

如果在关系型数据库中使用得当,就会有很多表格;如果数据建模得当,即使是最简单的使用案例,也会有很多对象。一旦我们发现数据库拖慢了我们的速度,我们就知道是时候做出改变了。

我们转向文档模型数据库的决定最终对公司产生了深远影响,MongoDB 已成为软件开发的事实标准。在此过程中,我们采用了精益产品思想,并为我们的开发团队成功缩短交付时间做好了准备。

原文标题:Why our agile journey led us to ditch the relational database

责任编辑:梁佳乐
相关推荐

2011-03-15 14:54:08

NoSQL

2010-09-15 14:09:01

GraphDataba

2020-02-19 15:01:30

数据库SQL技术

2023-10-16 13:26:00

RDBMS关系数据库

2010-09-17 08:24:59

敏捷开发

2011-10-11 17:07:12

数据库Internet文件数据库

2020-03-14 16:37:09

数据库IT技术

2010-03-08 13:20:27

MongoDB关系数据库

2009-03-26 11:10:13

关系数据库关系型数据库数据库

2010-10-28 10:30:16

云计算关系数据库

2011-07-18 09:54:47

云计算分片关系数据库关系数据库

2009-07-10 09:28:41

NoSQL关系数据库

2023-10-10 11:18:42

Spring数据库

2015-04-24 13:59:41

2023-05-22 11:20:27

数据库MySQL关系数据

2018-05-15 16:33:12

数据库MySQL 8.0新特性

2010-05-25 09:33:18

云计算第二届云计算大会

2020-06-10 09:06:48

MongoDB架构高可用

2011-05-19 10:29:40

对象数据库关系数据库

2023-08-01 14:35:00

关系数据库排列
点赞
收藏

51CTO技术栈公众号