evolution for dynamic http content - noradle/noradle-oracle-server GitHub Wiki
dynamic http content service evolution
G1 step1 G2 step2 G3
CGI -------------> FCGI|LangContainers -----------> StoredProcedure
(JAVA|PYTHON|RUBY|PHP) (ORACLE PL/SQL)
step1
- process launcher -> pre-started server process, avoid process/thread startup/shutdown/switch
- local -> distributed
step2
进化到ORACLE存储过程来生产HTTP动态内容,有很多优势:
开发模式
- 各个存储过程可以互相调用,代码不用 include,import,非常方便
- 可以直接在IDE(如pl/sql developer)中模拟http请求环境,进行pl/sql servlet调试和单元测试
- 免去依照库表结构定义语言数据结构的麻烦,免去数据类型对照映射的麻烦,免去处理null的麻烦
- 二代(G2)模型要自己选择使用那种模板来渲染视图,noradle直接输出视图
- 二代(G2)模型要走网络通过db driver获取数据,然后再应用数据,需要管理和使用连接池,处理数据转换、处理异常,可能异步编程,noradle直接访问数据,没有上述麻烦
运行模型
- 进程模型:多进程、同步编程
- 内存管理:存储过程在 shared pool,数据在 db buffer,采用 LRU 算法回收,但是可以 pin 常用程序
- 组件模型:各个存储过程可以互相调用,代码不用 include,import,依赖关系自动维护,自动重新编译
- 部署:支持热升级存储过程
- 优化:非常容易定位到有问题的SQL所在的源码,调优容易,一体化