@tnsaturday

Архитектура поискового веб приложения?

В ходе реализации своей задачи я написал парсер, который обходит сайты, скрапит необходимую информацию, и записывает все это дело в 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. Как это вообще делается на практике?
  • Вопрос задан
  • 312 просмотров
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Django + postgresql + shinxsearch

Нет никакого смысла "економить" и думать, что у вас "простое" приложение - используйте фреймворк

Но судя по тексту вопроса, вам стоит начать с задач попроще и там где есть полноценные пошаговые гайды
Ответ написан
Комментировать
planc
@planc
если есть json файл, в котором нету секретной инфы, то пусть js с ним сразу и работает


Я совсем не знаю Django

flask.pocoo.org
https://habr.com/post/346306/


$sql = "SELECT * FROM data WHERE title='" . $search . "'";

https://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D...


3. AJAX.

весь проект - приключение на 30 минут, возьми обычный js + fetch
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы