В ходе реализации своей задачи я написал парсер, который обходит сайты, скрапит необходимую информацию, и записывает все это дело в JSON файлик, с которым я потом работаю. Я хочу перенести это приложение в онлайн и существенно расширить его функционал, разумеется в первую очередь в сторону фронтэнда, поскольку наивно думать, что кто-то будет пользоваться приложением с интерфейсом командной строки.
Встает вопрос, как все это лучше организовать в плане архитектуры, чтобы это максимально шустро вертелось на дешевом хостинге. Юзкейс примерно гугловский лайв сервер:
1. Пользователь вводит запрос в строке поиска.
2. После нажатия кнопки enter, получает результаты поиска без перезагрузки страницы.
Теперь вопросы:
1. SQL vs NoSQL vs JSON.
В данный момент я имею скрипты python, которые открывают, пишут и читают с json файла. Насколько это большая потеря по времени поиск по json файлу по сравнению с поиском по базе данных? То есть наверное правильно все это складывать в БД, просто на моих юзкейсах (массив 700-800 объектов 5-6 key-value пар вида unicode строк и обычных url'ов) даже на некроноуте 12 года это все работает мгновенно, но в условиях многопользовательской среды как все это будет работать с учетом GIL лока python и того, как на чтение открываются файлы в линуксе?
2. PHP vs Python.
Так исторически сложилось, что я использую Python в качестве языка общего назначения, а бэкэнд пишу на PHP. Я бы хотел избежать использования двух языков и по возможности остаться с Python. Я совсем не знаю Django и вот вопрос: PHP отлично использодинуется для веб разработки без фреймворков, особенно, в случае простого приложения как в данном случае: одна страница (не нужен шаблонизатор), нет аутентификации (соотвественно с пользователями нет возни с правами доступа, имейлами, регистрации и т.п.), по сути весь код:
$search = $_POST['search_request'];
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM data WHERE title='" . $search . "'";
$result = mysqli_query($conn, $sql);
echo $page;
Я начал курить Django и там довольно много всего, это огромный полновесный MVC (хотя сами они его почему-то называют MTV, в чем разница я пока не понял) фреймворк и там довольно много свистелок и перделок. Есть ли способ написать на Python веб-приложение без фреймворка, в стиле PHP? С учетом, что мой функционал очень простой: один POST запрос, пара mysql query, разве для этого стоить заводить фреймворк, это же чудовищный оверхед?
3. AJAX.
Я хочу наладить фронтэнд, чтобы поиск работал без перезагруки. Как я понял, это делается путем AJAX. Раньше делали на jQuery, сейчас вроде модно fetch и axios. Как это вообще реализуется лучше всего?
Дайте, пожалуйста советов по работе над таким проектом. Приветствую туториалы, best practices и всякие how-to. Как это вообще делается на практике?
1. Насколько медленней использовать использовать json по сравнению с базой данных?
2. mysqli_real_escape_string($search);
3. JSON получается довольно здоровый, это нормально инклюдить файл весом несколько мегабайт?
4. Я не хочу, чтобы человек просто мог скачать весь файл.