2009-09-28 7 views
1

임차에 관한 대부분의 질문은 멀티 테넌시 데이터베이스 디자인 문제를 중심으로합니다. 단일 임대에 대해 알고 싶지만 여러 응용 프로그램에 대해 알고 싶습니다. 제가 개발중인 소프트웨어는 단일 사용자가 단일 코드 기반에서 여러 응용 프로그램 ("섹션"이라고 부릅니다)을 만들 수있게합니다 :단일 임차인, 다중 애플리케이션 데이터베이스 설계?

  • 사용자는 domain.com/application-blog1 내에 블로그를 만들 수 있습니다 , domain.com/application-blog2에서 또 다른 블로그.

나는 모든 것을위한 단일 데이터베이스를 이미 결정했다. 그러나 나는 다른 애플리케이션 인스턴스 또는 동일한 테이블에 대해 여러 개의 테이블을 사용해야하는지 여부를 결정하지 않았다. 아마도 "섹션 ID"필드를 사용하여 구분할 수있다.

저는 mysql과 myisam 테이블을 사용하고 있습니다. 동일한 테이블에 모든 것을 저장하면 많은 응용 프로그램 인스턴스가 실행되는 경우 잠금 문제가 발생할 수 있습니까?

주제에 대한 귀하의 경험은 어떻습니까?

답변

1

저는 사람들이 일반적으로 동일한 데이터베이스에서 여러 테이블을 사용한다고 생각하지 않습니다. 동일한 응용 프로그램의 인스턴스가 여러 개있는 경우 일반적으로 별도의 데이터베이스가 필요합니다. 이는 대개 최종 사용자 작업이 아닌 새 인스턴스가 관리 상 생성되는 경우에만 해당됩니다. 이 경우 데이터베이스의 이름을 구성 파일에 저장하고 소프트웨어를 올바른 데이터베이스에 연결합니다.

귀하의 경우 sectionIds를 사용하여 단일 스키마 단일 데이터베이스 접근 방식을 사용합니다. 이것은 실제로 은 멀티 테넌시와 동일한이며 아마도 액세스 제어를 수행 할 필요가 없습니다.

물론 동시 트랜잭션에 걸쳐 잠금을 설정해야합니다. 그러나 다른 섹션에 대한 트랜잭션은 충돌하는 방식으로 레코드에서 작동하지 않으므로 문제가 발생하지 않아야합니다 (새 섹션이 작성된 경우 제외 - 사용자가 보유한 섹션을 알려주는 다른 테이블이 있음).

관련 문제