大家在工作中是否都用数据迁移?

以前用其他框架的时候,从来没使用过数据迁移,现在学习 Laravel,想知道大家在工作中是否都使用数据迁移

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

公司项目绝不可能让你用,让你用的公司要不就没有好的技术 leader,要不就没有啥规模。

几个场景如下

  • 分表规则通过 migrate?每天新增表跑你的 migrate?一定是 dba 做的。
  • 还是分表,分表的数据表你 migrate 添加字段?索引?
  • 归档表,单表 3kw 以上生产数据库你一个 migrate 就开始跑 DDL 了?
  • 你一个 migrate 里一会儿 addColumn,一会儿 dropColumn,你猜 dba 会不会揍你(不骂,直接动手)
  • 上线流程,先执行 migrate 还是先同步代码?
  • 还是上线流程,有错误需要撤回当前版本,代码已经紧急撤回了你的 migrate 呢怎么回滚?
  • 最后,还是上线流程,你们家 dba 允许开发染指数据库?

migrate 这种东西只能用于本地开发或者小项目跑跑或者单元测试给 memory sqlite 用。

1年前 评论
mshx 1年前
goodgood 1年前
TalentMiao 1年前
fansheng 1年前
cevin (作者) 1年前
yzbfeng 1个月前
cevin (作者) 1个月前
cevin (作者) 1个月前
yzbfeng 1个月前
讨论数量: 48

公司项目绝不可能让你用,让你用的公司要不就没有好的技术 leader,要不就没有啥规模。

几个场景如下

  • 分表规则通过 migrate?每天新增表跑你的 migrate?一定是 dba 做的。
  • 还是分表,分表的数据表你 migrate 添加字段?索引?
  • 归档表,单表 3kw 以上生产数据库你一个 migrate 就开始跑 DDL 了?
  • 你一个 migrate 里一会儿 addColumn,一会儿 dropColumn,你猜 dba 会不会揍你(不骂,直接动手)
  • 上线流程,先执行 migrate 还是先同步代码?
  • 还是上线流程,有错误需要撤回当前版本,代码已经紧急撤回了你的 migrate 呢怎么回滚?
  • 最后,还是上线流程,你们家 dba 允许开发染指数据库?

migrate 这种东西只能用于本地开发或者小项目跑跑或者单元测试给 memory sqlite 用。

1年前 评论
mshx 1年前
goodgood 1年前
TalentMiao 1年前
fansheng 1年前
cevin (作者) 1年前
yzbfeng 1个月前
cevin (作者) 1个月前
cevin (作者) 1个月前
yzbfeng 1个月前

用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!超大声

1年前 评论
v_cszhang (楼主) 1年前

用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!超大声

1年前 评论
v_cszhang (楼主) 1年前

至少我不用,A 分支和 B 分支同时修改数据库上线可能会有一定的麻烦,看文档会写就行了,用的时候现看文档,没必要浪费时间。

1年前 评论
喝卵形 1年前
goStruct

人多的时候用这个很不方便,除非个人开发。

1年前 评论

这东西可用可不用,因为在国内大多都是要求效率不要质量的,所以来回改迁移文件没直接改数据库简单

1年前 评论

个人项目会用 公司项目看公司规定

1年前 评论

第一家公司一直在用,个人习惯后觉得很方便,后面公司都没有用,都是直接修改数据库然后记一下 sql, 个人觉得不方便

1年前 评论

公司项目绝不可能让你用,让你用的公司要不就没有好的技术 leader,要不就没有啥规模。

几个场景如下

  • 分表规则通过 migrate?每天新增表跑你的 migrate?一定是 dba 做的。
  • 还是分表,分表的数据表你 migrate 添加字段?索引?
  • 归档表,单表 3kw 以上生产数据库你一个 migrate 就开始跑 DDL 了?
  • 你一个 migrate 里一会儿 addColumn,一会儿 dropColumn,你猜 dba 会不会揍你(不骂,直接动手)
  • 上线流程,先执行 migrate 还是先同步代码?
  • 还是上线流程,有错误需要撤回当前版本,代码已经紧急撤回了你的 migrate 呢怎么回滚?
  • 最后,还是上线流程,你们家 dba 允许开发染指数据库?

migrate 这种东西只能用于本地开发或者小项目跑跑或者单元测试给 memory sqlite 用。

1年前 评论
mshx 1年前
goodgood 1年前
TalentMiao 1年前
fansheng 1年前
cevin (作者) 1年前
yzbfeng 1个月前
cevin (作者) 1个月前
cevin (作者) 1个月前
yzbfeng 1个月前

doctrine 的 enentity 管理数据库最方便了

1年前 评论

