SQL Server 代理使用 SQL Server 来存储作业信息。作业包含一个或多个作业步骤。 每个步骤都有自己的任务。例如,备份数据库。
SQL Server 代理可以按照计划运行作业,也可以在响应特定事件时运行作业,还可以根据需要运行作业。
例如,如果希望在每个工作日下班后备份公司的所有服务器,就可以使该任务自动执行。 将备份安排在星期一到星期五的 22:00 之后运行,如果备份出现问题,SQL Server 代理可记录该事件并通知您。
使用数据库客户端和数据库服务器之间的连接作为利用点。
顾名思义,智能数据库代理位于数据库客户端和数据库服务器(SQL或NoSQL)之间。它可以观察和修改客户端和服务器之间的网络流量,而不必对任何一端进行任何更改,因为代理在网络协议级别工作。
代理的"智能"部分是它可以对此流量执行自定义逻辑,使您可以完全控制它。这使得代理成为所有数据库客户端的潜在控制点。
使用智能数据库代理通常有三个原因:
根据定义,代理可以看到进入和来自数据库的所有内容。通过观察这种流量可以学到很多东西。这用于入侵检测,商业智能,性能分析等...
还有其他方法可以观察数据库的活动,例如监视接口和日志监视,但它们通常需要对数据库的特殊访问权限,并且它们可能会给数据库带来一些负载。代理对数据库服务器没有影响,可以在没有对数据库的特殊访问权限的情况下放置,并且可以独立扩展。
大多数数据库系统都有一定程度的访问控制,但它们通常是在语义级别:您可以访问此数据,但不能访问该数据。但有时你需要拒绝某些请求的能力,因为它们效率低下,或者因为它们在一天中的错误时间出现,或者出于任何原因。
一个简单的应用是基本的查询控制,但它也可以包括拒绝某些连接,速率限制,重定向连接等...
由于数据库代理可以完全控制数据库客户端和数据库服务器之间的网络流量,因此它还可以修改此流量。
例如,可以重写低效的查询,以便在到达数据库之前提高效率。
同样,可以在返回数据库客户端的过程中动态修改结果集。这对于细粒度控制(如自定义数据屏蔽、数据分类强制实施等)特别有用。
智能数据库代理本身不是解决方案:它是一个使您能够创建解决方案的平台。每种情况都是独一无二的,但大多数用途都属于几个广泛的用例。
智能数据库代理最常见的用例是,当您需要更改应用程序与数据库交互的方式,但无法更改该应用程序时,通常是您无法控制的第三方应用程序或不再维护的应用程序。
这是最常见的用例,因为没有其他选择:要么就是那个,要么放弃应用程序。
实际上,这通常是一件相当简单的事情:您在代理中设置了一个过滤器来捕获某个请求并将其替换为另一个请求。在大多数情况下,替换请求在逻辑上等效于它所替换的请求,因为它需要产生应用程序可以使用的内容。例如,这可能意味着改写查询以提高效率或行为不同,或者更改数据库不再支持的语法或功能。
在某些情况下,您甚至可能更改请求,使其返回错误消息(例如,"此数据不可用"),空结果集,甚至是来自其他数据源的数据集。
这是请求修改的镜像。在某些情况下,您可能需要以修改请求难以或不可能的方式更改某些查询返回的数据。您可能需要更改大型结果集中的一个值,或者转换货币,或者以数据库不支持的方式屏蔽某些值。无论原因是什么,代理都使您能够灵活地在最原子级别更改查询结果。
有时,使用数据库的机制无法表达复杂的访问控制要求。您可能需要指定某些用户在某些时候只能获得对某些非常特定的数据项的某些访问权限,而大多数数据库根本不擅长于此 - 它假定是数据库客户端的工作。即使是支持它的数据库(例如具有细粒度访问控制的Oracle)也往往会使其变得痛苦且昂贵。
在此上下文中,代理可以为已知查询实现极其细粒度的访问控制,尽管它可能无法对任意查询执行此操作。
大多数应用程序以相对可预测的方式访问其数据库,因此您可以在一段时间内(记录阶段)记录请求,然后通过拒绝以前从未见过的任何请求(强制阶段)来锁定系统。使用智能数据库代理可以轻松完成此操作,具有足够的灵活性,可以适应任何非平凡的IT系统中预期的不可避免的异常和特性。
获得应用程序在数据库中正在执行的操作的可靠、实时视图可能非常困难。某些数据库提供了一个界面,可让您了解其活动,但它们往往侧重于监视和性能。代理可以轻松提取任何类型的相关数据库活动,并将其记录或发送到任何需要的地方。代理的卖点是,这可以在不对数据库进行任何特殊访问的情况下完成,而不会对数据库或客户端产生任何影响,并且对于所有数据库访问的子集也是如此。
代理的新兴用途包括在应用程序中有意识地利用它们,而不是在事后。如果有许多应用程序需要访问具有相同要求的同一数据库,并且您已经有一个代理,则将一些数据库访问逻辑转换为代理是有意义的。例如,可以标记特定查询,以便代理以在所有应用程序中保持一致的方式识别和修改它们。
在此上下文中,您可以将代理视为数据库的扩展:您是在知情的情况下访问扩展数据库,而不是数据库本身。
智能数据库代理是一个针对数据库流量运行逻辑的平台,因此您可以在需要时变得非常有创意。例如,您可以通过将来自多个源的数据网格化到单个结果集中来执行一些轻量级集成,或者动态生成测试数据,或者对数据进行动态加密和解密。看看当你给有创造力的人这种力量时,他们能做些什么总是很有趣的。
权力越大,责任越大。所有这些功能并不总是没有成本的。
数据库代理可以看到进入和来自数据库的所有内容,因此它可能是一个敏感点。控制代理的任何人都控制着通过它的应用程序:它应该变得像使用它的最安全的应用程序一样安全。
代理的额外复杂性也是需要考虑的。这是另一个必须规划、保护和管理的系统。此外,部署到代理的任何逻辑都必须经过管理、测试、源代码管理等。它很容易上手 - 典型的查询替换过滤器通常不超过几行代码 - 但是随着代理运行越来越多的逻辑,您将需要管理该逻辑。
最后,像任何其他工具一样,数据库代理可能会被滥用。
最常见的问题是推迟应用程序更新变得太容易了 - 只需让代理来处理它即可。在许多情况下,修改请求和响应的能力可以挽救生命,但它也可能失控。如果你发现自己在太多的筛选器中游泳,并且有不合理的查询重写和结果集编辑,则可能是时候考虑至少更新某些应用了。但是,由您来决定该数字何时变得不合理。
智能数据库代理可以成为许多IT项目的强大补充。一旦您意识到数据库客户端和数据库服务器之间的连接可以被打开和利用,各种有趣的可能性就会打开。
大多数人从使用数据库代理作为单点解决方案开始,通常是为了解决特定应用程序中的特定问题,但是一旦代理到位,它就可以成为一个很好的杠杆点。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)