Oracle 中的观察者模式

2024-01-20

我可以设置更改或添加表中某些行的钩子,并在发生此类事件时以某种方式收到通知吗?我发现了网络,但只被管道困住了。但是没有办法在发送管道消息时立即获取它。只有期刊尝试接收。


通常应该避免从数据库实现观察者模式。

为什么?它依赖于供应商专有(非标准)技术,促进数据库供应商锁定和支持风险,并导致一些膨胀。从企业的角度来看,如果不以受控方式完成,它可能看起来像“臭鼬工厂”——以不寻常的方式实现应用程序和集成模式和工具通常涵盖的行为。如果在细粒度级别实现,可能会导致微小的数据变化与大量不可预测的通信和处理紧密耦合,从而影响性能。机器中的额外齿轮可能是额外的断点 - 它可能对操作系统、网络和安全配置敏感,或者供应商技术中可能存在安全漏洞。

如果您正在观察由您的应用管理的交易数据:

  • 在您的应用程序中实现观察者模式。例如。在 Java 中,CDI 和 javabeans 规范直接支持这一点,并且按照 Gang Of Four 书进行的 OO 定制设计是一个完美的解决方案。
  • 可以选择向其他应用程序发送消息。过滤器/拦截器、MDB 消息、CDI 事件和 Web 服务对于通知也很有用。

如果用户直接修改数据库中的主数据,则:

  • 在您的应用程序中提供一个单一的管理页面来控制主数据刷新或
  • 提供单独的主数据管理应用程序并向相关应用程序发送消息或
  • (最佳方法)根据质量(审查、测试等)和时间安排(与代码更改相同)管理主数据编辑,通过环境进行推广,部署和刷新数据/重新启动应用程序到托管时间表

如果您正在观察由另一个应用程序管理的事务数据(共享数据库集成),或者您使用数据级集成(例如 ETL)来为您的应用程序提供数据:

  • 尝试让数据实体仅由一个应用程序写入(其他应用程序只读)
  • 轮询暂存/ETL 控制表以了解发生了什么/何时发生更改或
  • 使用 JDBC/ODBC 级专有扩展进行通知或轮询,正如 Alex Poole 的回答中提到的或
  • 将 2 个应用程序的重叠数据操作重构为共享 SOA 服务可以避免观察需求,或者将其从数据操作提升到更高级别的 SOA/应用程序消息
  • 使用 ESB 或数据库适配器调用应用程序进行通知或调用 WS 端点进行批量数据传输(例如 Apache Camel、Apache ServiceMix、Mule ESB、Openadaptor)
  • 避免使用数据库扩展基础设施,例如管道或高级队列

