gpt4 book ai didi

ruby-on-rails - 在 Rails 3 中从 SQl 切换到 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 09:56:32 24 4
gpt4 key购买 nike

我正在考虑将一个相当大的应用程序 (Rails 3.0.10) 从我们的 SQL 数据库(SQLite 和 Postgres)切换到 MongoDB。我打算把所有的东西都放在里面,主要是utf-8字符串,二进制文件和用户数据。 (也许还有一点全文搜索)我有复杂的关系(网络结构:类别、标签、翻译......,还有多态)我觉得 MongoDB 的理念是避免这种情况并将所有内容放在大文档中,我是对的?

有人在 Rails 中使用过 MongoDB 吗?特别是将应用程序从 ActiveRecord 切换到 Mongoid ?你认为这是个好主意吗?您知道学习 MongoDB 组织复杂数据的方法的指南/文章吗?

ps:在 MongoDB 中,我特别喜欢它的架构和性能导向所提供的自由。考虑转换是我个人的主要动机。

最佳答案

我将 mongodb 与 mongoid 一起使用了 5-6 个月。还使用过 postgres + AR、MySQL + AR。没有将 AR 转换为 mongoid 的经验。

您是否遇到任何性能问题或预计很快就会遇到这些问题?如果不是,我会建议避免切换,因为这个决定似乎只是基于 Mongodb 的冷静因素。

他们都有自己的优点和缺点,我喜欢 mongodb 的速度,但是你可以做什么来实现它有很多限制(比如没有连接,没有事务支持和慢速字段与字段(updated_at > created_at)查询)。

如果有性能问题,我还是建议坚持使用现有系统,因为切换可能是一项艰巨的任务,最好花一半时间优化当前系统。看完这个问题,我觉得你以前从未使用过 mongodb,有很多东西可以咬你,你不会完全意识到如何解决它们。

但是,如果您仍然坚持切换,则需要仔细评估您的数据结构和查询方式。在关系数据库中,你有范式,它的优点是无论你从什么结构开始,一旦你进行了规范化,你将得到大致相同的最终结果。在 mongodb 中,您可以通过几乎无限的方式对文档进行建模。您需要仔细建模您的文档以利用 mongodb 的优势。您需要运行的查询以及您要存储的实际数据在您的结构化中起着非常重要的作用。

请记住,您在 mongodb 中没有连接(可以通过良好的建模来缓解)。截至目前,您不能有类似 field1 = field2 的查询,即您不能比较字段,但需要提供一个文字来查询。

看看这个问题:Efficient way to store data in MongoDB: embedded documents vs individual documents .有人将 OP 指向建议使用嵌入式文档的讨论,但在非常相似的情况下,OP 选择使用独立文档,因为他将使用查询来获取数据。

我想说的是,这应该是一个明智的决定,应该在你用 mongodb 完全建模你的系统之后做出,用一些真实数据进行一些性能测试,看看 mongodb 是否能解决你的问题,而不应该是基于凉爽系数。

更新:

您可以使用 $where 子句来执行 field1 = field2,但速度较慢,建议避免。

关于ruby-on-rails - 在 Rails 3 中从 SQl 切换到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7189473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com