2010-05-19 42 views
0

我有一个Rails应用程序,允许用户建立一个网络结构,然后询问有关如何浏览它的问题。如何在调用Rails Web服务之间共享预先计算的数据?

添加节点和连接时,这些只保存到数据库。在您查询网络时,我计算从任何节点到任何其他节点的最短路径。

在内存中构造这需要一段时间(我需要修复的东西),但一旦它存在,您可以立即得到任何这些路径问题的答案。

问题是......如何在网站调用之间共享此网络,因此每次请求都不会每次都重新生成路径网络?

注:我使用的乘客主办这次Apache服务器上(MOD红宝石)

的思考?

+0

我试过做一个全局变量..这是在Mongrel但不是阿帕奇的作品 – 2010-05-19 04:53:48

回答

1

你能使用memcached这个数据? (有关Rails缓存API,请参阅ActiveSupport::Cache::Store)。

+0

我从Jet的答案中找到答案。 Rails.cache.fetch(“network”){calculate_network}缓存结果..然后在配置文件中设置缓存方法让我可以跨线程共享缓存方法。 :) 多谢你们 – 2010-05-20 11:47:40

1

37个信号做的一种方式是在XGB上具有mysql/db缓冲区大小,并且在服务器上有大量RAM/FLASH存储器,这将缓存您的所有选择。

瑞安贝茨有一个屏幕投在那里,他解释了这些概念,包括数据库拆分 主从复制相当不错,它有助于您在长期运行;)

+0

您是否建议将计算出的路径存储在数据库中,以便它们可以查询。 (我知道你也在说让数据库缓存内存中的所有内容以提高性能)。这可以工作。每当我重新计算它们时,我都需要删除新路径表的内容。 – 2010-05-19 05:57:21

+0

不,只将它们存储在缓存中,它可以是MemCache或DB缓存或这两者的组合 这样,您最常访问的路径将可用,而无需点击数据库 – 2010-05-21 03:07:29