SQL数据库和服务代理

OLTP数据库TransDB有几个对象,包括表,存储过程和Service Broker对象。

为了我们的目的,UpdateProductType过程使用新记录更新ProductType表,AcknowledgeProductTypeCache过程是CacheIntegration队列的激活过程,当处理消息时即从Cacher数据库接收来自目标的确认。它还处理异常,如果有的话,并将其记录在CacheIntegrationError表中。

有关Service Broker的更多信息,请访问Microsoft.DOC:SQL Server Service Broker

对于我们的示例解决方案,TransDB是创建新的ProductType记录时创建更新缓存消息的源数据库,执行操作的消息,它具有UpdateMessage消息类型,CacheIntegration合同将CacheSource服务发送到目标数据库。该服务具有CacheQueue,由Service Broker组件用于执行可靠的消息传递。该ToCacheTarget路由具有信息传递消息到它的目标。

为了消除任何增加事务处理时间的机会以及避免事务数据库中其余数据的任何安全风险,我们将通过使用我们的示例解决方案中名为Cacher数据库的代理数据库来解除缓存更新过程。Service Broker消息传递基础设施将有助于连接TransDB和Cacher数据库,基于事件的消息处理将使我们能够更新驻留在基于网络的系统上的缓存存储。该cacher的数据库是打在订单的最新消息到达时进行缓存刷新代理的角色。它通过执行Python脚本更新缓存。

Cacher数据库具有:

1.CacheLog和CacheIntegration错误表,以跟踪缓存何时被刷新,并且具有在缓存刷新过程中可能发生的任何错误的记录。

2.所述PerformCacheUpdate过程从接收传入消息TransDB通过服务代理。如果消息的类型是UpdateMessage,那么它将执行另一个过程UpdateWebCache,执行Python脚本执行。

a.UpdateWebCache过程的执行结果保存在表变量中,然后在消息对话结束时插入到CacheLog表中。。

b.当接收到的消息具有错误或结束消息类型时,过程也会结束对话,并且在错误类型上,将异常日志写入CacheIntegrationError表中。

3.该UpdateWebCache程序提取标识和名称,从作为参数传递传入的XML消息,并在Python脚本文本嵌入这些值。脚本执行结果集是类型为UpddateCacheLog的结构化表。

该cacher的服务代理对象,主要是UpdateMessage消息类型和CacheIntegration合同是相同的TransDB,CacheQueue有一个称为激活过程,PerfomCacheUpdate,一个叫服务CacheTarget和路线大约有信息TransDB的服务CacheService和端点地址。

对于我们的示例解决方案,数据库队列的最大队列读取器设置为1。如果需要,可以增加这一点,例如,如果数据修改很高,并且您需要增加缓存刷新率。

服务代理端点

对于我们的解决方案,数据库托管在同一个实例上,因此两者都使用相同的Service Broker Endpoint来发送和接收消息。

但是,如果我们要在单个实例上托管数据库,那么每个SQL实例的服务帐户都应该有一个Service Broker端点。并且这两个SQL实例都应该有权限允许将消息发送到对方的端点。连接的授权和授予可以通过以下TSQL命令集完成。请注意,在消息传递基础结构中,有一个发送方,另一方是接收方,正如所提到的,如果SQL实例是发送方和接收方的一部分,则每个实例都应该有自己的进程标识。下图显示了每个SQL Server在其自身身份下运行的方式。

这是用于在Cacher数据库的SQL实例中授权和授予端点连接到TransDB的SQL实例服务帐户[identity]的SQL代码。

ALTER AUTHORIZATION ON ENDPOINT::ServiceBrokerEndpoint TO [abc\TransDB_SVC]

GO

GRANT CONNECT ON ENDPOINT::ServiceBrokerEndpoint TO [abc\TransDB_SVC]

GO

类似地,这里是用于授权和授予端点连接到Cache的SQL实例服务帐户[Identity]的代码,在TransDB数据库的SQL实例中。

ALTER AUTHORIZATION ON ENDPOINT::ServiceBrokerEndpoint TO [abc\CacherAgent_SVC]

GO

GRANT CONNECT ON ENDPOINT::ServiceBrokerEndpoint TO [abc\CacherAgent_SVC]

GO

Python脚本

