2012-04-10 4 views
0

데이터 백엔드가 MySQL 데이터베이스이지만 이전 데이터베이스가 네트워크 액세스 XML 파일 인 데스크탑 파이썬 응용 프로그램이 있습니다. 그것이 xml로 구동 될 때 xml 파일에서 변경 사항을 확인하고 변경된 날짜가 (사용자 업데이트로 인해) 변경 될 때마다 응용 프로그램이 시작될 때 스레드가 생성되어 응용 프로그램이 여러 사용자 앱을 사용하면서 앱의 변화를보고 사용할 수있었습니다.SQL 테이블 업데이트를 사용자에게 알리는 가장 좋은 방법은 무엇입니까?

이제 프로그램이 성숙 해졌고 이제 온라인 상태로 나아가므로 어디서나 사용할 수 있습니다. Xml은 윈도우 밖에 있고 데이터베이스 접근 방법으로 SQLAlchemy와 함께 MySQL을 사용하고 있습니다. 그러나 정보가 하나의 XML 파일에 더 이상 저장되지 않고 SQL 데이터베이스의 여러 테이블로 분할되기 때문에 플롯이 두꺼워집니다. 이것은 일종의 '마지막으로 수정 된'테이블 값 또는 구조에 대한 아이디어를 복잡하게합니다. 따라서 질문은 데이터가 변경되고 앱을 새로 고침해야한다고 사용자에게 어떻게 알 립니 까?

  1. 각 테이블이 마지막으로 수정 된 열
  2. 일부 마지막으로 수정 된 열을 보유하고 별도의 테이블 (이 최악의 옵션처럼 보인다)가 필요 : 여기에 내 생각의 일부입니다?
  3. 서버를 통한 어떤 종류의 푸시 알림?
  4. 나는 아마 응용 프로그램이 (소켓을 통해) 연결할 수있는 SQL 데이터베이스를 호스팅하는 동일한 서버에서 매우 작은 파이썬 스크립트를 실행할 수있는 기능이 있다고 언급해야합니다. 연결된 모든 정보를 전달할 수 있습니다. 고객?

일부 추가 정보 : 매우 낮은 대역폭 것이다 전달하고 전달

  • 정보입니다. 대체로 일부 이미지의 잠재력을 지닌 텍스트입니다 (드물게 50k 이상).
  • 현재 고객 수는 수십 명으로 매우 적습니다. 그러나이 프로젝트는 수백 개의 고객을 확보 한 몇몇 대기업이 선택할 수 있습니다. 앞으로도 대역폭은 문제가되지 않을 것입니다.

어쨌든 다소 새로운 영역이기 때문에 입니까? 미리 감사드립니다!

+0

클라이언트의 수, 각 클라이언트에 푸시해야 할 데이터의 양 등에 관해 몇 가지 계몽을 제공 할 수 있습니까? 가장 좋은 솔루션은 시스템의 특성에 따라 다르며 더 높은 대역폭의 어플리케이션에 필요한보다 특별한 솔루션이 있습니다. –

+0

일부 추가 정보로 OP를 업데이트했습니다. 대부분 텍스트 데이터입니다. – Cryptite

+0

또한 데이터가 약간 만기가되면 정말 중요한가요? 약간 오래된 데이터를 허용 할 수 있습니까? 아니면 사용자 경험이 아니오입니까? –

답변

0

저는 이것이 클라이언트 - 서버 응용 프로그램이 아니라 공통 원격 저장소가있는 응용 프로그램이라는 것을 알고 있습니다.
하나의 아이디어는 웹 서비스로 변경하는 것입니다 (이것은 장기적으로 대부분의 문제를 해결할 것입니다).
또 다른 아이디어 (웹으로 전환하고 싶지 않은 경우)는 타이머를 사용하여 인터페이스의 데이터를 주기적으로 새로 고치는 것입니다.
또 다른 방법은 모든 업데이트를 받고 데이터베이스에 저장 한 다음 다른 연결된 클라이언트에 변경 내용을 적용하는 서버를 만드는 것입니다.
언급 한 처음 두 아이디어는 유지 관리, 확장 성 및 디자인 추한 문제가 있습니다.
마지막 2 개가 내 의견으로는 훨씬 낫지 만, 나는 여전히 웹 서비스에 최선을 다하고 있습니다.

+0

그것은 클라이언트 - 서버가 될 가능성이있다. (예 : 클라이언트 사이의 통신이있을 수 있으므로 서버를 통과해야합니다. 나는 불필요한 데이터로드처럼 보이기 때문에 매 5 초마다 새로 고치기를 주저합니다. 새로 고침은 _changed_ 데이터를 포함 할 필요가 없습니다. 일반적으로 새로 고침 할 데이터가 작아서 '새로 고침'하면 트릭을 수행 할 수 있습니다. 그것은 웹 서버 상호 작용의 적어도 일종의 것 같아 보이지만가는 것입니다 ... – Cryptite

+0

웹 서비스가 더 scalling하고 내 의견을 유지하기가 쉽습니다 그리고 당신은 최신 데이터와 대화 형 인터페이스를 원한다면 당신은 아약스를 추가 할 수 있습니다. 그것은 모두 응용 프로그램의 기능에 달려 있습니다. – Mihai

+0

웹 인터페이스가있을 수 있지만 현재로서는 데스크톱 응용 프로그램으로 만 사용하도록되어 있습니다. – Cryptite

관련 문제