【发布时间】:2010-12-03 22:54:27
【问题描述】:
我想通过让应用程序将数据库视为服务来从应用程序层抽象出一个大型数据库存储(关系型,OLTP)。这样做的自然方法是调用 sprocs,但传统上它们遵循 CRUD 范式,并且与我的抽象思想保持一致,我想抽象出数据库中数据结构的所有知识并专注于业务流程。
所以不要让“保存发票”业务流程变成这样......
- 开始交易
- 创建发票抬头
- 对于发票行项目
- 创建发票行项目
- 提交事务
...相反,我想将代表发票的结构化数据传递到数据库中。
我可以传递包含发票的 XML 文档,但这是我希望在数据库端避免的:
- 解析 XML
- XML 验证
- 参数提取和绑定到 Oracle PL/SQL 对象中
偏离路线,在所有情况下,无论解决方案如何,都必须这样做。但是,我不想支付 XML 文档罚款(尖括号税)。
因此问题是 - 在 Oracle 存储过程中发送和接收数据以及将数据结构化的最有效方法是什么?
我想听听那些想要支持 JSON、ATOM 或其他格式的人的意见。
还可以考虑使用本机或二进制机制来实现这一点。在 Oracle 表(内存数据集)中构建和发送呢?有没有人这样做过?你的经历在哪里?
【问题讨论】:
-
尖括号税?它并没有他们希望你相信的那么糟糕,特别是如果你使用正确的技术......谷歌“最快的 XML 解析器”应该给你一个很好的起点