这是Python脚本文本,在TSQL变量@UpdateCache中保存为字符串。它具有具有逻辑的UpdateCache方法,通过传递具有作为输入参数接收的Name和Id字段的数据对象来对RESTful.Cache执行HTTP POST调用。它接收一个JSON对象,并将其作为方法的输出结果返回给调用者。

在脚本结束时,返回的对象被转换为数组,因此可以将其结构化为SQL结果。

DECLARE @UpdateCache NVARCHAR(MAX) = N'

import pandas as PND #data structure package

def UpdateCache(name,id):

import requests as HTTP #http request package

#Perfom HTTP POST to update cache

httpRequest = HTTP.post( http://localhost/RESTful.Cache/ProductType/UpdateCache ,{ Name :name, Id :id})

cacheLog = httpRequest.json()

return cacheLog

#Update cache and build log element

log = [UpdateCache( '+ @Name+' ,'+ CAST(@Id as VARCHAR(10)) +')]

#Return data frame i.e. table structure from SQL

OutputDataSet = PND.DataFrame(data=log)

';

在SQL Server中使用Python脚本时,有一些值得注意的事情。

1.我们可以编写一个连续的脚本或将它们分组到我们在这个解决方案中所做的方法中。或者,我们可以创建一个内联类或创建一个包,并在命令提示符下使用PIP命令在python中导入它们。

2.在这个MST的CPT版本中,import语句只能在它放置的范围内导入包,因此我们可以注意到ImportCache中存在导入请求import语句,并且import语句导入熊猫存在于脚本的顶部在脚本的最后。

3.方法UpdateCache的输出对象立即转换为数组,这样pandas.DataFrame可以将对象转换成数据结构,SQL Server可以轻松地将其解释为具有行和列的表。

4.分配给OutputDataSet对象的数据结构在SQL Server的TSQL执行上下文中可用。

5.最后一行程序dbo。UpdateWebCache,WITH RESULT SETS(AS TYPE dbo.UpdateCacheLog);具有用户定义的表类型dbo.UpdateCacheLog,它有助于保持底层列的顺序,并避免在从接收的数据结构生成结果集的过程中发生任何不匹配。另一种方法是在Python和结果集中构建映射列结构。

数据库安全

TransDB是一个OLTP数据库,我们不希望对系统发生任何安全漏洞,因此,通过我们的示例解决方案,这种数据库可以托管在未安装“机器学习服务”的SQL实例上。Cacher是能够到达基于网络的系统的代理,因此可以保留在安装机器学习服务的SQL实例上。两个SQL实例都可以具有单独的服务帐户身份,该身份已被授权仅连接到特定端口的Service Broker端点。安全认证通信的另一种方法是使用证书。对于Service Broker端点授权,请参阅Microsoft.Technet:如何:通过使用证书(Transact-SQL)允许服务代理程序网络访问以获取更多详细信息。

所有组件放在一起

放置所有组件后,我们的WebApplication允许我们创建一个新的ProductType,并通过RESTful HTTP调用从刷新的缓存中列出相同的产品类型。在墙后面有管理数据的组件,高速缓存对前端应用程序是不可见的。

结论

诸如电子商务,医疗电子治理等应用可以从良好的缓存实现中受益。通过扩展我们熟悉的技术的使用,我们可以获得易于维护的解决方案,而无需学习新框架或功能的成本。

我们的示例解决方案符合我们所需要的

•当通过其中一个OLTP事务创建或修改数据时,系统刷新基于网络的缓存系统进行读取访问。

•它能够使用异步事件来刷新缓存,靠近实时。这不会影响原始交易的表现。

•它可以通过HTTP在事务和缓存系统之间绘制一条安全线,以保持数据在OLTP数据库中的安全。

•它具有最小的监控功能; 一个缓存日志和异常日志,可以进一步加强构建管理控制台。

•使用Service Broker消息组件,解决方案足够灵活,可以在异步消息处理发生时触发或到达基于网络的系统。换句话说,数据库与SQL Service Broker消息集成在一起,并且基于接收到的数据,执行一个动作来获取或发送数据到外部数据层以外的系统。

•通过使用服务代理消息隔离外部系统触发专用数据库内的事件有助于保护OLTP数据库的事务和数据。(https://www.red-gate.com/simple-talk/sql/sql-development/power-python-sql-server-2017/)

python与sql server_Python和SQL Server 2017的强大功能相关推荐

  1. python和sql_Python和SQL 2017的强大功能

    Python和SQL Server 2017的强大功能 原文来自:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyth ...

  2. python中引入sql的优点_SQL Server 2017中的Python:增强的数据库内机器学习

    Microsoft SQL Server是一款优秀的关系型数据库管理系统,Python是目前流行的数据科学语言之一,拥有丰富的库生态系统.从SQL Server 2017的CTP 2.0版本开始,可以 ...

  3. php执行sql内存溢出_SQL Server 2017:SQL排序,溢出,内存和自适应内存授予反馈

    php执行sql内存溢出 This article explores SQL Sort, Spill, Memory and Adaptive Memory Grant Feedback mechan ...

  4. Python和SQL Server 2017的力量

    Python是SQL Server 2017的新功能. 它主要是为了允许在SQL Server中使用基于Python的机器学习,但是它可以与任何Python库或框架一起使用.为了提供可能的例子,Hit ...

  5. SQL Server 2017 正式发布

    SQL Server 2017 跨出了重要的一步,它力求通过将 SQL Server 的强大功能引入 Linux.基于 Linux 的 Docker 容器和 Windows,使用户可以在 SQL Se ...

  6. sql server新增列_SQL Server 2017中的新增功能

    sql server新增列 SQL Server 2017 is considered a major release in the history of the SQL Server life cy ...

  7. cmd命令卸载sql server_Ubuntu下部署SQL Server 2017(安装及使用方法,卸载方法)

    SQL Server 2017 的发布是 SQL Server 历史上首次同时发布 Windows 和 Linux 版本,本文将介绍如何在 Ubuntu 下部署 SQL Server 2017,包括它 ...

  8. SQL Server 2017 新功能分享

    本篇文章是我在MVP直通车分享的关于SQL Server 2017的新功能,现在ppt分享如下,可以点击这里下载. 转载于:https://www.cnblogs.com/CareySon/p/SQL ...

  9. 如何在SQL Server 2017中实现图形数据库

    介绍 (Introduction) Graph database 图形数据库 A graph database is a type of database whose concept is based ...

  10. python 查询sqlserver 视图_SQL Server 2017 数据库教与学(教学大纲,含Python+SQL Server案例)...

    原标题:SQL Server 2017 数据库教与学(教学大纲,含Python+SQL Server案例) 本书提供Python+SQL Server案例 SQL Server教学大纲 一.课程的性质 ...

最新文章

  1. 在多变环境中长期定位和建图的通用框架
  2. DCD DSR DTR RTS CTS表示什么意思
  3. boost::intrusive::list_base_hook用法的测试程序
  4. 在印度8年的华为工程师,有很多话想说。
  5. Java工作笔记-JPA中Repository新增自定义更新操作
  6. c++调用cplex求解例子_c++调用CPLEX环境配置
  7. 学术 | 如何写一篇学术论文?(下)
  8. rocketmq的有序消费模式和并发消费模式的区别
  9. 项目经理的三个立足点
  10. Unity3D 在 UI TextMeshPro (TMP) 中显示中文
  11. mac 终极教程,最全,最实用的教程
  12. 幼儿园带括号算式口诀_巧记数学公式,背熟这41组数学顺口溜就对了!
  13. html求相关系数,关于pearson相关系数的意义
  14. 【C语言】函数番外篇——递归
  15. Mysql数据库基础知识总结,结构分明,内容详细
  16. 【CV系列】照度和最低照度相关概念
  17. 选择换IP软件安全吗?
  18. [THUWC 2017]在美妙的数学王国中畅游
  19. python批量添加qq好友_Python QQ批量登录
  20. 仿微信建群添加人员效果

热门文章

  1. linux+nginx+mysql+php的简单配置
  2. 【Z】男人应该努力去做的
  3. vue 中使用axios的总结
  4. CSS实现左侧固定大小,右侧自适应的布局
  5. golang 猜数字小游戏
  6. c语言字符是源码,C语言基础字符串函数源代码
  7. VirtualBox安装MAC虚拟机,屏幕分辨率小,扩大的办法
  8. LINUX登录界面,输入密码,循环重启出现
  9. 如何去掉腾讯网址安全中心提醒
  10. JDK绘制文字的流程与代码分析