我有一个正在构建的站点,它是一个基于几个用户偏好创建邮件合并(或多或少......)的应用程序。它可以毫无问题地生成笛卡尔连接价值的数据,但是企业需要让生活变得更加困难......
我必须构建应用程序,以便在验证远程员工的邮政编码后,它会根据媒体目标与该员工的距离为媒体目标创建电子邮件。例如,假设员工在他们工作的地方是众所周知的志愿者。企业希望通过电子邮件向这些员工 5 英里半径范围内的媒体发送有关员工正在从事的工作的消息。这就是事情变得混乱的地方......我在这里有几个选择,我将概述尝试和失败:
最大半径为 20 英里。我创建了一个数据库表,其中包含美国每个邮政编码的记录,并连接到该邮政编码 20 英里内的每个邮政编码。数据集看起来像(名称不同,这是为了论证):
[SourceZip] | [城市] | [状态] | [关闭邮编] | [城市] | [状态] | [距离]
失败:例如,纽约州有来自上述数据集的 35 万条记录(其他州更糟!)。该页面的平均加载时间?6分钟...没有发生。我通过设置断点验证了这一点,断开连接发生在 dataadapter.fill() 阶段。(由于后勤问题,这个从未实施过)我为每个员工 zip 与距离为 x 或更短的媒体目标 zip 建立了数据库连接。除了源文件和媒体目标结合起来可以达到 34k 以上的个性化电子邮件。34k 数据库连接?即使我可以设计一种重用邮政编码搜索的方法,我还是在数据库中进行了一些测试检查,发现员工工作的纽约有 500 个不同的邮政编码。500 分贝的连接?我怀疑这会奏效,但我可能会感到惊讶。
我解决这个问题的最新方案是希望 Web 服务器运行一个比 .net 数据集对象更好的游戏,方法是获取一个新数据集,如下所示:
[zip] | [经度] | [纬度]
然后做一个距离公式来确定数据是否有效。这在很大程度上依赖于 Web 服务器上的处理器。这是一次值得的赌博,还是我会在这次尝试中发现相同的加载时间损害?有没有更好的办法?
我感谢任何意见,即使它证实了我对这个项目可能无法工作的担忧。
附加说明:我无法控制服务器,并且正在运行 SQL2k :(。我正在 Visual Studio 2005 框架 2.0 中对站点进行编程。不过,可能会在接下来的几个月内升级到 SQL2005 和 VS2008。