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