2011-09-28 4 views
0

업데이트 : 두 개의 시작 포럼에서이 완벽하게 유효한 질문을 던졌고 모든 사람들이 StackOverflow를 매우 기술적 인 질문으로 삼아 이러한 시스템을 성공적으로 설계하는 방법을 가르쳐주었습니다. StackOverFlow에서의 나의 놀라운 점은 나의 질문이 닫힌다는 것이다. 그 대답을 여기에 대답 할 수 없다면, 내가 어디에서 그런 다음 물어볼 까, 페이스 북에?여러 고객에게 서비스를 제공하기 위해 SAAS를 설계하는 방법은 무엇입니까?


지금 내 소프트웨어는 단 하나의 주 사용자와 함께 데모 단계에 도달했거나 계정으로 호출 할 수 있습니다. 이 메인 계정은 여러 주 테이블과 일부 조회 테이블을 사용합니다. 따라서 이러한 주 테이블에 저장된 데이터는 기본적으로이 계정에 대한 것입니다.

하지만 SAAS는 많은 계정을 제공하기위한 것이며 각 앱은 앱을 열 때 자신의 데이터 만 볼 수 있습니다.

제대로 설계하는 방법은 무엇입니까? 따라서 고객이 성공적으로 로그인하면 할당 된 데이터 만 볼 수 있고 드롭 다운 목록 등에서 회사의 동료 만 볼 수 있습니다.

각 주 테이블이 userId 및 companyId 열을 가져와야하며 모든 CRUD 쿼리가 행을 삽입, 삭제 또는 선택할 때 필터링해야합니까? 당신의 조언을

많은 감사, KAVE

답변

1

SaaS는 반드시 모든 고객이 동일한 데이터베이스가 있어야한다는 것을 의미하지 않습니다. 일부 시나리오에서는 하나의 데이터베이스로 충분하지만 SAAS로 CRM 또는 ERP 시스템을 구축하면 각 고객마다 별도의 데이터베이스를 사용하게됩니다. SAAS 응용 프로그램은 여전히 ​​계정 별 구성을 가질 수 있기 때문에 어떤 규칙에도 위배되지 않습니다.이 경우 구성은 연결 문자열이 될 수 있으며 필요할 때마다 데이터베이스를 만들 수있는 더 많은 권한이있는 일부 처리기 일 수 있습니다.

단일 데이터베이스를 사용하는 경우 각 레코드에 단일 데이터를 바인딩하기 위해 몇 가지 추가 데이터를 유지해야합니다. 그것은 확실히 가능하지만 같은 시간에 어렵고 오류가 발생하기 쉽습니다. 어떤 경우에는 필터링을 잊어 버릴 수 있으며 단일 계정은 다른 계정의 정보에 액세스 할 수 있으므로 응용 프로그램의 평판이 손상 될 수 있으며 즉시 고객을 잃을 수 있습니다.

일반적으로 두 가지 해결책이 모두 가능하며 사용됩니다. 이는 실제로 응용 프로그램의 세부 사항과 데이터에서 요구되는 보안 수준에 달려 있습니다. 또한 단일 데이터베이스 솔루션의 확장성에 영향을 줄 수 있으므로 고객 당 예상 데이터 양에 따라 달라집니다.

+0

각 고객에게 자체 데이터베이스를 제공하면 전체 보안 문제가 제거됩니다. –

+0

매우 흥미로운 아이디어. 앱이 실제로 CRM이라는 것은 사실입니다. 그러나 Microsoft Azure Cloud에 배포 될 것입니다. 따라서 각 고객에 대한 데이터베이스를 보유하는 것은 매우 안전한 방법 일 수 있습니다. 그러나 클라우드 데이터베이스를 임대하는 것은 비용이 많이 듭니다. 그것은 내 회사를 이익을위한 여지를 남겨 두지 않을 것입니다. 이 주제에 대해 더 공부하고 Microsoft에 연락하여 권장 사항을 알아야합니다. 더 많은 아이디어를 공유하고, 항상 새로운 아이디어를 배울 준비가되어 있습니다. – Houman

+0

나는 아주 흥미로운 것을 발견했다. http://msdn.microsoft.com/en-us/library/aa479069.aspx 격리 된 솔루션은이를 수행하는 한 가지 방법 일뿐입니다. 제 생각에는 가장 좋은 방법은 내 경우에 세 번째 "다중 거주자"라고 생각합니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/aa479086.aspx – Houman