Как лучше реализовать с наименьшими затратами ресурсов обработку данных для поиска, сортировки и т.д

VVWind

Новичок
Представим, что есть 10 серверов. После определенных действий статистика по ним (этим действиям) сохраняется кусками рандомно на этих серверах. Для экономии места и увеличения производительности приложения, так как все эти данные могут собираться кучей пользователей для просмотра.
В данный момент данные собираются по записям на одном сервере (на котором по сути в основном ссылки на эти записи, где и на каком сервере 5000 записей к примеру, и сколько таких 5000 частей на нем).
Получение данных идет через запросы с GET параметрами к этим серверам, после того, как собран список всех записей (представим что их 50000, то есть 10 серверов и на каждом по 5000. но вообще может быть что и 5 серверов и на одном 10000 записей, на другом 15000 и т.д. - вся эта инфа на том серваке со ссылками)

Какие могут быть варианты для сохранения/сортировки, поиску по параметрам по этим данным? Наименее затратные по ресурсам и быстрые. То есть не собирать все 50000 записей и сохранять их в таблицу на одном сервере а как-то по-другому их обрабатывать. При этом записей может быть и 5000000, то есть для таких целей и разбросано все на разные серверы.
 

Gas

может по одной?
VVWind
или смотри на готовые map reduce решения (hadoop, hbase и т.д.),
или из своего велосипеда делай map reduce )

данные не все нужны, а какой-то limit N, доработай api на каждом из этих серверов, которое будет искать, сортировать и возвращать N элементов.
в итоге получится N*количество_серверов данных, их уже без напряга можно отсортировать и отбросить лишнее на вызывающей стороне.

раз у тебя GET'ом идёт получение, то multicurl и вуаля, асинхронный вызов воркеров.
 
Сверху