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所在的源码,调优容易,一体化