Быстрое High Load CGI-приложение

Web/сайты Прочее

Был(а) онлайн: 09.12.18 17:23
Umen 24 года

1.0 Был(а) онлайн: 09.12.18 17:23

Недавно
Требуется написать CGI-приложение на c++ под FreeBSD, которое взаимодействует с базой данных MySQL.


В базе данных есть таблица (int ID,int TID,float X,float Y,float Z,datetime LASTREFRESH)
1.Приложение принимает на вход параметры [int id],float x,float y,float z (id не непременный параметр)
2a.если id не пришел, делаем новую запись в таблице
(соответственноID,TID генерируются уникальные, причем id!=tid, X=x,Y=y,Z=z,LASTREFRESH=now())
и запоминаем сгенерированное TID
2b.если пришел id, то пытаемся сделать update записи
(где TID=id делаем X=x,Y=y,Z=z,LASTREFRESH=now())
если ничего не нашлось, то действуем как в 2а, то есть создаем новейший ряд.
3.дальше из таблицы мы выбираем ряды, для которых SQRT(SQR(X-x)+SQR(Y-y)+SQR(Z-z))<=R,где R-константа,
жестко прописана в c++ коде. Просто говоря, мы выбираем те ряды, расстояние по координатам от которых поменьше R.
4.Удаляем из таблицы записи, старше 10 минут
5.формируем результат так
если исполняли шаг 2а, то есть снова добавляли ряд, то в первой строчке
TID
дальше на весь выбранный в шаге 3 ряд формируем строчку
ID(X,Y,Z)

Задача достаточно банальная, впрочем есть места, где дозволено проявить творческий подход,
скажем как оптимизировать вычисление расстояния, как результативнее написать SQL-запросы и т.п.

Приложение должно трудиться стремительно и стабильно, ожидаемая нагрузка >1000 обращений в секунду.
Предполагается, что Вы продемонстрируете работу приложения на своем хостинге, а потом мы выкупим у Вас исходник за обозначенную цену

Примеры:
1)
-вызов приложения:
wwww.domain.com/fastxyz?id=78&amp;x=0.10&amp;y=123.45&amp;z=31231.67
(x,y,z с двумя знаками позже запятой)
-пример результата
12(12.12,13.13,15.12)
18(100.00,13.1345,11.22)
145(34.23,11.19,15.12)

2)
-вызов приложения:
wwww.domain.com/fastxyz?x=0.10&amp;y=123.45&amp;z=31231.67

-пример результата
67
12(12.12,13.13,15.12)
18(100.00,13.1345,11.22)
145(34.23,11.19,15.12)

Чтобы добавить заявку к этому заказу, нужно войти или зарегистрироваться

Мой блок

09.12.18 17:23
Umen 24