想到這個問題已經是有一段時間了,目前要啟動項目,所以又仔細想了一下。
django框架不同于j2EE,weblogic就是個很好的基于j2ee的應用服務器,里面有很多設施,都是常駐在內存的,這樣的服務器還有Tomcat之類的。
但我了解的django同php一樣采用平面數據庫來記錄用戶會話,狀態等信息,效率上沒有直接從內存中讀取的要快。而我的項目需求涉及的數據組織方式是樹形的嵌套結構的業務數據結構,雖然存放在平面的數據表中,但是在查詢的時候每一次都要多次的操作表記錄,效果很低。
例如: 會員表字段( 會員編號,介紹人編號,節點人編號),一個成員即可以是會員,也可以是介紹人或者是節點人,所以在一條記錄關聯到多條記錄或者被多次關聯,那在查詢的時候要列出 (會員名,介紹人名,節點人名),編寫的sql將比較繁瑣,如果寫成一條的話,可以用inner jion或者 select in的方式實現,但是由于數據庫內部要創建多個記錄緩沖來搜尋,導致效率極低。
不得不考慮在django外部開發獨立的應用服務程序,運行時加載會員表中的所有成員信息,并以指針的形式將這個會員拓撲樹表現出來,那在查詢檢索的時候根據id和會員名稱做個hash表,根據id直接定位到拓撲樹的節點上,這個節點的子幾點可以是指向介紹人、節點人節點的地址,那檢索的速度可以提高100倍。
就這么決定了,所以想著 django要與外部應用程序交互的問題,當然是想到了ice通信框架。
在mod_python配置參數中有一項:
PythonHandler django.core.handlers.modpython
modpython.py這個代碼只要修改了之后mod_python將重新加載,且這個模塊將常駐內存,好了,可以把他當做一個入口服務實例了,
ice的初始化就放在modpython.handler()函數內,通過request參數傳遞到調用的每個模塊內,
開心了!