中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流

公司简介
Salla 是一家 2016 年成立,位于沙特麦加的自建站电商平台。

作为中东 Shopify,其最大的特点是支持阿拉伯语建站,并且提供更多适应中东地区特点的本地化服务。截止目前,已有 47,000 家店铺入驻 Salla,商品销售总额达到了 43 亿美元,近三年保持了接近 100% 的增速。
合作背景
与 Salla CTO Salah Alkhwlani 的首次交流是在 23 年初。我们惊讶的发现,他们对产品的主要功能非常熟悉,并且迫不及待直奔主题希望立即采购。 事后了解到,随着业务的快速发展,结合其电商平台的属性,对于数据库的合规管控需求越来越急迫。然而市场上的产品要么是独立的 SQL 客户端缺乏安全管控能力,要么只提供一些 SQL 脚本审核能力,要么只提供命令行的 SQL 发布能力,找不到任何一款产品可以将诸多环节打通构建完整的数据库开发工作流。如果考虑自研,作为一家快速发展的科技公司,将研发资源投入到与业务没有直接关联的需求上是一种巨大的浪费。 直到他们发现了 Bytebase 这个产品,经过简单试用后,就立马意识到几乎所有功能都像是为他们量身打造的。于是,在初次交流的短短三天后,Salla 就成为了 Bytebase 在中东地区的首个付费用户。
使用场景
Salla 有大量的研发人员与运营人员,需要频繁地访问数据库进行各类操作。作为托管大量用户数据的电商平台,又受到监管方的严格要求。因此,Salla 需要一个专业的软件,对所有绕开应用的直接数据库访问行为进行管控,具体包括:
- 所有研发、运营团队对生产系统数据的直接查询行为
- 所有研发、运营团队对生产系统数据的导出行为
- 所有研发、运营团队对生产系统数据的直接修改行为
- 所有研发团队对生产系统数据库的结构变更行为
Salla 基于 Bytebase 构建了一套完整的数据库访问权限体系以及审核流程。
对于生产数据库的任何查询与导出行为

实现了细化到每一张表或每一条 SQL 的管控,并且可以将一些关键字段按需遮蔽脱敏。尤为关键的是,所有数据库可以在 Bytebase 中进行统一管理,无需针对每一个数据库设置不同的账号体系。权限可以按需进行主动申请或自动回收,也可以由管理员统一分配,大大简化了管理复杂度。
对于生产数据库的任何 DML & DDL 行为

构建了标准的发布工作流,所有变更请求需要提交工单,基于风险等级自动生成不同的审批流程,审批人基于自动审核工具的辅助高效的完成审核工作,再由专人按需一键发布到数据库。这一过程被统一集成到了 Bytebase 中,相比此前通过项目管理工具提交审核需求,管理员下载脚本人工审核再复制粘贴到数据库客户端发布的模式,新流程不仅大大提升了协作效率,还极大降低了人为误操作的风险。
深入合作
在满足基本需求后,Salla 计划进行 GitOps 与 Terraform 的集成。 通过 GitOps 工作流,可以让研发人员直接通过代码管理平台提交工单,实现与研发工作流的进一步整合。 通过 Terraform,可以实现 Bytebase 所有配置的代码化,让管理员更方便的进行人员与数据库访问权限的批量配置。 同时,我们也惊喜地发现,优质的产品结合服务,让 Salla 愿意将我们推荐给中东地区的同行们,帮助我们点亮了一个又一个新的客户,中东市场也意外成为了 Bytebase 的增长点💡。
关于 Bytebase
八月初,Bytebase 下载量正式突破了 100 万次。

作为一个开源项目,Bytebase 的发展速度远超业界老牌数据库变更管理工具 Liquibase 和 Flyway。

Bytebase 也是唯一一个同时被 CNCF Landscape 和 Platform Engineering Landscape 收录的数据库工具。

Bytebase 初心不变:打造一个一站式平台,负责各种不同数据库的变更、查询、安全和治理。将类似 GitLab / GitHub 的代码管理和开发体验带给研发、DBA 和平台工程团队⛵️。

💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。
相关文章:
中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流
公司简介 Salla 是一家 2016 年成立,位于沙特麦加的自建站电商平台。 作为中东 Shopify,其最大的特点是支持阿拉伯语建站,并且提供更多适应中东地区特点的本地化服务。截止目前,已有 47,000 家店铺入驻 Salla,商品销售…...
谷歌Chrome庆祝15周年,推出全新设计!了解最新信息!
谷歌浏览器本月将满15岁,为了纪念这一时刻,它正在进行改造和升级。 这一点意义重大,因为Chrome在全球有数十亿人使用,因此谷歌所做的每一项改变都会对互联网以及这些人与互联网的互动方式产生巨大影响。即使你不使用Chrome或不关…...
解决Oracle SQL语句性能问题——SQL语句改写(分析函数、with as、union及or)
1. 正确使用分析函数 分析函数最早出现于Oracle 8i版本中,并在后续版本中不断得以增强。正确的使用分析函数,不但能非常方便的实现某些功能,而且,在某些场景中,还可以大幅提升SQL语句的性能。因此,为了简化应用实现逻辑或解决相关SQL语句性能问题,有时我们需要利用分析…...
Linux之SELinux
目录 概述 定义 作用 SELinux与传统的权限区别 SELinux工作原理 名词解释 主体(Subject) 目标(Object) 策略(Policy) 安全上下文(Security Context) 文件安全上下文查看 …...
Acwing算法心得——街灯(差分)
大家好,我是晴天学长,差分广泛用于一段范围的加减运算,可以优化时间复杂度,需要的小伙伴请自取哦!如果觉得写的不错的话,可以点个关注哦,后续会继续更新的。💪💪…...
streamlit执行报错WARNING,重新安装碰到问题如何解决
streamlit执行报错WARNING,重新安装碰到问题如何解决 如何解决1、卸载已经安装的程序2、再次安装程序3、出现如下yinstaller 警告问题:4、又出现“which is not on PATH”警告。5、解决方案 发现在安装的时候有很多WARNING出现,但是没有但回事…...
《C++设计模式》——行为型
前言 行为型模式是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。 Interpreter(解释器) Template Method(模板方法) GOOD:把不变的代码部分都转移到父类中,将可变的代…...
什么是原生IP?原生IP与住宅IP有何区别?
相信许多做跨境的都会接触到IP代理,比如电商平台、社媒平台、收款平台等等,都会检测IP。那也会经常听到一些词汇:原生IP、住宅IP,这两者之间有什么区别呢?什么业务需要用到呢?接下来带大家具体了解一下。 什…...
element-plus 表格-自定义样式实现
效果如下 代码如下 <template><h2>表格自定义样式</h2><div style"background-color: cadetblue; height: 600px;"><div class"regulaContainer"><el-table ref"tableRef" :data"tableData" border …...
MVCC
MVCC(Multi-Version Concurrency Control)是数据库管理系统(DBMS)中的一种技术,用于管理并发访问数据,允许多个事务同时进行而不互相干扰,同时保持数据的一致性。 MVCC 的工作原理如下…...
你不知道的JavaScript---对象
1.语法 对象可以通过两种方式定义:一种是对象字面量形式,一种是构造形式 对象字面量: var muObject {key: value }构造形式的: var myObject new Object() myObject.key value不管是使用对象字面量形式还是构造形式创建出来…...
C++项目实战——基于多设计模式下的同步异步日志系统-①-项目介绍
文章目录 专栏导读项目介绍开发环境核心技术环境搭建日志系统介绍1.为什么需要日志系统2.日志系统技术实现2.1同步写日志2.2异步写日志 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师&a…...
解决Oracle数据库中日期格式不识别的问题
在数据库开发中,我们经常需要处理日期和时间数据。当我们在Oracle数据库中执行UPDATE语句时,可能会遇到ORA-01821错误,该错误表示提供的日期格式无法被数据库识别。本文将介绍如何解决Oracle数据库中日期格式不识别的问题。 问题分析&#x…...
一生一芯13——linux设置环境变量
参考自https://baijiahao.baidu.com/s?id1753516015142083750&wfrspider&forpc 本机使用ubuntu22.04 目录 1. 读取环境变量1. 读取特定环境变量2. 读取所有环境变量 2. 设置环境变量1. 对当前用户有效2. root设置 1. 读取环境变量 1. 读取特定环境变量 在命令行中输…...
CSS笔记(黑马程序员pink老师前端)定位
定位可以让盒子自由的在某个盒子内移动位置或者固定在屏幕中某个位置,并且可以压住其他盒子。 定位 定位模式 边偏移 定位模式说明static静态定位,按标准流特性摆放,没有边偏移,很少用relative相对定位,相对自身原有位置移动,原有位置继续占有(不脱标…...
C高级Linux指令和shell脚本
XMind...
449. 序列化和反序列化二叉搜索树
难度:中等 昨天忘记做了。。。 简单学习一下官方题解 主要是:’ .join(map(str, arr)) int数组转String,中间有空格隔开 list(map(int, data.split())) String转int数组 class Codec:def serialize(self, root: TreeNode) -> str:arr […...
DockerCompose部署es和kibana
DockerCompose文件 version: 3.1 services:elasticsearch:image: elasticsearch:7.13.3container_name: elasticsearchprivileged: trueports:- "9200:9200"- "9300:9300"environment:- ES_JAVA_OPTS-Xms128m -Xmx1024m #设置使用jvm内存大小- cluster.na…...
windows系统docker中将vue项目网站部署在nginx上
一、首先在windows系统上下载并安装docker,要下载windows版本 https://www.docker.com/products/docker-desktop/ PS:安装过程中需要WSL,我的是win11系统,直接提示了我安装就可以下一步了。其他windows系统版本我不知道是否需要单…...
LabVIEW利用纳米结构干电极控制神经肌肉活动
LabVIEW利用纳米结构干电极控制神经肌肉活动 随着人口老龄化,长期护理的必要性变得更加重要,医疗中心的压力开始达到惊人的水平。全球对所有社会和经济部门的认识对于更好地协调卫生和社会服务之间的护理以及为更多的院外治疗提供条件至关重要。 关于医…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
