나는 Fog Creek이 고객 당 데이터베이스를 Fogbugz에 사용 한다는 점 을 스택 오버 플로우 팟 캐스트에서 기억합니다 . Fogbugz On Demand 서버에는 수만 개의 데이터베이스가 있다고 가정합니다.
우리는 웹 응용 프로그램을 개발하기 시작했으며 비슷한 문제가 있습니다 (많은 고객이 자체 격리 된 데이터를 가지고 있음).
고객 당 데이터베이스를 사용할 때 어떤 문제가 발생합니까? 어떻게 해결할 수 있습니까?
내 초기 생각
고객 당 데이터베이스의 장점
- 더 간단한 데이터베이스 스키마
- 보다 간편한 백업-다른 고객에게 영향을주지 않고 각 고객을 차례로 백업 할 수 있습니다.
- 주어진 고객 데이터를 쉽게 내보낼 수 있습니다.
- 더 나은 캐시 성능 –보다 활동적인 테이블 중 하나에 대한 쓰기는 쓰기를 수행 한 단일 고객에게만 영향을줍니다.
- 하드웨어 전반에 걸쳐 쉽게 확장 할 수 있습니다. 예를 들어 1 대에서 2 대의 서버로 이동해야하는 경우 고객의 절반 만 새 서버로 옮깁니다.
단점
- MySQL이 5,000 개의 데이터베이스를 처리 할 수 있습니까? 성능이 저하됩니까?
- 모든 데이터베이스에서 스키마 변경 사항을 복제하기 어려울 수 있습니다. 스키마 버전 관리, 한 버전에서 다른 버전으로 데이터베이스를 가져 오는 방법을 이해하는 스크립트와 같은 자동화 된 계획이 실제로 필요합니다.
- 모든 고객에게 공통적 인 것을하는 것은 어색하거나 불가능할 수 있습니다
- 위와 유사하지만 모든 고객에 대해 수행하려는 분석은 불가능할 수 있습니다. 예를 들어 모든 고객의 사용량을 어떻게 추적해야합니까?
USE CompanyData;