不是很好用,最开始是每个人自己本地的数据库使用,后面干脆只记录每次开发需要变更的 sql 语句,共用同一个测试数据库,生产环境 将记录的变更 sql 语句发给 DBA 或者你的 leader

1年前 评论
sanders

:sweat_smile: 我们也在用哈,可能是公司规模太小了,没有运维组,也没有 DBA。基本上几个骨干工程师都能兼任一部分,我收集并撰写迭代发布文档并负责发布上线。

其实还是跟各个团队的发布流程相关,肯定不是所有人都有生产环境账号的,有账号的人要分配权责,负责好自己承担的任务。

置于具体细节,是否可以执行回滚,那其实是发布细节的问题。一般是不执行回滚的,因为非常麻烦,需要制定相应的回滚方案。执行迁移也不都是随部署执行的,比如发布前需要搞清楚,新的代码是否兼容旧版本数据库结构,如果完全兼容便可放心的执行部署后迁移。否则,我们会先升级一个维护专用的 POD (我们这里用的 k8s 集群),在这个 POD 容器中执行迁移和其他需要在部署代码前完成的准备工作,然后在升级整个集群。

1年前 评论
cevin 1年前

不是太懂这个 "最佳答案"

1年前 评论
徵羽宫 1年前
v_cszhang (楼主) 1年前

可能我水平不行吧,没去过什么大公司,干过两三家公司都没有专人维护数据库。 甚至 leader 也不太操心,我做的功能模块是怎么实现的,怎么样的表设计, 功能优化之后对数据表有没有修改。基本上如果我忘了数据表有过那些修改,没有人能替我想起来, 所以我用 migrate 。

而且我感觉 migrate 真的方便测试, 比如我本地开发好了,我测试环境一拉代码, php artisan migrate 就能进行测试了。如果测试环境没问题, 生产环境和测试环境都是同样的迁移文件必然也没问题。 如果没有 migrate, 除非我每次测试环境测试前,都从生产环境备份一个数据库下来,然后再运行这一次修改的 SQL 语句。 不然我就总疑心测试环境的数据库和线上环境的数据库到底一致不一致。

1年前 评论
徵羽宫 (作者) 1年前
v_cszhang (楼主) 1年前
徵羽宫 (作者) 1年前
徵羽宫 (作者) 1年前
v_cszhang (楼主) 1年前
徵羽宫 (作者) 1年前
徵羽宫 (作者) 1年前
徵羽宫 (作者) 1年前

团队合作开发的时候,migration 还是很重要的,不然一会新增个表字段,没有提交记录对其他开发人员来说很麻烦

1年前 评论
nff93

同样不是很懂这个最佳答案,咋一上来就是分库分表、公司配专业 DBA、3KW 数据

1年前 评论
cevin 1年前
v_cszhang (楼主) 1年前

小团队;navicat 自带的结构同步,每次上线对比下,感觉挺好的

1年前 评论
QIN秦同学
技术永远是为了业务服务的。单纯炫技没个鸟用。
想当年刚入职小公司,那是前后端一把搂,这时候别说你跑migrate,你直接在线上改,都没人管。老板只是一句话,好了没,能用了吗?上次说的功能开发完了 吗?
后续公司搞到钱了,各种人员都到位了。你还想一把搂?运维、DBA、测试、产品、那不上来一把搂你?
有钱大家一起赚,你都搞了。别人怎么活。哈哈!!!
最后:没人管你的时候,就证明这个可行。

现在我们流程:
1、项目中必须要写 migration 文件,便于接手者了解和上手。
2、相应的 SQL 改动在自动运维平台上提交工单、
3、必须3人审核,直属领导、技术二把手、DBA点确认后,自动执行。【其实真正起作用的是 自己和直属领导】
1年前 评论
v_cszhang (楼主) 1年前

用吧 对自己方便点 其实很多程序员接触不到那么有规模的公司的 可能是我去的都比较 low 都用 migrate 不用还要被说。而且都用 rds,感觉没那么多问题。
再换句话说,真的有公司那么啰嗦的话,你也可以用啊,大不了转换城 sql 语句交给对方,migrate 看起来还是要规范点的

1年前 评论
v_cszhang (楼主) 1年前

个人项目和几个人的小公司用,大公司有 DBA 了一般就不用了,千万级数据直接对字段还有索引操作是很致命的,我就干过这事,数据库卡死,也连接不进去,业务停了十几分钟

1年前 评论
QIN秦同学 1年前
xiusin 1年前

不用 ,感觉不可控。sql 有专门仓库管理。

1年前 评论

小项目我都是直接使用 navicat 数据库对比,没用过这个。以前在一家大点的公司有运维人家直接不让我动,我只负责给 sql。而且项目是多语言开发,项目还有 Java 的接口和 C++ 的接口。

1年前 评论