각 고객에게 고유 한 데이터베이스를 제공 할 계획 인 SaaS 시스템을 설정하고 있습니다. 로드가 너무 커지면 추가 서버로 쉽게 확장 할 수 있도록 시스템이 이미 설정되어 있습니다. 우리는 수천 명, 심지어 수만 명의 고객이 있기를 바라고 있습니다.
질문
- 하나의 SQL Server에서 가질 수 있거나 가질 수있는 마이크로 데이터베이스 수에 실질적인 제한이 있습니까?
- 서버 성능에 영향을 줄 수 있습니까?
- 각각 100MB의 데이터베이스 10,000 개 또는 1TB의 데이터베이스 하나를 사용하는 것이 더 낫습니까?
추가 정보
"마이크로 데이터베이스"라고 말할 때 실제로 "마이크로"를 의미하는 것은 아닙니다. 우리는 수천 명의 고객을 목표로하고 있기 때문에 각 개별 데이터베이스는 전체 데이터 스토리지의 1000 분의 1 이하에 불과합니다. 실제로 각 데이터베이스는 사용량에 따라 100MB 정도입니다.
10,000 개의 데이터베이스를 사용하는 주된 이유는 확장 성 때문입니다. 사실, 시스템의 V1에는 하나의 데이터베이스가 있으며 DB가로드 상태에서 변형 될 때 불편한 순간이있었습니다.
위의 모든 CPU, 메모리, I / O에 부담을주었습니다. 비록 우리가 그 문제들을 고치더라도, 세계에서 가장 좋은 색인을 생성하더라도, 원하는만큼 성공한다면, 모든 데이터를 하나의 큰 혼킨에 넣을 수는 없다는 것을 깨닫게되었습니다 '데이터베이스. 따라서 V2의 경우 샤딩을 수행하므로 여러 DB 서버간에로드를 분할 할 수 있습니다.
작년에이 샤드 솔루션을 개발했습니다. 서버 당 하나의 라이센스이지만 Azure에서 VM을 사용하기 때문에 어쨌든 처리됩니다. 문제가 지금 제기되는 이유는 이전에 우리가 대규모 기관에만 제공하고 각 기관을 직접 설립했기 때문입니다. 다음 비즈니스 순서는 브라우저를 가진 사람은 누구나 가입하고 자신의 데이터베이스를 만들 수있는 셀프 서비스 모델입니다. 그들의 데이터베이스는 대규모 기관보다 훨씬 작고 훨씬 더 많습니다.
Azure SQL Database Elastic Pools를 시도했습니다 . 성능이 매우 실망스러워 일반 VM으로 다시 전환했습니다.