【发布时间】:2013-04-07 03:40:03
【问题描述】:
在过去的 1.5 年里,我一直在 Rails 中工作(我的意思是认真工作)。来自 .Net 背景和数据库/OLAP 开发,我喜欢 Rails 的很多地方,但很少有对我来说没有意义的地方。我只需要澄清一个这样的问题。
我一直在研究一家教育机构的录取流程,这只是更大的申请中的一小部分。现在,对于管理员,我们需要显示所有申请/注册学生的列表(范围可能从 1000 到 10,000),并提供一种将它们导出为 excel 文件的方法。目前,我们只专注于以 CSV 格式导出。
我的问题是:
Rails 是不是要同时显示这么多记录?
will_paginate 是在 Rails 中对记录进行分页的唯一方法吗?据我了解,它仍然从数据库中获取所有记录,然后有选择地显示相关记录。回到 .Net/PHP/JSP,我们曾经创建存储过程并从那里有选择地返回相关记录。既然使用存储过程是 Rails 中的一个已知问题,我们还有哪些其他选择?
导出此数据时同样的问题。我对流程进行了基准测试,即在服务器接收请求、执行查询和响应返回。 ActiveRecord 的创建非常耗时。那是为什么?只有大约 1000 条记录,并且页面显示用户的连接超时。我的意思是,如果在处理 1000 条记录时连接超时,那么为什么要使用 Rails,或者这意味着 Rails 不适用于此类应用程序。我以前处理过 TB 的数据,从来没有遇到过这个问题。
我从不了解 ORM 技术的核心。假设我们有一个表
users,并且与多个其他表相关联,但是为了显示记录,我们只需要来自表users及其关联表admissions的数据,然后它实际上是否为其所有关联的表创建对象表。我知道,只有我们使用关联才会获取数据,但它会预先创建所有对象吗?
我希望,这些问题不是独立的,并且符合 SF 的指导方针。
谢谢。
编辑:有什么帮助吗?我重新检查并再次进行基准测试,对于 1000 条记录,我们正在加入 4-5 个不同的表(1000 个用户、2-3 个一对一关联和 2-3 个一对多关联),它是创建超过 15000 个对象。这是为了急切加载。至于延迟加载,它将是 1000 个用户查询加上一些 20+ 查询)。对于此类问题和应用,还有哪些其他可能的选择?我知道,我有点想再次提出这个问题!
【问题讨论】:
-
有什么帮助吗?我重新检查并再次进行基准测试,对于 1000 条记录,我们正在加入 4-5 个不同的表(1000 个用户、2-3 个一对一关联和 2-3 个一对多关联),它是创建超过 10000 个对象。这是为了急切加载。至于延迟加载,它将是 1000 个用户查询加上大约。 10 个额外的查询)。对于此类问题和应用,还有哪些其他可能的选择?我知道,我有点想再次提出这个问题!
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord