많은 도시와 마을에서 초등 학교를 운영하는 NGO (Non Govt Org) 용 웹 응용 프로그램을 디자인하고 개발하는 작업이 주어졌습니다. 신청서에는 모든 학교, 학생, 자원 봉사자 및 모든 학교 교사를 기록 할 것입니다. 현재 NGO의 우산에는 약 30 개 학교가 있지만 매우 신속하게 수를 늘릴 매우 야심 찬 계획이 있습니다. Windows Azure에 응용 프로그램을 호스팅합니다. SQL Azure을 데이터베이스로 사용합니다. 이제 최소한의 지출로 데이터베이스를 설계하는 방법에 대한 까다로운 과제에 직면하고 있습니다 (NGO는 자선 단체 및 기부금으로 완전히 자금 지원을받습니다). SQL Azure의 데이터베이스는 5,10,20 ~ 50 GB와 같은 특정 크기로 제공되므로 각 데이터베이스의 최대 크기에 제한이 있습니다. 나는 다음과 같은 접근 방식을 가지고 왔습니다 :SQL Azure에서 확장 가능한 데이터베이스 설계시 도움이 필요합니다.
1) 모든 학교에 대해 5 또는 10GB 크기의 개별 데이터베이스를 생성하십시오. 각 데이터베이스에는 'student', 'subject', 'attendance'등과 같은 테이블이 있습니다.이 접근법의 문제점은 많은 데이터베이스를 만들어야한다는 것입니다. 모든 학교에 하나씩. 이것은 대폭 비용을 격추시킬 것입니다. 또한 처음에는 10GB 크기의 상당 부분이 활용률이 낮지 만 앞으로는 10GB가 학교 데이터 저장에 덜 적합 할 수도 있습니다.
2) 'school', 'student', 'attendance'등과 같은 테이블을 가진 하나의 데이터베이스를 유지하십시오. 이렇게하면 처음에는 비용이 낮지 만 데이터베이스가 가득 차기 시작하여 최대 한도에 도달 할 수 있습니다 더 많은 학교가 비정부기구에 의해 개설됨에 따라 50GB의 또한 '학생'및 특히 '출석'을위한 단일 테이블은 많은 양의 레코드를 가지며 쿼리를 느리게 만듭니다. 앞으로 다른 데이터베이스를 추가하더라도 여러 데이터베이스에 걸쳐 테이블을 분할하는 것이 얼마나 쉬운 지 알 수 있습니다.
한계를 염두에두고 더 이상 진행할 수 없습니다. 귀하의 제안이나 제안은 매우 유용 할 것입니다. 미리 감사드립니다.
편집 : 많은 사람들에게 감사드립니다. 내 질문에 대답했습니다. 나는 포인트를 얻었다. : 50GB는 거대한 공간이고 그것은 곧 채워지지 않을 것이다. 그러나 그것은 나에게 질문을 가져온다 : 학교의 수가 200, 300 또는 1000까지 자라나는 상황을 생각해 보라 !! 그렇다면 데이터베이스 디자인은 어떻게해야합니까? 나는 그 상황에서 50 GB가 크지 않을 것이라고 생각한다.
답변보다 더 많은 코멘트입니다. – Horaciux