Считается ли это антипаттерном «База данных как МПК»? - PullRequest
2 голосов
/ 16 января 2012

Я начал разрабатывать приложение, которое состоит из двух частей. Вся система действует как приложение для цифровых вывесок. Все находится на одной физической машине.

Первый компонент - это административный бэкэнд для управления контентом. Пользователи могут планировать и загружать мультимедийные файлы. Это веб-приложение, доступное через браузер.

Вторая часть - медиаплеер. Его задача - в основном загружать данные, загруженные людьми, и отображать их. Метаданные для них сохраняются в базе данных (например, сколько времени должно отображаться это изображение, что дальше ...) и физические данные в файловой системе, поскольку все они находятся на одной машине.

Все связанные данные хранятся в базе данных PostgreSQL. Есть основная информация о расписании + пути к содержимому файловой системы, а не их двоичная форма.

Существует соединение сокетов через локальную петлю между этими двумя. Существует несколько очень простых способов коммуникации и анализа команд (проверка состояния, выход, обновление содержимого). Если пользователь загружает и планирует новый контент или меняет текущий с помощью веб-интерфейса - в медиаплеер отправляется сообщение через сокет, в котором ему предлагается создать новое расписание.

Однако, как только игрок получает сообщение для проверки нового контента, он загружает данные планирования из базы данных.

Я хотел бы знать, рассматривается ли это как база данных как антипаттерн IPC? Если да, то каковы были бы лучшие способы ее решения?

1 Ответ

3 голосов
/ 16 января 2012

Мне это совсем не похоже.Данные планирования - это что-то постоянное, нет?Расписание может быть периодическим, длиться долго?Получить их из базы данных можно.

«База данных как IPC» будет, если вы отправите «сообщения», вставив, скажем, строку «exit» в базу данных, и медиаплеер решит, когда выйти, выполнив запросэта таблица и проверка на «выходное сообщение» в ней каждые 15 секунд или что-то в этом роде.

Нет ничего плохого в том, что Процесс А вставляет данные, а затем отправляет сообщение Процессу В, которое говорит: «Я создал новые данные, вы можетеинтересоваться тем, что данные, которые вы создали, на самом деле являются постоянными данными, которые принадлежат базе данных.Проблема только в том, что то, что вы помещаете в базу данных, на самом деле не является постоянными данными, а вы просто используете это как промежуточный промежуточный шаг.

...