在Apache模块中构建数据结构的最佳位置在哪里?

时间:2012-04-15 16:46:12

标签: c dijkstra apache-portable-runtime

我想开发一个在线路径搜索Web服务。它搜索图G中的路径,该路径花费两个顶点V1,V2之间的最小边缘距离和。

问题是 G非常大。它包含近1000万个边缘。

如果G足够小,可能很简单。我宁愿......

  1. 列出G中的所有边/顶点,它与某些RDB(例如MySQL或PostgreSQL)的关系。
  2. 在PHP中实现我自己的Web服务或在G
  3. 中搜索最短路径的东西

    我自己的PHP脚本将......

    1. 从RDB中选择所有边/顶点,使用PHP的类或虚数阵列构建G on-memory。
    2. 将Dijkstra算法应用于内存G,并回复最短路径。
    3. 由于以下原因,这种方法不适用于巨大的G。

      • 构建内存G需要很长时间。
      • 每个边缘使用大量内存。 PHP的对象很聪明,但现在不需要。

      这意味着构建的网络应该在搜索请求之前准备好内存,并且每个顶点/边缘对象应该更轻量化

      我决定在C中实现这项服务。我认为实现Apache模块比完全从头实现并发的高性能网络守护程序要容易得多(如果有更好的解决方案,我想知道关于它)。

      那么,我应该在哪里建立内存G?

      如您所知,Apache Web服务器是多线程,多处理守护程序。如果你开发了一个为每个进程构建内存G的愚蠢模块,它将在10个处理过的服务器的内存上构建近1亿条边(10个相同的结构)。

      我希望模块更智能,从每个进程共享1个单个内存G ,无论有多少进程在运行。

      您认为在Apache模块中构建数据结构的最佳位置在哪里?

0 个答案:

没有答案