我过去1。5年来一直在Rails工作(我的意思是认真工作)。来自.Net背景和数据库/ OLAP开发,我喜欢Rails的很多东西但是关于它的一些事情对我来说没有意义。我只需要澄清一个这样的问题。
我一直致力于教育机构的录取程序,这只是更大规模应用程序的一小部分。现在,对于管理员,我们需要显示所有已申请/已注册学生的列表(范围从1000到10,000),并且还提供将其导出为excel文件的方法。目前,我们只关注以CSV格式导出。
我的问题是:
Rails是否意味着同时显示如此多的记录?
will_paginate只能在Rails中对记录进行分页吗?据我所知,它仍然从DB获取所有记录,然后有选择地显示相关记录。回到.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多个查询)。这些问题和应用的其他可能选择是什么?我知道,我有点碰到这个问题再次登顶!答案 0 :(得分:0)
Rails可以使用TB数据处理数据库。
will_paginate只能在Rails中对记录进行分页吗?
还有很多其他宝石,比如“kaminari”。
它从db中获取所有记录..
NO。它不会那样工作。例如,使用以下查询Users.all.page(1).per(10)
User.all不会触发db查询,它将返回一个代理对象。然后在代理上调用page(1)和per(10)(ActiveRecord :: Relation)。当您尝试从代理对象访问数据时,它将执行数据库查询。活动记录将累积您传递的所有条件和参数,并在需要时执行SQL查询。
转到rails控制台并键入u= User.all; "f";
(第二个语句:“f”,是为了防止rails控制台在代理上调用to_s来显示结果。)
它不会触发任何查询。现在尝试u[0]
,它会触发查询。
ActiveRecord创作正在进行一段时间
1000条记录不应该花费太多时间。