ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PHP-处理900,000条记录数据库和邮政编码的最佳方法?

2019-12-08 09:14:26  阅读:329  来源: 互联网

标签:amazon-simpledb proximity mysql php database


与我们有业务往来的公司希望每天提供1.2 GB的CSV文件,其中包含大约900,000个产品列表.每天只有一小部分文件更改,也许不到0.5%,这实际上只是添加或删除而不是修改产品.我们需要向合作伙伴显示产品清单.

更复杂的是,我们的合作伙伴只能在其邮政编码30-500英里半径内看到可用的产品清单.每个产品列表行都有一个字段,用于显示产品的实际半径(有些仅为30,有些为500,有些为100,以此类推.最大为500).给定邮政编码的合作伙伴可能只有20个左右的结果,这意味着将有大量未使用的数据.我们不知道所有合作伙伴的邮政编码.

我们必须考虑性能,因此我不确定实现此目标的最佳方法是什么.

我是否应该有两个数据库-一个包含邮政编码和纬度/经度,并使用Haversine公式计算距离…而另一个使用实际产品数据库…然后该怎么办?返回给定半径内的所有邮政编码,并在产品数据库中查找匹配项?对于500英里的半径,这将是大量的邮政编码.还是写一个MySQL函数?

我们可以使用Amazon SimpleDB来存储数据库…但是,邮政编码仍然存在这个问题.我可以像亚马逊所说的那样创建两个“域”,一个用于产品,一个用于邮政编码?不过,我认为您无法跨多个SimpleDB域进行查询.至少,我在他们的文档中没有看到.

我完全愿意接受其他解决方案.它不必是PHP / MySQL或SimpleDB.请记住,我们专用的服务器是2 GB的P4.我们可以升级RAM,只是我们不能为此付出很多处理能力.甚至每晚都在VPS上存储和处理数据库,如果在处理1.2 gb CSV的过程中VPS的运行速度慢得令人难以忍受,那将不是问题.我们甚至可以在台式计算机上离线处理文件,然后每天远程更新数据库…除非我仍然遇到邮政编码和产品列表需要交叉引用的问题.

解决方法:

您可能需要研究PostgreSQL和Postgis.它具有与MySQL spacial indexing类似的功能,而无需使用MyISAM(根据我的经验,与InnoDB相比,它倾向于损坏).

特别是Postgres 9.1,它允许使用GIST索引进行k-nearest neighbour search查询.

标签:amazon-simpledb,proximity,mysql,php,database
来源: https://codeday.me/bug/20191208/2090544.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有