내가 쓰고있는 프로그램의 아키텍처에 대한 동료와 토론을했고 좀 더 의견이 필요합니다.이유 및 데이터베이스 반대
상황 :
- 프로그램이 거의 실시간 (+/- 1 분)으로 업데이트해야합니다.
- 좌표계에서 오브젝트의 이동이 관련됩니다.
- 정기적으로 발생하는 이벤트가 있습니다 (예 : 개체 생성).
- 사용자 입력을 통해 언제든지 동작을 변경할 수 있습니다.
내 솔루션이었다
- 이 지속적으로 실행하고 내부적으로 데이터를 저장하는 서버를 구축 할 수 있습니다.
- 서버는 전원 오류 및/또는 충돌로부터 시스템을 보호하기 위해 규칙적인 간격으로 프로그램 상태를 덤프합니다.
그는 프로그램에 데이터베이스가 필요하며 데이터를 업데이트하려면 cronjobs를 사용해야한다고 주장했습니다. 시작점, 끝점 및 속도를 저장하여 운동 정보를 저장하고 방향 및 속도를 계산하여 cronjob에서 위치를 업데이트 (및 다른 개체와의 충돌을 계산) 할 수 있습니다.
그 이유 :이 지속적으로 실행되기 때문에
- 는 더 많은 CPU & 메모리가 필요합니다.
- Powerfailures/Crashes가 데이터를 파괴 할 수 있습니다.
- 데이터베이스가 빠릅니다. 이에 대한
내 이유가 대부분입니다
- 뿐만 아니라 전체 분에 발생할 수있는 이벤트와 같은 매우 정확한 (하지만 그 나쁘지 않을 것이다).
- 관계형 데이터에서 개체로 실행할 때마다 데이터 변환이 필요할 수 있습니다 (값 비싼 경우가 있음).
- RDBMS는 특수한 문제에 대한 일반적인 솔루션이므로 전문적인 솔루션이 더 효율적이어야합니다.
- Powerfailures (또는 다른 충돌)는 부분적으로 업데이트 된 데이터만으로 정의되지 않은 상태로 데이터를 남겨 둘 수 있습니다 (비용이 많이 드는)주의 (트랜잭션과 같은)가 발생하지 않는 한.
귀하의 의견은 무엇입니까?
어떤면에 추가 할 수있는 인수는 무엇입니까?
그는 "시작점, 끝점 및 속도 저장하기"라고 주장했습니다. 그러면 클라이언트가 위치를 계산할 수 있습니다. 이렇게하면 서버가 한 가지에 집중할 수 있습니다. 이는 효율적인 방식으로 데이터를 저장하는 것입니다. 이것은 데이터베이스를 사용하여 가장 잘 수행 될 수 있습니다. 그렇지 않으면 데이터베이스에 익숙하다고 가정 할 때 생산성이 떨어지는 직접 프로그래밍해야합니다. "Cronjobs"는 불필요한 데이터를 제거하는 데 종종 사용되며 cronjobs가 불필요한 데이터를 데이터베이스에서 제거하는 것이 합리적이라고 생각합니다. 쿼리 기반 데이터베이스를 사용하면 불필요한 데이터도 모두 필터링 할 수 있습니다. – Pindatjuh