2011-03-13 4 views
2

두 MVC (나는 Symfony 사용) 기반 웹 사이트간에 모델 데이터를 공유하는 최선의 방법을 찾고 있습니다.웹 응용 프로그램간에 모델 데이터 공유

배경 정보

우리는이 개 웹 사이트 A와 B 같은 소프트웨어는 두 사이트에 사용되지만, 다른 고객 데이터가 있습니다. 고객은 콘텐츠를 공개 할 수 있습니다. 이제 사용자의 콘텐츠가 자동으로 두 웹 사이트에 모두 공개되는 이점이있는 새로운 지불 옵션을 도입 할 것입니다.

구현! 두 응용 프로그램에 대해 동일한 데이터베이스를 사용

  1. :

    나는 세 가지 구현을위한 아이디어를 가지고있다. 그런 다음 적절한 표적 웹 사이트 (A/B)를 나타내는 표를 한 열씩 확장해야합니다.

    나는 나쁜 디자인이 될 것이라고 생각합니다. 각 웹 사이트에 속하지 않은 쿼리 결과 집합에서 레코드를 제외하기 위해 많은 코드를 다시 작성해야합니다.

  2. 두 개의 데이터베이스 사용.

    제 의견으로는 성능이 크게 떨어지고 구현하기가 어려울 것입니다. 데이터는 항상 두 번 요청해야합니다. 또한 앞으로는 웹 사이트 C, D, E가있을 수 있습니다.

  3. 웹 서비스를 통해 두 개의 데이터베이스를 동기화합니다.

    일부 데이터는 두 번 저장됩니다. 따라서 이러한 데이터 조각에 대한 모든 작업은 두 번 수행해야합니다 (작성, 읽기, 갱신, 삭제).

각 솔루션에는 심각한 단점이 있기 때문에 지금은 붙어 있습니다.

의견이 있으십니까? 그렇지 않다면 어느 것이 가장 좋습니다.

답변

4

첫 번째 옵션이 가장 좋다고 생각합니다. 가능한 한 중복 데이터를 줄이고 최상의 성능을 발휘해야합니다. 특정 웹 사이트에 속하지 않은 레코드를 제외하려면 추가 검사를 추가해야하지만 모든 솔루션에는 작업이 필요합니다.

+2

모델 설정 방법에 따라 개별 사이트의 FooPeer (Propel) 또는 FooTable (Doctrine) 클래스를 수정하여 개별 사이트의 데이터를 필터링 할 수 있으며 개별 쿼리를 다시 작성할 필요가 없습니다. – yitznewton

+0

@ yitznewton에 동의합니다. 모델 클래스를 수정하여 필터를 투명하게 적용하고 많은 인스턴스를 처리했습니다. 가입 케이스를 고려해야합니다. – Raise

+0

멀티 테넌시의 개념이이 맥락에서 맞는다고 생각합니까? 나는 각 웹 사이트를 세입자로 정의 할 수있다. 사실이라면이 symfony 플러그인을 사용할 수 있습니다 : http://www.symfony-project.org/plugins/sfMultiTenantPlugin – fishbone

관련 문제