우리는 특히 중소기업을위한 관리 소프트웨어를 개발했습니다. 그러나 예기치 않게 몇몇 대기업은 그것을 좋아하고 그것을 사용하기 시작했습니다. 문제는 소프트웨어가 로컬 (한 상점)에서만 작동하고 큰 회사는 소프트웨어를 온라인 (여러 장소에 있지만 동일한 데이터베이스를 사용하는 2 개 이상의 상점)으로 작동시키기를 원합니다.로컬 소프트웨어를 온라인 소프트웨어로 변환
우리는 이미 존재하는 JAVA Swing 사용자 인터페이스를 사용하여 로컬 소프트웨어를 온라인으로 작동시키고 싶습니다.
우리는 몇 가지 해결책에 대해 생각해 왔지만 큰 변화가 될 수 있으므로 앞으로 나아갈 수있는 최선의 방법이 무엇인지 알고 싶습니다.
중요 정보 :
사용자 인터페이스는 자바 스윙과 데이터베이스는 PostgreSQL을합니다.
우리 소프트웨어를 사용하는 수천 명의 고객이 있으며 온라인에서도 사용하고 싶습니다.
다음은 우리가 생각한 해결책입니다. 더 좋은 방법이 있다면 알려주세요.
솔루션 # 1
인터넷에서 하나의 데이터베이스에 연결된 모든 클라이언트.
단점 :
- 매 쿼리는 인터넷에 접속해야합니다.
- 클라이언트의 소스 코드에는 데이터베이스 암호가 있어야합니다. 그렇다면 보안은 완전히 손상 될 것입니다.
솔루션 # 2
모든 클라이언트는 서로 다른 암호로, 인터넷에 자신의 데이터베이스를 가질 것이다.
단점 :
- 매 쿼리는 인터넷에 접속해야합니다.
- 수천 개의 데이터베이스가 필요합니다.
- 유지 관리가 어렵습니다.
솔루션 # 인터넷에서 3
하나의 데이터베이스 만 고객을 검증하는 웹 서비스를 통해 연결하는 클라이언트는 데이터를 로그인하고 쿼리 결과를 반환합니다.
단점 :
- 매 쿼리는 인터넷에 접속해야합니다.
- 웹 서비스의 구성이 약간 복잡하고 결과적으로 우리가 알지 못하는 방식으로 결과를 반환해야합니다 (간단한 csv 텍스트 또는 xml).
솔루션 # 4
우리의 모든 고객을위한 인터넷에 하나의 데이터베이스가 존재한다.
또한 모든 클라이언트는 로컬로 데이터베이스를 가지므로 빠른 선택 쿼리를 수행 할 수 있습니다.
모든 업데이트 쿼리는 온라인 데이터베이스에서 쿼리를 실행하고 성공적으로 완료되면 반환 할 웹 서비스로 먼저 전송됩니다.
그 외에도 때때로 로컬 데이터베이스를 온라인 데이터베이스와 동기화하는 메커니즘이 필요합니다.
단점 :
- 매우 복잡하고 구현하기가 어렵다.
- 동기화 메커니즘에는 높은 처리가 필요합니다.
더 좋은 방법이 있습니까? 방법?
의견을 주셔서 감사합니다, 칼리드. 캐싱 기술에 대해 더 알고 싶습니다. 당신이 우리에게 사용하도록 제안한 것은 무엇입니까? – viniciussss
많은 것들이 있습니다. 로컬 캐시, API 캐시, 데이터베이스 캐시 등이 있습니다. 사용 된 스택과 특정 요구 사항에 따라 다릅니다. – Khalid