Компания, с которой мы ведем бизнес, хочет каждый день предоставлять нам CSV-файл размером 1,2 ГБ, содержащий около 900 000 списков продуктов. Лишь небольшая часть файла изменяется каждый день, может быть, менее 0,5%, и на самом деле это просто добавляемые или удаляемые продукты, а не изменение. Нам необходимо показать списки продуктов нашим партнерам.
Это усложняет то, что наши партнеры должны видеть списки продуктов, доступные только в радиусе 30–500 миль от их почтового индекса. В каждой строке списка продуктов есть поле для определения фактического радиуса продукта (у некоторых всего 30, у некоторых - 500, у некоторых - 100 и т. Д. 500 - это максимум). Партнер с данным почтовым индексом, скорее всего, получит только 20 результатов или около того, а это означает, что будет масса неиспользованных данных. Мы не знаем заранее все почтовые индексы партнеров.
Мы должны учитывать производительность, поэтому я не уверен, что лучше всего сделать.
Должен ли я иметь две базы данных - одну с почтовыми индексами и широтой / долготой и использовать формулу Хаверсина для расчета расстояния ... а другую - фактическую базу данных продуктов ... и что мне тогда делать? Вернуть все почтовые индексы в пределах заданного радиуса и искать совпадения в базе данных продуктов? Для радиуса 500 миль это будет тонна почтовых индексов. Или написать функцию MySQL?
Мы могли бы использовать Amazon SimpleDB для хранения базы данных ... но тогда у меня все еще есть проблема с почтовыми индексами. Я мог бы создать два «домена», как их называет Amazon, один для продуктов, а другой для почтовых индексов? Однако я не думаю, что вы можете делать запросы в нескольких доменах SimpleDB. По крайней мере, я не вижу этого нигде в их документации.
Я полностью открыт для другого решения. Это не обязательно должен быть PHP / MySQL или SimpleDB. Просто имейте в виду, что наш выделенный сервер - это P4 с 2 ГБ. Мы могли бы обновить оперативную память, просто мы не можем вложить в это кучу вычислительной мощности. Или даже храните и обрабатывайте базу данных каждую ночь на VPS где-нибудь, где не было бы проблем, если бы VPS был невыносимо медленным, пока обрабатывается этот CSV размером 1,2 ГБ. Мы могли бы даже обрабатывать файл в автономном режиме на настольном компьютере, а затем удаленно обновлять базу данных каждый день ... за исключением того, что у меня все еще есть проблема с почтовыми индексами и списками продуктов, требующими перекрестных ссылок.