Интересный вопрос. На это нет правильного или однозначного ответа. Каждый из нас предоставит ответ, основанный на том, насколько хорошо работает конкретное решение.
Позвольте мне попытаться предоставить решение и набор шагов, которые вы можете предпринять, чтобы завершить решение.
- Ваши данные из вашего описания - это набор объектов кинофильмов, которые будутчасто искал. Большое количество операций чтения.
- И это будет введено один раз и несколько раз обновлено.
- Включает много текстового поиска и сортировки на веб-интерфейсе
- Вы используетеNodeJS и архитектура типа клиент-сервер для вашего приложения, так что это будет включать в себя REST API
Итак, выше приведены некоторые характеристики, которые я мог бы указать, которые мы будем использовать для нашего решения. Поскольку мы видим, что данные, которые у вас есть, должны быть хорошо доступны для поиска и в режиме реального времени, они состоят в основном из данных объекта JSON, которые являются динамическими и могут изменяться. мы можем использовать эластичный поиск, MongoDB или любой другой текстовый поиск, поддерживающий NoSQL DB.
Теперь, когда у нас есть база данных, мы решили приступить к проектированию потока данных.
Важным шагом здесь является проектирование базы данных и то, как вы можете эффективно создавать ссылки, и единственный человек, который может это сделать, это вы, поскольку у вас есть лучшее понимание предметной области.
Шаг 1 - Сначала объект кинофильмов должен быть проанализирован и вставлен в базу данных и / или индексы эластичного поиска. Это, я думаю, то, что вы уже сделали в меньшем масштабе, храня объекты в массиве all movies
, который может действовать как буфер на стороне клиента. Когда буфер заполнен, вы можете выгрузить массив allMovies
в бэкэнд, сделав вызов REST API с помощью XHR или AJAX из вашего приложения.
// Incoming movies
var newMovie = {your data from forms, other source, etc}
allMovies.push(newMovie);
if(allMovies.length >= 20 )
{
//make API call to backend.
//empty the buffer
allMovies = [];
}
//else wait for new movie
Шаг 2 : ВклБэкэнд просто хранит данные в вашей базе данных, индексирует наиболее искомые поля. Вот ссылка на 2 базы данных, которые я упомянул.
обратите внимание на то, что индексация эластичного поиска также вставляет данные, где MongoDB имеет 2 шага операций вставки и индексации.
Шаг 3 : это может быть та часть, где вы показываете и позволяетепользователи ищут через вашу базу данных фильмов. Здесь вам нужно будет создать новый API, который предоставит возможность выполнять пользовательский поиск пользователям и, следовательно, веб-интерфейсу приложения. Может быть несколько API или одна конечная точка API, которая принимает несколько параметров, таких как поиск и сортировка.
* Последний шаг - объединение всего этого для получения результатов для вашегоприложение без шва. Я попытаюсь проиллюстрировать этот поток на простой диаграмме.