案例解读|高盛 Goldman Sachs 如何做数据库变更

uniapp map地图实现marker聚合点,并点击marker触发事件 【代码】uniapp map地图实现marker聚合点,并点击marker触发事件。 阅读详情

原文链接 作者|Shant Stepanian ,高盛平台业务部的高级工程师


本文重点

  • Obevo 是在高盛开发的企业级数据库部署工具,在 2017 年以 Apache 2.0 许可证发布的开源项目。
  • 允许将数据库脚本按对象进行组织,类似于应用代码,对开发人员来说好处多多。
  • 可以帮助具有现有数据库的新应用和系统将其数据库更改管理纳入软件开发生命周期 (Software Development Life Cycle / SDLC) 管控。
  • 团队可以使用 Obevo 的上手工具和引导示例快速入门。
  • 其他功能包括回滚,内存数据库测试和分阶段部署。

近年,高盛采用了标准的 SDLC 来构建和部署应用程序。这包括管理新系统和现有系统的数据库 schema ,这比管理应用程序代码更加困难。在本文中,我们将描述我们最近开源的数据库部署工具 Obevo 是如何帮助高盛的企业级应用程序的数据库纳入 SDLC 管控的。

企业的数据库部署的问题

将数据库定义引入到标准的 SDLC 流程中是具有挑战性的,尤其是考虑到数据库的状态以及执行增量迁移的需求。因此,许多应用程序没有自动化或流畅的数据库部署过程。我们的目标是将数据库 schema 管理纳入与应用程序相同的 SDLC 中:通过将所有定义提交到版本控制系统 (VCS) 并通过标准的构建/发布机制部署。

file

这项工作由我们实际数据库系统使用案例的多样性而变得复杂:

  1. 现代系统:全新的 schema 来部署表、进行内存测试,并从一开始就纳入了适当的 SDLC。
  2. 遗留系统:超过十年的系统,从未有过受控部署过程。
  3. 复杂系统:数百或数千个对象,包括表、视图、存储过程、函数、静态数据上传和数据迁移等类型。
  4. 耗时系统:包含数百万行的表,需要花几个小时部署。

无论使用何种案例,由于大量分布各地的开发人员都在进行变更,SDLC 本身都有复杂之处。

虽然现有的开源工具可以处理简单的案例,它们无法处理我们一些现有系统的规模和复杂度。但是我们不能放任这些现有系统没有适当的 SDLC:它们是正在开发和发布的关键系统。

因此,我们开发了 Obevo,一个能处理所有此类使用案例的工具。Obevo 的关键差异化因素在于能够按文件维护数据库对象(类似于更常见的按文件存储类定义),同时仍管理增量部署。

在本文中,我们将讨论数据库部署问题,然后演示基于对象的项目结构如何帮助我们优雅地管理各种对象和环境类型的上百上千个 schema 对象。

file

数据库对象类型(有状态 vs 无状态)

首先,我们来回顾一下不同数据库对象类型的部署语义,因为这会影响工具的设计。

快速术语说明:

  • 将某些代码 / SQL 应用于修改数据库的行为将被称为部署或迁移。
  • 被部署的代码单元将被称为脚本片段。
  • 一个文件可能包含多个脚本片段,即脚本片段不等同于脚本文件。关于一个文件是否应该包含一个还是多个脚本片段是本文中的主题。

有状态对象(例如:表)

有状态对象需要增量修改其定义,而不是完全的定义替换。以下是添加两列到 MyTable 中的示例:

file

理想情况下,我们可以通过一个 SQL 语句来把数据库带到终态,该 SQL 定义了一个具有四列的表。不过 SQL 其实无法提供可行的解决方案:

  1. 删除并重新创建表意味着你会失去数据
  2. 将数据保存在临时表中可能是一个昂贵且复杂的操作

file

相反,关系型数据库管理系统 (RDBMS) 允许用户使用 ALTER 语句来修改现有表。

LinePhone3.2.7(android端最新版本) sip客户端 SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/ 立即下载

相关推荐

OTN传送网实战指南:从光层到电层的完整架构解析(附配置示例)

本文深入解析OTN传送网从光层到电层的完整架构,涵盖关键组件、技术实现及配置示例。通过高速公路与光传送网的类比,详细介绍了光层超宽传输管道构建、电层业务调度核心引擎以及控制平面智能运维实战。附有典型组网方案与故障排查指南,助力网络工程师高效部署与维护OTN传送网。

tomato的博客 682

基于 Wi-Fi 的室内定位系统

目前,随着国内外相关从业人员的研究,研究者们提出了众多室内定位技术的理论与方法。在此仅讨论基于 Wi-Fi 的室内定位技术。 WI-FI室内定位 近年来Wi-Fi技术飞速发展,城市中的公共场所如大型超市商场、学校、企业等都已经广泛部署Wi-Fi。Wi-Fi室内定位技术已经出现了很多具有代表性的研究成果,如RADAR系统、Nibble系统、Weyes系统等室内定位系统。2012年,Google把Wi...

温染的笔记 9566

不止于连接:用VS Code Remote-SSH深度开发树莓派(Ubuntu 22.04环境实战)

本文详细介绍了如何在Ubuntu 22.04环境下使用VS Code的Remote-SSH功能进行树莓派深度开发。通过SSH配置、VS Code扩展安装和远程环境优化,开发者可以在本地高效编写代码,同时在树莓派上直接运行和测试,解决性能瓶颈问题。文章还提供了高级功能如端口转发、多项目管理和远程调试的实战技巧。

didui8202的博客 352

Windows下OpenMBEE项目MMS部署失败经历及改正

在Github里找到了上面的第一份文档,下载了MMS源代码(不知道为什么这个代码跟上面操作克隆得到的MMS代码不一样?好像是因为Gradle的版本问题,我本地之前已经安装过7.6.4的Gradle了,于是我找到gradle-wrapper.properties文件。后面在VScode中运行了一下依然是报这个错误,我在VScode终端直接执行。不知道为什么依然没什么用。打开“Windows PowerShell”。(如果是第一次运行它,将看到更长的输出)导航到要克隆存储库的文件夹,例如,

Yo_lan_da的博客 1868

R语言 | 关联规则

关联规则(AssociationRules)是无监督的机器学习方法,用于知识发现,而非预测。 关联规则的学习器(learner)无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤。缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合理。 关联规则主要用来发现Pattern,最经典的应用是购物篮分析,当然其他类似于购物篮交易数据的案例也可以应用关联规则进行模式发现。

I think so I am 10万+

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 644

量子编程专业权威教程(十四):Shor 算法

本文系统阐述了Shor算法的原理与实现,重点解析了将大数分解问题转化为周期寻找问题的数论基础,以及模幂运算量子电路的设计方法。通过以N=15为例的完整算法流程演示,展示了量子计算在因数分解问题上的指数级优势。文章详细拆解了受控幺正操作构建、量子傅里叶变换应用等关键技术环节,并提供了可复现的Qiskit代码实现。同时指出了当前量子硬件在比特数、相干时间和错误率等方面面临的工程挑战,这些限制使得分解大整数仍需长期技术突破。该研究为理解量子计算优势提供了典型范例,对后量子密码学发展具有重要启示意义。

分享知识,拥抱变化 797

ardupilot开发 --- MavLink 篇

ardupilot开发 --- MavLink 篇

记录老板的每次pua,分享领导每天的毒鸡汤... 4248

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 1:1000,新能源车企如何将数据库管理效能发挥到极致
下一篇: 揭秘:10人,2周,200+ PR,Bytebase在提升研发效率上做了什么
Bytebase
博客等级 码龄5年 1339粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值