У меня было обсуждение с коллегой об архитектуре программы, которую я пишу, и мне хотелось бы получить еще несколько мнений.Причины для и против базы данных
Ситуация:
- Программа должна обновить в ближайшее реальное время (+/- 1 минута).
- Он включает в себя перемещение объектов по системе координат.
- Существует ряд событий, которые происходят через равные промежутки времени (т. Е. Создание объектов).
- Движения могут меняться в любое время через пользовательский ввод.
Мое решение было:
- Построить сервер, который работает непрерывно и сохраняет данные внутри.
- Сервер регулярно выгружает состояние программы для защиты от сбоев питания и/или сбоев.
Он утверждал, что для программы требуется база данных, и я должен использовать cronjob для обновления данных. Я могу хранить информацию о движении, сохраняя начальную точку, конечную точку и скорость и обновляя положение в cronjob (и вычисляя коллизии с другими объектами), вычисляя направление и скорость.
Его причины:
- Требуется больше CPU & памяти, потому что она работает постоянно.
- Powerfailures/Crashes могут уничтожить данные.
- Базы данных быстрее.
Мои доводы против этого в основном:
- Не очень точно, как события могут произойти только в полных минут (не будет так плохо, хотя).
- Требуется (возможно, дорогостоящее) преобразование данных при каждом прогоне от реляционных данных к объектам.
- RDBMS - общее решение для специализированной проблемы, поэтому специализированное решение должно быть более эффективным.
- Мощные сбои (или другие сбои) могут оставлять данные в неопределенном состоянии только с частично обновленными данными, за исключением случаев (возможно, дорогостоящих) мер предосторожности (например, транзакций).
Ваше мнение по этому вопросу?
Какие аргументы вы можете добавить для любой стороны?
Он утверждал, что «сохраняет начальную точку, конечную точку и скорость»: тогда вы можете позволить клиенту вычислить позицию. Таким образом, ваш сервер может сосредоточиться на одном; который эффективно хранит данные. Это можно сделать лучше всего с помощью базы данных. Иначе вам придется программировать его самостоятельно, что менее продуктивно, если у вас есть опыт работы с базами данных. «Cronjobs» часто используются для очистки ненужных данных, и я думаю, что разумно, чтобы cronjobs удаляли ненужные данные из базы данных. Если вы используете базу данных на основе запросов, вы можете даже отфильтровать все ненужные данные. – Pindatjuh