加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 将rails项目从MySQL迁移到MongoDB

发布时间:2020-12-17 03:58:50 所属栏目:百科 来源:网络整理
导读:我有一个正在开发的项目.我使用 mysql和ActiveRecord.看起来这个项目是很好的开始使用Mongoid适配器的MongoDB(我从未使用过). 将项目移至Mongo的最佳方法是什么?据我所知,我应该编辑我的模型(不是很重要),这就是全部? 如何将我的数据从Mysql数据库导出到Mo
我有一个正在开发的项目.我使用 mysql和ActiveRecord.看起来这个项目是很好的开始使用Mongoid适配器的MongoDB(我从未使用过).

将项目移至Mongo的最佳方法是什么?据我所知,我应该编辑我的模型(不是很重要),这就是全部?

如何将我的数据从Mysql数据库导出到Mongo?我刚试过yaml_db,但它对我没用.

第二个问题是如果我的系统崩溃,我应该如何保护我的Mongo数据库(据我所知,Mongo会将数据存储在RAM中).我的数据库写入/读取率为10%/ 90%.

解决方法

我最近做了类似的事情,并将其作为一个三步过程.可能有更多的Rails方法可以做到这一点,但这种方式对我有用并且无痛苦.

我使用了一种迭代方法,并利用了MongoDB实际上是一个非常关系友好的文档存储系统这一事实.我开始使用Mongoid的Relational Associations(页面底部)语法references_many和referenced_in进行关系设置.一旦工作正常,我会反复重构为更加面向文档的方法.

1.将现有数据库直接转储到MongoDB

我使用我现有的模型来强制将SQL表和数据转储到并行的MongoDB文档中.我只是抨击我所拥有的一切而不用担心命名或关系;表格到集合的严格1:1映射.

这对我来说是一次性的过程.一切都在这里,步骤2和3获取这些数据并将其转换为我想要的结构.我也可以改变我的模型,因为我不再需要与关系系统进行交互.如果您因任何原因需要返回此步骤,您可能需要创建现有模型的某种副本.

2.迁移数据

下一步我使用自定义ruby shell应用程序.使用Rails功能可能有更好的方法来实现这一点,但我采用了直接的事务脚本样式方法.

我使用raw MongoDB Ruby driver,读取在步骤1中创建的数据库,并将源集合转换为我想要的形状.我从步骤1中创建的目标使用了一个单独的数据库作为目标,因为我在步骤3中重构了我的模型,因此我迭代地修改了这个脚本以变得越来越面向文档.

3.根据需要重构模型

我重构了我的模型以对照在步骤2中创建的数据库运行,使我的测试通过,然后返回到步骤2中的脚本并进行更改以使数据库更加面向文档.

我重复了第2步和第3步,直到我重构了我的模型和文档布局,直到我得到最终结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读