Привет, Лор!
Пришлось в кои-то веки заняться веб-девелопментом, за день обозрел связки апачей с перлом, в итоге откопал Dancer, понравилось. Создал dancer -a MyApp, костяк готов, теперь ищу бест практисес по работе с базами. Допустим схему я набросаю, положу в корень проекта и при разворачивании запущу ее однократно из под sqlite3.
Но, во-первых, хочется чего-то более высокоуровневого, чем alter table, если понадобится чуток изменить схему на рабочем приложении. Чем пользуется лор для работы со схемой базы? Есть ли какие-то фреймворки или библиотеки, которые еще не орм, но уже умеют «добавить/удалить колонку с foreign key и целостностью», или например преобразовать тип из 15.2 в 15.3? Что-то вроде EAV, но простое и без хранения схемы в базе. Или принято глушить приложение и писать отдельный perl/sql скрипт для одноразового обновления? Возможно я вообще что-то делаю не так.
Второе, как правильно готовить многопоточность на дансере, например чтобы сложный запрос с вычислениями лочил часть базы (можно просто аккуратным мутексом), но выполнялся в фоне? То есть get'ы и post'ы чтобы выполнялись параллельно по возможности. Или нужно мутить к-н plack и уже на нем лочить. Или выкинуть это на уровень бд? Пока не пойму как все должно выглядеть, может оно и не надо, т.к. аудитория приложения планируется до 50 юзеров, время отчетов меряется максимум в секундах.
Ну и третье — куки. Я так понял дансер кладет в куки uid клиента, а по нему валяется sessions/<uid>.yml. Нормально ли все подряд хранить в сессии, не заморачиваясь с дополнительными куками, или что-то стоит хранить в сессии, а что-то только в куках? И как чистить мертвые сессии, если данных там планируется немало, да и вообще надо ли?
ps. cetjs2, добавь плиз тег dancer, если нужно.
pps. перл потому что не знаю почему, советы про рельсы и прочие вундервафли приветствуются.