database – Oracle中的Observer模式
我可以在更改或添加表中的某些行时设置挂钩,并在此类事件被调整时得到通知吗?我发现网络,只是卡在管道上.但是在发送时无法立即获取管道消息.只有期刊才会收到.
通常应避免从数据库实现Observer模式.
为什么?它依赖于供应商专有(非标准)技术,促进数据库供应商锁定和支持风险,并导致一些膨胀.从企业的角度来看,如果不是以受控的方式完成,它可能看起来像“skunkworks” – 以一种不寻常的方式实现应用程序和集成模式和工具通常涵盖的行为.如果在细粒度级别实现,则可能导致与微小数据更改的紧密耦合,同时存在大量不可预测的通信和处理,从而影响性能.机器中的额外齿轮可能是一个额外的突破点 – 它可能对O / S,网络和安全配置很敏感,或者供应商技术中可能存在安全漏洞. 如果您正在观察应用管理的交易数据: >在您的应用中实施Observer模式.例如.在Java中,CDI和javabeans规范直接支持这一点,根据Gang Of Four书的OO定制设计是一个完美的解决方案. 如果用户直接修改数据库中的主数据,则: >在您的应用程序中提供单一的管理页面来控制主数据刷新OR 如果您正在观察由另一个应用程序管理的事务数据(共享数据库集成),或者您使用数据级集成(如ETL)为您的应用程序提供数据: >尝试让数据实体只由一个应用程序编写(其他人只读) 如果您使用消息(发送或接收),请从您的应用程序执行此操作.来自DB的消息传递有点像反模式.作为最后的手段,可以使用调用Web服务的触发器(http://www.oracle.com/technetwork/developer-tools/jdev/dbcalloutws-howto-084195.html),但需要非常小心地以非常粗略的方式执行此操作,在一组数据更改时调用业务(子)进程,而不是处理细粒度CRUD类型的操作.最好触发作业并让作业在事务之外调用Web服务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |