Ruby on rails 复杂算法的计算应该在哪里进行
背景:Ruby on rails 复杂算法的计算应该在哪里进行,ruby-on-rails,hadoop,scalability,mahout,Ruby On Rails,Hadoop,Scalability,Mahout,背景: 我是一名软件工程专业的学生,我正在研究几种推荐系统的算法。其中一种算法,协同过滤有很多循环,它必须经过所有用户,每个用户对电影或其他应评项目的所有评分。 我正在考虑在ruby上为rails应用程序实现它 关键是要处理大量数据,因此: 这应该在数据库中完成吗?使用常规查询?使用PL/SQL或类似的东西(测试dbs非常耗时和困难,特别是对于这类算法) 我应该做一个后台工作来缓存算法的结果吗?(如果是这样,数据在内存中进行处理,如果有数百万用户,这种扩展性如何) 我应该在每次有请求或每次x请求
我是一名软件工程专业的学生,我正在研究几种推荐系统的算法。其中一种算法,协同过滤有很多循环,它必须经过所有用户,每个用户对电影或其他应评项目的所有评分。 我正在考虑在ruby上为rails应用程序实现它 关键是要处理大量数据,因此:
我知道有些东西可以做到这一点,比如ApacheMahout,但它们依赖Hadoop进行扩展。还有别的出路吗?ruby是否有类似于Mahout或机器学习的工具?如果有,计算是如何进行的?以下是我对每种方法的看法:
希望这有帮助,也有意义(我知道我的英语不是很好),但是如果我误解了什么或者你有更多的问题,请随时提问。这不会直接回答你的问题,但可能会有帮助:回答得很好,谢谢。但是,如果计算预计是“快速”的,即必须对全球客户正在进行的所有个人购买进行操作的实时仪表盘,会发生什么情况?数据不能在后台线程上缓存或处理,那么怎么做呢?所有这些计算都需要快速,还是有些计算比其他计算更重要?还有,是几次大的计算还是一次又一次的计算?我心里并没有什么特别的问题,但基本上,如果不需要实时计算,你可以在后台工作中进行计算,并缓存或持久保存结果。但是,当需要快速的结果时,例如股票市场或相关市场,你能做什么?也许这是无关的,但StumbleUpon(我认为)是一个类似的场景:他们根据你和你朋友的喜好计算你的下一次绊倒,并在每次绊倒时推荐更精确的内容。假设每次你“喜欢”某样东西时,他们确实会重新计算你的下一次绊倒,这还会在后台进行吗?简短回答:是的!长句回答:如果你将后台作业作为一种工具来实现,它可能会非常快。例如,在sidekiq github网站上,他们是否警告您后台作业处理速度太快,如果由“创建后”触发,数据库查询甚至不会在处理之前完成,这可能会导致错误。我会更新我的答案来解释更多。谢谢@joklan的帮助。我已经接受了你的答案,但如果你能为此改进答案,那就太好了