Привет!
Пишу небольшую вебморду, которая будет просто отдавать данные из БД. Данные в БД - информация о работе некоторых скриптов - они пишут в одну таблицу время запуска\окончания работы, exit code и т.д., в другую - данные по промежуточным этапам своей работы, принцип тот же. С учетом того, что большой нагрузки не предвидится (максимум 3..4 простых инсерта в секунду в «пике») я взял sqlite (да и полноценный сервер БД тащить совсем не хочется).
В вебморде есть несколько вариантов отображения информации - текущие выполняемые скрипты, небольшая статистика - например, сколько из последних 10 скриптов отработали успешно, а сколько «упали», и т.п. Другой случай - отображение информации по текущему выполняемому скрипту (те самые промежуточные шаги).
Хочется сделать это все в реалтайме, но не могу понять как это делать правильно. Изначально планировал взять AJAX, с ним я уже сталкивался, да и сама технология, на мой взгляд, довольно простая - отправляй запросы, сервер его обрабатывает (селект в БД делает) и отдает ответ. Но потом почитал интернеты (и тут тоже топик завел), где и узнал о websocket'ах. WS показался интересным, решил в качестве сервера использовать tornado (python). С учетом того, что у меня планируются постоянные соединения клиент<>сервер и отправка данных не только по запросу пользователя, мне кажется что лучше будет не на каждый поток по определенному таймеру выполнять селекты той же статистики, а выбрать ее один раз и разослать клиентам. Не будет ли это слишком «тяжелой» задачей по сравнению с AJAX (там то клиентские запросы «размазаны» по времени) или все-таки каждый поток обрабатывать отдельно? Стоит ли использовать ws везде? То есть, например, статистику по текущим таскам и «лог» текущей задачи лучше показывать в реалтайме, а вот информацию о «последних 10 задачах» может вынести в AJAX и дергать раз в какие-нибудь 10 секунд (тут реалтайм не критичен)? Опять же везде пишут что ws хорошо работает с маленькими частыми порциями данных, но тут у меня получится что одна строчка из бд будет весить минимум байт 200 (хотя все равно меньше размера заголовков в случае AJAX получается). Всякую статику, я так понимаю, вообще нет смысла отдавать через websocket? В общем с виду технология крутая, но как правильно использовать - не пойму.
Ну и еще один вопрос вдогонку - стоит ли как-то кэшировать данные из sqlite, и если да то может что-то посоветуете?
Заранее спасибо!