大家下午好,
我有点过头了,面对一些紧迫的期限,所以希望有人可以提供一些建议。
我的起点是SQL Server数据库中的一个表,其中两个字段是从gps单元获取的x,y坐标。我将负责地理编码(获取物理街道地址)这些位置,并将结果写入成功表或失败到错误表。我正在收集实际执行地理编码过程的类库(C#),但我对将所有内容组合在一起的最佳方法感到困惑。
理想情况下,我希望将SQL Server中的数据集/数据表发送到某种类型的服务,其中所有记录都将进行地理编码,并且每条记录的结果/失败将被写回相应的表中。由于数据库和DLL将驻留在同一台服务器上,我不明白为什么我会使用Web服务。因此,我的其余调查指向Windows服务或SQL CLR集成。我的主要问题是:
任何提示,评论和建议都将不胜感激。
另一方面,如果不是很明显,我是一个相对新手的程序员。这个网站是我作为程序员成长的宝贵工具,我非常感谢那些花时间阅读帖子并提供专家建议的人。
答案 0 :(得分:3)
您的地理编码代码可能会连接到地理编码服务,这将排除SQL CLR集成。从技术上讲,从SQL CLR内部访问外部资源,特别是Web服务是您可以犯的最大错误。在几天的时间内,由于CLR线程劫持,您的服务器将因工作人员饥饿而被冻结。
最好的方法是使用ETL策略。将坐标转储到临时表中,启动ETL过程并将所有坐标转换为地理编码,并将结果写入成功和错误表。 ETL方法通常考虑批处理,中断和恢复等。 ETL可以是启动应用程序的SQL作业,SSIS包,有很多方法可以做到,重要的一点是将工作分为临时表和暂停/恢复语义的供应。您现在拥有的DLL代码(我假设它是地理编码Web服务客户端代理代码)可能是您项目的0.001%。
流程是否需要作为Web服务公开,与ETL流程完全正交,它应该由您的客户连接需求和技术驱动。换句话说,如果客户端代码阻止使用WS上传坐标,只要您考虑大型数据集并且只要为结果提供解耦,异步和排队语义,就这样做。
答案 1 :(得分:1)
这是我遇到的一个非常老的问题。供将来参考,ONS提供了一个下载,您可以将邮政编码映射到邮政编码的经度/纬度(平均中心点),并且它是免费的。也有大量其他下载。如果您有兴趣,请访问:https://geoportal.statistics.gov.uk/datasets/national-statistics-postcode-lookup-latest-centroids/data