2014-11-11 3 views
1

우리는 특히 중소기업을위한 관리 소프트웨어를 개발했습니다. 그러나 예기치 않게 몇몇 대기업은 그것을 좋아하고 그것을 사용하기 시작했습니다. 문제는 소프트웨어가 로컬 (한 상점)에서만 작동하고 큰 회사는 소프트웨어를 온라인 (여러 장소에 있지만 동일한 데이터베이스를 사용하는 2 개 이상의 상점)으로 작동시키기를 원합니다.로컬 소프트웨어를 온라인 소프트웨어로 변환

우리는 이미 존재하는 JAVA Swing 사용자 인터페이스를 사용하여 로컬 소프트웨어를 온라인으로 작동시키고 싶습니다.

우리는 몇 가지 해결책에 대해 생각해 왔지만 큰 변화가 될 수 있으므로 앞으로 나아갈 수있는 최선의 방법이 무엇인지 알고 싶습니다.

중요 정보 :

  • 사용자 인터페이스는 자바 스윙과 데이터베이스는 PostgreSQL을합니다.

  • 우리 소프트웨어를 사용하는 수천 명의 고객이 있으며 온라인에서도 사용하고 싶습니다.

다음은 우리가 생각한 해결책입니다. 더 좋은 방법이 있다면 알려주세요.

솔루션 # 1

인터넷에서 하나의 데이터베이스에 연결된 모든 클라이언트.

단점 :

  1. 매 쿼리는 인터넷에 접속해야합니다.
  2. 클라이언트의 소스 코드에는 데이터베이스 암호가 있어야합니다. 그렇다면 보안은 완전히 손상 될 것입니다.

솔루션 # 2

모든 클라이언트는 서로 다른 암호로, 인터넷에 자신의 데이터베이스를 가질 것이다.

단점 :

  1. 매 쿼리는 인터넷에 접속해야합니다.
  2. 수천 개의 데이터베이스가 필요합니다.
  3. 유지 관리가 어렵습니다.

솔루션 # 인터넷에서 3

하나의 데이터베이스 만 고객을 검증하는 웹 서비스를 통해 연결하는 클라이언트는 데이터를 로그인하고 쿼리 결과를 반환합니다.

단점 :

  1. 매 쿼리는 인터넷에 접속해야합니다.
  2. 웹 서비스의 구성이 약간 복잡하고 결과적으로 우리가 알지 못하는 방식으로 결과를 반환해야합니다 (간단한 csv 텍스트 또는 xml).

솔루션 # 4

enter image description here

우리의 모든 고객을위한 인터넷에 하나의 데이터베이스가 존재한다.

또한 모든 클라이언트는 로컬로 데이터베이스를 가지므로 빠른 선택 쿼리를 수행 할 수 있습니다.

모든 업데이트 쿼리는 온라인 데이터베이스에서 쿼리를 실행하고 성공적으로 완료되면 반환 할 웹 서비스로 먼저 전송됩니다.

그 외에도 때때로 로컬 데이터베이스를 온라인 데이터베이스와 동기화하는 메커니즘이 필요합니다.

단점 :

  1. 매우 복잡하고 구현하기가 어렵다.
  2. 동기화 메커니즘에는 높은 처리가 필요합니다.

더 좋은 방법이 있습니까? 방법?

답변

2

해결책 # 3과 함께 갈 것입니다. 데이터베이스 기반 서비스/API를 구축하고 데스크톱 클라이언트가 자신을 인증하고 사용하도록합니다. 솔루션 # 4에서와 같이 로컬 데이터베이스를 사용하지 않아도됩니다. 실수로 사용자를 혼란에 빠뜨리지 않고 동기화가 손실되거나 손상되지 않도록 할 수는 없습니다. 또한 로컬 데이터베이스를 사용하면 다른 클라이언트 (예 : 모바일 앱)를 만들 때 속도가 느려집니다.

해결책 # 3으로 가기로 결정하면 현재 사실상의 표준은 JSON 기반 REST API입니다. 또한 실제로 실행되는 쿼리의 수를 줄이는 데 사용할 수있는 많은 캐싱 기술이 있음을 알아야합니다.

+0

의견을 주셔서 감사합니다, 칼리드. 캐싱 기술에 대해 더 알고 싶습니다. 당신이 우리에게 사용하도록 제안한 것은 무엇입니까? – viniciussss

+0

많은 것들이 있습니다. 로컬 캐시, API 캐시, 데이터베이스 캐시 등이 있습니다. 사용 된 스택과 특정 요구 사항에 따라 다릅니다. – Khalid

관련 문제