用不同语言重写 web 应用,数据库如何导入?

2020-11-05 12:43:51 +08:00
 hambman
比如用 python, rails 写的应用,后期用 go, java 重写,已有的数据如何导入新的应用?

1 ) 重用数据库,新的应用里仔细定义数据,orm, 和原有数据库兼容
2 ) 新建数据库,重新建表,写程序导入原有数据

那一种方法比较常用?
2345 次点击
所在节点    程序员
11 条回复
janus77
2020-11-05 12:46:42 +08:00
数据库还会不兼容吗……不都是那几个
EminemW
2020-11-05 12:47:55 +08:00
?看需求
loliordie
2020-11-05 12:49:23 +08:00
看你结构有没有改过 比如说重写架构 有可能储存结构也改了 那需要导入

单纯重写的话 逻辑不改 当然可以直接重用
boris93
2020-11-05 12:49:39 +08:00
数据库跟应用又没关系
无非是再配置一次数据库连接罢了
hambman
2020-11-05 12:50:46 +08:00
@janus77 , 比如多对多的关联,或者数组字段,不同框架( ORM )有不同实现
@EminemW 需求是尽量简单的导入....
hambman
2020-11-05 12:53:05 +08:00
@loliordie 不同的语言会用到不同的 ORM, 具体说 flask (sqlalchemny) 迁移到 golang (gorm),
高级一些的数据库功能,比如多对多的关联,或者数组字段,不同 ORM 也许有不同实现。

想问问大家有没有遇到这个问题,或者是我多虑了?
hoyixi
2020-11-05 12:55:46 +08:00
顺序反了,你在开始重写的时候,首先是设计数据库,直接重用原有数据库?还是变更?然后才会重写应用。不然你写个啥
imycc
2020-11-05 12:58:43 +08:00
复用数据库的话按照之前的模型定义再写一层 ORM 就好了吧。如果是直接用 SQL 的甚至不用换。

如果是旧系统重构,原有的数据结构太乱了想换掉,那就重新设计吧。
kop1989
2020-11-05 13:30:31 +08:00
从我的实际理解看,是否重构数据结构和应用代码的重构 /重写完全没关系。
也就不存在你考虑得这个问题。

如果是仅仅探讨技术上的可能性的话,那就要先考虑数据结构是否继承,再考虑 dao (数据链路)的实现方式。而并不是反过来。

从技术上讲:一个成熟的技术语言生态,一定是有成熟的解决方案来适配绝大多数数据库,以及库表结构的。(前提是你的需求合理)
从软件工程上讲:数据结构是业务信息化实现的根基。非必要(不是因为业务变更,性能问题等)的数据库表结构的重新梳理,带来的副作用很大,工作量更是难以预期的。

所以完全没有必要因为你更换了应用 /业务层的代码实现,而去考虑是否重新梳理数据库。
snowhunter
2020-11-05 19:00:58 +08:00
@hambman 复杂应用还是裸写 sql 好。尽量不要用 ORM 的高级特性
hambman
2020-11-05 23:29:40 +08:00
@kop1989 👍 ,谢谢回复。
@snowhunter 赞同.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/722002

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX