标签:激活 led product class 异步 mss err 操作方法 hub
Python是新的SQL Server 2017。它主要的目的是允许使用面向机器学习在SQL Server中,但它可以用于远远超过这一点,与任何Python库或框架。提供一个例子,什么是可能的,Hitendra展示了如何使用该功能安全提供智能应用程序缓存,在SQL Server可以自动显示数据更改时触发一个缓存刷新。
MS SQL Server 2017增加了其先进的分析扩展,现在被称为“机器学习服务”,通过启用SQL Server执行Python脚本内TSQL通过机器学习服务与Python。这基本上提供了一种方法,数据库程序员可以直接从Python和传递数据。这不是有限的有效性提供机器学习数据分析的功能,因为Python有许多随时可用的模块和框架来解决许多问题,如执行大量计算与数据结构、图形处理进行分析,网络操作、数据库操作、网络操作或本地/基于网络文件系统操作。显然,这些最好是在中间件,但在数据库系统中,有些时候它更方便直接沟通到外部系统,而不是依靠外部流程执行任务通过轮询数据来源。这个有意义的时候不是这样的一个问题有一个解决方案在数据库或数据层,当它不提供任何安全问题。
在这里,我们将尝试演示的一个例子使用高级分析内的Python扩展,显示数据库可以触发外部进程执行一个活动的数据作为参数提供。这是为了考虑到安全的问题,数据可靠性和事务响应时间。
一些任务可以做更容易通过调用一个Python脚本从SQL而不是依靠中间件。这是特别的情况中的任务是由一个事件数据库。任务可能包括
自然,也有一些潜在的缺点
权衡这些优点和缺点,似乎仍有次当Python可以发挥有益的作用,如果它可以最小化风险。作为一个例子,让我们考虑如何使用Python来构建一个应用程序使用的数据缓存系统层。
缓存的数据可以提高应用程序性能的有效途径。缓存的存储开销成本,我们可以使有用的性能收益当面对诸如健谈与数据库、网络通信和高资源消耗由数据库当面对重复查询。当我们建立一个缓存基础设施时,我们面临的共同问题何时刷新缓存的内容。我们倾向于采用简单的解决方案在一定时间间隔后重建缓存。然而,这是非常低效的。最好是刷新缓存数据更改时,和只刷新是什么发生了改变。我们可以接近实时数据时在创建、更新或删除。有许多可用的工具和框架来解决刷新的问题,但是他们遭受的问题如何确定中发生更改的数据和修改之后提交。数据库是最有能够做到这一点。
对于我们的缓存系统,可用的来源吗,我们将限制微软堆栈的一切除了Python本身。
这是我们的示例解决方案缓存系统的图示:
WebApplication提供了一个用户界面来读取和更新数据。
在我们的解决方案,我们将缓存实体产品类型名称的RESTful。缓存应用程序和WebApplication将有一个函数来创建新的产品类型条目从RESTful.Cache和阅读。
另外,有一些先决条件和一些我们需要考虑的更多信息。
|
sp_configure “外部脚本启用”, 1; 重新配置; |
|
改变 数据库 TransDB 集 ENABLE_BROKER; Go 改变 数据库 CacheDB 集 ENABLE_BROKER; Go |
WebApplication有两个主要的MVC行动;一个更新一个新的实体TransDB HTTP动词POST和另一个动作从缓存中返回产品列表类型与HTTP动词。
RESTful。缓存有两种操作方法,一个更新缓存与新增实体产品类型与HTTP动词,和另一个本地缓存的所有缓存的产品类型。
对于我们的示例解决方案,两个应用程序驻留在IIS在单个应用程序池标识保持应用程序了。但对于实际系统的实现,可以个人网络服务器托管环境在内部网或互联网环境。
RESTful。缓存授权规则只有两个服务帐户处理HTTP请求。
abc \ WebApp_SVC和abc \ CacherAgent_SVC。abc \ CacherAgent_SVC服务帐户允许Python脚本在SQL的应用程序通过HTTP来刷新缓存。
WebApplication的abc \ WebApp_SVC用户在授权规则允许访问RESTful的方式。缓存应用程序。
OLTP数据库TransDB有几个对象,包括表、存储过程和服务代理对象。
对于我们的目的,过程UpdateProductType更新ProductType表与新记录和AcknowledgeProductTypeCache过程的激活过程是CacheIntegration队列,它接收来自目标确认处理消息时,即从Cacher数据库。它还处理异常,这些在CacheIntegrationError表和日志。
在服务代理可以找到更多的信息微软。道格:SQL Server服务代理
对于我们的示例解决方案,TransDB源数据库,创建更新缓存消息创建一个新的ProductType记录时,一个消息来执行一个动作,它有UpdateMessage消息类型,CacheIntegration合同与CacheSource服务发送消息到目标数据库。使用的服务有一个CacheQueue服务代理组件执行可靠的消息传递。ToCacheTarget路线已经将消息传递到目标的信息。
消除任何的机会增加事务处理时间以及避免任何安全风险在事务数据库中的数据的其余部分,我们将解耦缓存更新过程通过使用一个代理数据库,称为隐藏自己在我们的示例数据库解决方案。服务代理消息传递基础结构将有助于TransDB和Cacher数据库和连接,基于事件的消息处理将使我们更新缓存存储驻留在网络系统。Cacher数据库扮演一个代理的角色为了执行缓存刷新当更新消息的到来。它更新缓存通过执行一个Python脚本. .
隐藏自己的数据库有:
隐藏自己的服务代理对象,主要UpdateMessage消息类型和CacheIntegration TransDB合同一样,CacheQueue激活过程称为PerfomCacheUpdate,服务称为CacheTarget,路线TransDB信息的服务CacheService和端点地址。
对于我们的示例解决方案,最大队列读者对队列的数据库设置为1。这可以增加如果需要,例如,如果数据修改是高,你需要增加缓存刷新频率。
我们的解决方案,数据库驻留在相同的实例,所以都是使用相同的服务代理端点来发送和接收消息。
但是如果我们想在个人主机数据库实例然后每个SQL实例的服务帐户应该有一个服务代理端点。和SQL实例应该许可允许将消息发送给对方的端点。连接的授权和批准可以用以下组TSQL命令。注意,在消息传递基础结构另一边有一个发送方和接收方,如前所述,如果SQL实例发送方和接收方的一部分,那么每个实例都应该有自己的进程标识。下图表示的每个SQL服务器运行在自己的身份。
这是SQL代码的授权和批准端点连接到TransDB SQL实例服务帐户(身份)在SQL Cacher数据库的实例。
|
改变 授权 在 端点::ServiceBrokerEndpoint 来 [美国广播公司\TransDB_SVC] Go 格兰特 连接 在 端点::ServiceBrokerEndpoint 来 [美国广播公司\TransDB_SVC] Go |
同样,这是授权和批准端点连接的代码隐藏自己的SQL实例服务帐户(身份)在SQL TransDB数据库的实例。
|
改变 授权 在 端点::ServiceBrokerEndpoint 来 [美国广播公司\CacherAgent_SVC] Go 格兰特 连接 在 端点::ServiceBrokerEndpoint 来 [美国广播公司\CacherAgent_SVC] Go |
这是Python脚本文本,@UpdateCache TSQL保存为字符串变量。它有UpdateCache方法与逻辑执行HTTP POST调用RESTful。缓存通过一个数据对象名称和Id字段,收到作为输入参数。接收JSON对象并将其作为输出结果的方法返回给调用者。
在脚本结束时,返回的对象转换成一个数组,所以它可以作为一个SQL结构化的结果。
|
声明 @UpdateCache NVARCHAR(马克斯) = N‘ 熊猫作为患产后抑郁症的#导入数据结构方案 def UpdateCache(名称、id): 导入作为HTTP # HTTP请求包的请求 #演奏HTTP POST,更新缓存 httpRequest = HTTP。文章(http://localhost/RESTful。缓存/ ProductType / UpdateCache,{名称:名称、Id:Id }) cacheLog = httpRequest.json() 返回cacheLog #更新缓存和构建日志元素 日志=[UpdateCache(‘+ @的名字+‘ ,‘+ 投(@Id 作为 VARCHAR(10)) +‘)] #返回数据帧即从SQL表结构 OutputDataSet = PND.DataFrame(数据=日志) ‘; |
有几件事值得注意的是,使用SQL server的Python脚本。
TransDB OLTP数据库,我们不希望任何安全漏洞的攻击系统,因此我们的示例解决方案的方法,这样可以托管在一个SQL数据库实例,没有安装机器学习服务。隐藏自己是一个代理,能够达到一个基于网络的系统,所以可以在SQL实例安装机器学习服务。SQL实例可以有个人服务帐户的身份,已授权服务代理端点连接仅供特定端口。另一种安全通信是通过使用证书进行认证。授权服务代理端点引用微软。技术:如何:允许服务代理网络访问使用证书(transact - sql)为更多的细节。
把所有的组件,这是我们WebApplication允许我们创建一个新的ProductType和列表相同的产品类型与RESTful HTTP调用刷新缓存。后面墙上有组件的管理数据和缓存是无形的前端应用程序。
应用,如电子商务、医疗电子政务可以受益于一个好的缓存实现。通过扩展的使用技术,我们都很熟悉,我们可以得到一个解决方案,是易于维护的成本没有学习一个新的框架或特性。
满足我们需要的,因为我们的示例解决方案
这个项目的源代码在githib可用。https://github.com/hi10p/SQL17Python
原文链接:
https://www.red-gate.com/simple-talk/sql/sql-development/power-python-sql-server-2017/
标签:激活 led product class 异步 mss err 操作方法 hub
原文地址:http://www.cnblogs.com/1-1-1-1-2/p/7668112.html