gpt4 book ai didi

sql - Web 服务、Windows 服务或 SQL CLR 集成?

转载 作者:行者123 更新时间:2023-12-03 03:09:51 26 4
gpt4 key购买 nike

大家下午好

我有点不知所措,面临一些紧迫的期限,所以希望有人能提供一些建议。

我的起点是 SQL Server 数据库中的一个表,其中两个字段是从 GPS 单元获取的 x、y 坐标。我将负责对这些位置进行地理编码(获取物理街道地址),并将结果写入成功表或将失败写入错误表。我正在封装实际执行地理编码过程的类库 (C#),但对于将所有内容结合在一起的最佳方式感到非常困惑。

理想情况下,我想将数据集/数据表从 SQL Server 发送到某种类型的服务,其中所有记录都将进行地理编码,并且每个记录的结果/失败将被写回到相应的表中。由于数据库和 dll 将驻留在同一服务器上,我不明白为什么要使用 Web 服务。因此,我的其余调查要么指向 Windows 服务,要么指向 SQL CLR 集成。我的主要问题是:

  1. 其中一种方法比其他方法更合适吗?
  2. 这种方法是否可以接受(就最佳实践而言)?

任何提示、评论、建议将不胜感激。

顺便说一句,如果还不是很明显,那么我是一个相对新手的程序员。这个网站对于我作为一名程序员的成长来说是一个非常宝贵的工具,我非常感谢那些花时间阅读帖子并提供专家建议的人。

最佳答案

您的地理编码代码可能会连接到地理编码服务,这排除了 SQL CLR 集成。虽然技术上可行,但从 SQL CLR 内部访问外部资源(特别是 Web 服务)是您可能犯的最大错误。几天之内,您的服务器肯定会因为 CLR 线程劫持而因工作线程匮乏而被卡住。

最好的方法是使用 ETL 策略。坐标将转储到临时表中,您启动 ETL 过程并将所有坐标转换为地理编码,并将结果写入成功表和错误表中。 ETL 方法通常考虑批处理、中断和恢复等。 ETL 可以是启动应用程序的 SQL 作业、SSIS 包,有很多方法可以实现它,重要的一点是将工作分离到临时表中并提供挂起/恢复语义。您现在拥有的 dll 代码(我假设是地理编码 Web 服务客户端代理代码)可能占您项目的 0.001%。

该流程是否需要作为 Web 服务公开,与 ETL 流程完全正交,并且应该由您的客户端连接需求和技术驱动。换句话说,如果客户端代码更喜欢使用 WS 上传坐标,那么只要考虑到大型数据集并且为结果提供解耦、异步和排队的语义,就可以这样做。

关于sql - Web 服务、Windows 服务或 SQL CLR 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com