暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【译】数据库连接作为杠杆点

原创 剩余价值 2022-05-17
820

原文链接:https://dzone.com/articles/the-database-connection-as-a-leverage-point

原文作者:马克斯·塔迪沃

大多数数据库都是通过网络连接访问的。阅读更多内容以了解如何使用这些连接来增强和改进您的信息系统。


大多数数据库都是通过网络连接访问的。我们倾向于将这些连接视为数据库客户端和数据库服务器之间的不透明管道:这些管道中发生的任何事情都是神秘的,我们对此无能为力。我想向您展示这些联系实际上如何用于增强和改进您的信息系统。

通过智能数据库代理路由这些数据库连接,我们可以观察、控制并可能修改来回的请求和响应。这给了我们一个强大的杠杆点:

  • 我们可以观察数据库客户端和数据库服务器之间的流量,用于商业智能、安全性、性能分析等。

  • 我们可以控制连接并根据其内容、来源、时间或其他原因拒绝或重定向某些请求。

  • 最重要的是,我们可以修改请求和响应,从而改变我们系统的工作方式,而无需对数据库客户端或服务器进行任何更改。

典型用例

到目前为止,控制和修改数据库连接的概念非常抽象,所以让我们让它更加真实。以下是最常见的用例。

请求修改

有时您需要更改应用程序与数据库交互的方式,但您无法更改该应用程序。这在您无法控制的第三方应用程序或不再维护的应用程序中很常见。

这是最明显的用例,因为别无选择:要么放弃要么放弃应用程序。

实际上,这通常是一件相当简单的事情:您在代理中设置一个过滤器来捕获某个请求并将其替换为另一个请求。在大多数情况下,替换请求在逻辑上等同于它所替换的请求,因为其结果必须由应用程序使用。例如,这可能意味着重新表述查询以提高效率或表现不同,或者更改数据库不再支持的语法或功能。

在某些情况下,您可能会更改请求以使其返回错误消息(例如“此数据不可用”)、空结果集,甚至是来自不同数据源的数据。 

结果集修改

这是请求修改的镜像。在某些情况下,您可能需要更改某些查询返回的数据,而通过修改请求很难或不可能做到这一点。您可能只需要更改大型结果集中的一个值、转换货币、插入外部数据或以数据库不支持的方式屏蔽某些值。无论原因是什么,代理都可以让您灵活地在最原子级别更改查询结果。

细粒度的访问控制

有时,使用数据库机制来表达复杂的访问控制要求是不可能的。您可能需要指定某些用户在某些时候只能获得对某些非常特定的数据项的某些访问权限,而大多数数据库根本不擅长此操作:假定这是数据库客户端的工作。即使是具有某些此类功能的数据库(例如具有细粒度访问控制的Oracle )也往往会使它变得痛苦和昂贵。

在这种情况下,代理可以对已知查询和其他类似的连接更改实现细粒度的访问控制。

请求控制

大多数应用程序以相对可预测的方式访问其数据库。因此,很容易在一段时间内记录对数据库的请求(称为“记录阶段”),然后通过拒绝以前未见过的任何请求来锁定系统(称为“执行阶段” )。这可以通过智能数据库代理轻松完成,具有足够的灵活性来适应不可避免的异常以及在任何非平凡系统中都可以预期的特质。当然,这并不适用于所有应用程序,但它可以是许多应用程序的简单安全补充。

商业智能

获得有关应用程序在数据库中执行的可靠、实时的视图可能非常困难。一些数据库提供了一个界面,可以让您了解其活动,但它们往往侧重于监控和性能。代理可以轻松提取任何类型的相关数据库活动,并将其记录或发送到任何需要的地方。代理的卖点是它不需要对数据库的特殊访问,对数据库或客户端没有影响,并且可以应用于所有数据库访问的一个子集。

...和更多

这些只是常见的用例,但您可以获得更多创意。例如,您可以通过将来自多个源的数据网格化到单个结果集、动态生成测试数据或对数据进行动态加密和解密来进行一些轻量级集成。当你赋予他们这种权力时,看看创新者能做什么总是很有趣的。

它是如何工作的?

原理很简单:数据库客户端和数据库服务器不是直接相互通信,而是通过代理进行通信。这可以在有或没有加密的情况下,在本地或在云中工作,客户端和服务器都不会注意到任何差异。代理在有线协议级别工作,因此是完全透明的。

一旦代理就位,应用程序和服务器的行为就与它们通常一样。代理将来回转发所有流量。但是,根据您指定的标准,它可能会在适当的时候通过执行您的逻辑来干预和更改该流量,该逻辑可以根据需要读取和修改请求和响应。

这种方法的优缺点

数据库是大多数信息系统的核心。因此,任何可以利用它们的东西都有可能产生重大影响。这种方法最明显的优点是可以使用现有的数据库系统快速实现,而无需更改客户端或数据库服务器。很少有控制点可以如此深刻地影响信息系统,而付出如此之少的努力。

然而,所有这些能力都可能带来成本。

代理的额外复杂性是需要考虑的。这是另一个必须计划、保护和管理的系统。此外,部署到代理的任何逻辑都必须进行管理、测试和源代码控制。

此外,与任何其他工具一样,数据库代理也可能被滥用。依赖它可能很诱人,因为在该级别调整系统非常容易。作为系统设计人员,您必须决定什么时候这样做是正确的,什么时候它是对应该以其他方式解决的问题的创可贴。

结论

系统设计很难,我们都需要我们能得到的每一点帮助。一旦您意识到可以打开和利用数据库客户端和数据库服务器之间的连接,就会出现各种有趣的可能性。我们简要介绍了最常见的用途,但我鼓励您尽情发挥想象力。

大多数人一开始使用智能数据库代理作为单点解决方案,通常是为了解决特定应用程序中的特定问题,但是一旦代理到位,它可以成为一个很好的杠杆点,以优雅地解决几乎不可能解决的问题。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论