我们公司喜欢计算模糊指标的报告 - 无法使用ActiveRecord的查找程序(find_by_sql除外)计算的指标以及ruport的基于ruby的功能太慢的指标。
是否有插件或gem或db适配器可以在数据库层进行大型计算?您创建复杂报告的解决方案是什么?
答案 0 :(得分:2)
虽然不是数据库不可知,但我们的解决方案是plpgsql函数,使用Ruby和ActiveRecord变得非常慢。
答案 1 :(得分:1)
Thoughtbot的Squirrel插件为ActiveRecord的find方法添加了许多Ruby-ish功能,具有多层条件,范围和嵌套模型关联:
www.thoughtbot.com/projects/squirrel /
答案 2 :(得分:1)
您的报告中是否有任何固有的内容阻止使用SQL视图或存储过程?
在一个特定项目中,我经常发现一种有用的技术是创建您的SQL查询(可能相当复杂)作为数据库中的命名视图,然后使用
YourModel.connection.select_all(query)
撤回数据。这不是一种最佳方法;我很想探索它的改进。
不幸的是,正如您所建议的那样,在rails中计算基于数据库的复杂报表的支持似乎相当有限。
答案 3 :(得分:1)
听起来好像你的桌子可以归一化。在我工作的一个地方,我们所做的规范化程度正在影响我们的报告需求,因此我们创建了一些影子表,其中包含一堆汇总数据,并对此进行了报告。
我同意Neil N的评论,这个问题有点模糊,但也许这会让你朝着正确的方向前进?
答案 4 :(得分:0)
如果您发现ActiveRecord缺乏复杂查询所需的表现力,您可能希望使用DataMapper或Sequel作为您的ORM。远离ActiveRecord并不是一个可能的决定,但至少可能值得研究。