如果您使用消息传递(发送或接收),请从您的应用程序执行此操作。来自数据库的消息有点反模式。作为最后的手段,可以使用调用 Web 服务的触发器(http://www.oracle.com/technetwork/developer-tools/jdev/dbcalloutws-howto-084195.html http://www.oracle.com/technetwork/developer-tools/jdev/dbcalloutws-howto-084195.html),但是需要非常小心地以非常粗略的方式执行此操作,在一组数据更改时调用业务(子)流程,而不是处理细粒度的 CRUD 类型操作。最好触发作业并让作业在事务之外调用 Web 服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 中的观察者模式 的相关文章

  • 依赖注入容器——工厂模式

    我一直在尝试了解依赖注入 并一直在阅读并尝试编写一个类似于以下内容的小型依赖注入容器 http fabien potencier org article 12 do you need a dependency injection conta
  • 尝试在 android 中更新 sqlite 数据库时出错

    我的数据库正在运行 但我插入的所有记录都是为了检查目的 现在我想删除所有表并创建新表 所以我尝试通过更改版本来更新数据库 我没有对创建表查询进行任何更改 但外键约束失败 代码 787 这是我的DBHelper class private s
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin
  • 使 IPTC 数据可搜索

    我对 IPTC 元数据有疑问 是否可以通过 IPTC 元数据 关键字 搜索不在数据库中的图像并显示它们 我将如何执行此操作 我只需要一个基本的想法 我知道 PHP 有 iptcparse 函数 我已经编写了一个函数来获取画廊文件夹和所有子目
  • 将 MS-Access 表单结果导出到 Excel?

    我对 Access 有点陌生 我在将 MySQL 和 Oracle 与 PHP 集成以创建基于 Web 的数据库搜索引擎方面拥有一些经验 但我很难理解 Access 的某些概念 我有一个小型数据库 其中包含大约 200 个条目 每个条目有
  • 我应该安装哪个驱动程序才能使用 powershell 运行 mysqlcommand?

    我安装了 mysql 连接器 ODBC 5 1 8 来运行 sqlcommand 但出现此错误 Cannot find type MySql Data MySqlClient MySqlConnection make sure the as
  • 如何将UTF-8编码的汉字从MySql正确导出到SQL

    过去三天我们正在与严重的问题作斗争 我们从PhpmyAdmin导出MySql数据库文件 数据库条目中写入的数据是带有UTF 8字符集的中文 导出后将其转换为拉丁字符集 现在我们正在将此数据库SQl文件导入到其他主机 我们在UTF 8和排序规
  • SQLite 数据库安全

    我正在构建一个使用 Sqlite DB 的应用程序 用户可以将他们的信息输入数据库并检索它们 但是 我希望他们能够备份 sqlite 数据库 我所做的是将 sqlite 数据库放入文档文件夹中 以便他们可以使用 iTunes 将其检索出来
  • Android spinner 将多列(连接)Sqlite 数据库加载到表中

    我正在学习如何创建一个从 SQLite 加载下拉列表的微调器 我有一个由旋转器和表格组成的用户界面 如果用户单击微调器 表的内容将根据微调器上选定的 ID 根据数据库加载 如果未选择名称 它将加载表中的所有内容 但是我找不到如何根据微调器上
  • Oracle Text 包含单字符索引搜索不起作用

    我有一个名为 index search 的简单表 创建如下 BEGIN ctx ddl create preference my pref BASIC WORDLIST ctx ddl set attribute my pref SUBST
  • Oracle 函数中的加密/解密密码

    由于以前设计不佳的结构 我必须使用的当前数据库将用户密码存储为文本 现在 我正在构建一个必须使用这些密码的前端部分 我当然不想发送未加密的密码 我的想法是编写一个 Oracle 函数来加密和解密文本密码 并在存储过程中使用这些函数来返回加密
  • Oracle sqlldr是否并行处理多个INFILE

    我正在使用 sqlldr 将数据加载到 Oracle RAC 在 Linux 上 并且我正在尝试提高数据加载的性能 我正在使用 直接路径 并且为 sqlldr 设置了 parallel true 而且 由于我的服务器是多核的 所以默认情况下
  • Firebase 查询 - 查找包含字符串的子项

    我在使用 Firebase 查询时遇到了一些问题 我想查询对象 其中对象子值包含特定字符串 到目前为止 我有一些看起来像这样的东西 Firebase ref Firebase alloc initWithUrl https dinosaur
  • 如何使用PowerShell批量调用Update-Database

    我们使用 Azure 弹性池生成多个客户端数据库和一个引用客户端数据库的主数据库 我们已经拥有多个数据库 并且正在开发新版本的代码 我们使用 EF6 代码优先 当我们更改模型 添加属性 时 我们创建迁移文件并需要调用Update Datab
  • 无法使用symfony2连接数据库oracle

    我需要的 我需要将oracle数据库与symfony2连接 我已经通过 php m 检查过 oci8 pdo odbc odbc 这是我关注的链接https gist github com johnkary 6481664 https gi
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • 如何在oracle sql查询中提取括号之间的字符串

    我正在尝试从字符串中提取括号之间的值 我怎样才能做到这一点 例如 我有这个字符串 Gupta Abha 01792 我想得到括号之间的结果 即 01792 我正在尝试编写这样的查询 select substr Gupta Abha 0179
  • F#:模式构成?

    我正在尝试编写一个由另外两个模式组成的模式 但我不确定如何去做 我的输入是字符串列表 文档 我有一个与文档标题匹配的模式和一个与文档正文匹配的模式 该模式应该匹配整个文档并返回标题和正文模式的结果 您可以使用以下命令一起运行两个模式 您在问
  • GoLang - 坚持使用 ISO-8859-1 字符集

    我正在开发一个项目 我们需要将信息保存在具有 ISO 8859 1 表的旧数据库中 因此 在向数据库写入内容之前 我需要将其从 UTF 8 转换为 ISO 8859 1 每次从数据库检索它时 我都需要将其转换回 UTF 8 我试图使用图书馆
  • 检索使用 Uniqueidentifier 插入的最后一行,它不是 IDENTITY

    我对一个查询感到困惑 我需要找出表中添加的最后一行 其中有一列数据类型为 Uniqueidentifier 列是 aspnet Applications ApplicationId 注意 该列是Uniqueidentifier 它不是IDE

随机推荐

  • 如果我使用 AJAX,文件上传过程中的 HttpPostedFile 为 NULL

    我在我的 asp net MVC 项目中使用文件上传功能 它运行得很好 直到我开始在我的页面上使用一些 AJAX 功能 Ajax 页面上的 HttpPostedFile 始终为 NULL 如何在我的页面上调用ajax来解决这个问题 因为你无
  • 使用 nls() 进行非线性拟合在初始参数估计时给出奇异梯度矩阵。为什么?

    这是我第一次尝试在 R 中拟合非线性模型 所以请耐心等待 Problem 我试图理解为什么nls 给我这个错误 Error in nlsModel formula mf start wts singular gradient matrix
  • 如何在 Rust 中编写函数?

    我正在尝试编写一个由两个函数组成的函数 最初的设计非常简单 一个函数接受两个函数并返回一个组合函数 然后我可以将该函数与其他函数组合 因为 Rust 没有剩余参数 我遇到了用令人沮丧的无用编译器错误构建的墙 我的撰写功能 fn compos
  • PHP exec() vs system() vs passthru()

    有什么区别 每个功能是否有特定的情况或原因 如果是 您能举一些这些情况的例子吗 PHP net 说它们是用来执行外部程序的 参见参考资料 http php net manual en function exec php从我看到的例子来看 我
  • 多个dex文件定义了/BuildConfig,找不到原因:

    我正在使用新的 gradle 构建系统 但面临以下问题 UNEXPECTED TOP LEVEL EXCEPTION com android dex DexException Multiple dex files define Lcom k
  • 检查一个字符串是否与另一个字符串相似[重复]

    这个问题在这里已经有答案了 我做了一些研究 发现一些主题会检查一个字符串是否是字符串中的子字符串 并选择与指定字符串最接近的字符串 但是我如何检查一个字符串是否与另一个字符串相似并提供真 假反应 IE String 1 JAVA IS A
  • djangorest框架列表查询由于日期格式而自定义json数组结果响应

    我有这个 Django REST API 我想自定义 json 响应的列表查询结果 原因是日期格式和可能的其他格式 这是 Rest API 问题是 create at 我希望它的格式如下 Y m d H M 以下代码没有任何格式 它只是列出
  • 遛树,父母先行

    访问链接树的所有节点 所有节点都有对父节点和所有子节点的引用 根节点将 null 作为父节点 的最佳方法是什么 以便在其任何祖先之前不会访问任何节点 非递归的布朗尼点 伪代码 NodesToVisit some stack or some
  • 使用 Android Studio 0.4.0 的渲染问题

    在使用 Eclipse 一段时间后 我最近决定尝试一下 Android Studio 我的主要活动 xml 在 Eclipse 上渲染正常 但 Studio 似乎有问题 它在预览窗口中报告此情况 渲染问题 java lang StackOv
  • scala泛型函数返回类型

    我尝试编写一个具有通用返回类型的函数 但除非我强制转换返回类型 否则它不起作用 请看函数getSomething 下面我预计它无需铸造即可工作 我在这里可能做错了什么 trait Sup class Sub extends Sup def
  • 如何使用 jQuery 触发自定义事件?

    我将自定义事件处理程序附加到body在 jQuery 中ready method 随后我立即trigger自定义事件 但似乎什么也没有发生 function body on test function alert test triggere
  • 如何将外部JS文件加载到moodle中?

    如何将外部JS文件加载到moodle中 使用moodle api 即moodle库 在Moodle 2 0中我一直使用 PAGE gt requires gt js 首先 使 PAGE通过执行以下操作可用于您的代码 require once
  • Chisel 中的 <> 运算符是什么?

    Chisel 教程使用了看似 lt gt 运算符 对我来说完全陌生 它有什么作用 还有 它从哪里来 该运算符在其他 Scala 库甚至其他语言中是否有约定的含义 以下是 Chisel Generator Bootcamp 练习第 3 2 节
  • 注册时创建子域

    我正在建立一个网站 企业可以在其中注册自己的帐户 该帐户应位于http businessname example com http businessname example com 企业名称 每次都在变化 我想在 Windows 服务器 I
  • 身份验证模式=“表单”导致 WCF 端点出现错误

    我的 NET 4 0 Web 应用程序项目中有一个 WCF 端点 使用VS2010 WCF测试客户端 我可以正确连接到该服务 但是 当我使用该服务时 我收到一条通用错误消息 内容类型text html 响应消息的 charset UTF 8
  • 在 XDebug 会话中 cURL 到 self

    我正在使用 XDebug 在 Eclipse 中调试 PHP 应用程序 应用程序通过 cURL 调用自身内部的 HTTP API Current protocol server port URL http SERVER SERVER NAM
  • 为 Firefox 签署基于 XUL 的附加组件

    是否可以对基于 XUL 的 Firefox 附加组件进行签名 或者只能使用新的 SDK 进行签名 所有扩展 无论是Overlay https developer mozilla org en US Add ons Overlay Exten
  • Pylint 错误检查可以定制吗?

    我正在使用 pydev 我已经设置了 pylint 问题是 即使在评论中 pylint 也会报告警告 我希望禁用任何行或块注释内的任何类型的检查 另外 我希望遵循驼峰命名约定 而不是代码中变量和参数的下划线 有没有办法指定这样的规则 而不用
  • 使用转义引号解析 JSON 时出错

    当我从浏览器调用 URL 时 我收到以下 json 对象 我希望其中没有数据 data SkipToken top 然而 当我尝试用 javascript 调用它时 它给了我error Parsing Json message dspser
  • Oracle 中的观察者模式

    我可以设置更改或添加表中某些行的钩子 并在发生此类事件时以某种方式收到通知吗 我发现了网络 但只被管道困住了 但是没有办法在发送管道消息时立即获取它 只有期刊尝试接收 通常应该避免从数据库实现观察者模式 为什么 它依赖于供应商专有 非标准