저는 여러 사업부에 적용될 응용 프로그램을 개발하도록 요청 받았습니다. 응용 프로그램은 기본적으로 각 장치마다 동일하지만 기본 데이터베이스의 구조는 변경되지 않는 사소한 절차 차이가 있습니다. 비즈니스 단위당 하나의 데이터베이스를 사용해야합니까, 아니면 모든 단위에 대해 하나의 큰 데이터베이스를 사용해야합니까? 사업 단위는 완전히 별개입니다.하나의 큰 데이터베이스 또는 클라이언트 당 하나?
답변
선호도는 클라이언트 당 하나의 데이터베이스에 대한 것입니다. 장점 : 클라이언트가 너무 커질 경우
, 그들은 이동이 쉽다 - 백업, 복원, 붐을 연결 문자열을 변경합니다. 데이터가 대규모 데이터베이스의 다른 사람들과 섞여있을 때 그렇게 해보십시오. 스키마와 파일 그룹을 사용하여 격리 할지라도 그것들을 이동하는 것은 떡 먹기가 아닙니다.
클라이언트의 데이터를 삭제할 때 삭제됩니다.
정의에 따르면 각 고객의 데이터가 분리되어 있습니다. 이것은 종종 원하는 것이며 때로는 필요가 될 수 있습니다. 때로는 법적 구속력을 지닙니다.
데이터베이스 내의 모든 코드가 더 간단합니다. 클라이언트의 스키마 (매개 변수화 할 수 없음)를 포함 할 필요가 없으며 테이블을 클라이언트를 나타내는 추가 열로 어지럽게 처리 할 필요가 없습니다 .
명의 많은 200 또는 500 데이터베이스를 관리하는 10 데이터베이스를 관리하는 것보다 훨씬 더 열심히이라고 주장합니다. 제 경험상 전혀 다르지 않습니다. 작업을 자동화하는 스크립트를 만들고, 인덱스 유지 관리 및 백업 작업을 비틀어 버립니다.
잠재적 인 단점은 인스턴스 당 4 자리 이상의 데이터베이스의 영역에 들어가서 여러 서버 (임계 값은 실제로 작업량과 하드웨어에 따라 다르기 때문에 숫자를 선택합니다). 시스템을 올바르게 구축한다면 두 번째 서버를 추가하고 새로운 데이터베이스를 설치하는 것이 매우 간단해야합니다. 다시 말하지만 앱은 각 클라이언트의 연결 문자열을 인식해야하며 다른 서버를 사용하여 수행하는 모든 작업은 연결 문자열이 가리키는 인스턴스를 변경합니다.
dba.SE에 대한 몇 가지 질문이 있습니다. 그들은 모두 SQL Server에 대한 아니지만 개념과 문제의 대부분은 보편적 :
https://dba.stackexchange.com/questions/7924/one-big-database-vs-several-smaller-ones
귀하의 질문은 디자인 질문입니다. 이에 응답하려면 빌드하려는 시스템의 요구 사항을 이해해야합니다. 기술적 관점에서 보면 SQL Server 또는 실제로 모든 데이터베이스가 두 시나리오 중 하나를 처리 할 수 있습니다.
다음은 몇 가지 사항입니다.
첫 번째 질문은 클라이언트가 데이터를 분리하는 방법입니다. 여러 비즈니스 단위의 데이터를 함께 사용하는 것이 합법적이지 않을 수 있습니다 (예 : 은행의 투자 측면 및 시장 분석 측면). 이러한 상황에서는 별도의 데이터베이스가 솔루션입니다.
다음 질문은 보안입니다.어떤 상황에서는 클라이언트가 자신의 데이터가 다른 클라이언트 데이터와 섞여 있다는 사실을 알고 매우 불편할 수 있습니다. 작은 실수와 기밀 정보가 우연히 공유됩니다. 이는 같은 회사의 여러 사업부에서 문제가되지 않을 수도 있습니다.
다른 가동 시간 요구 사항, 업로드 요구 사항, 사용자 정의 및 다른 도구와의 상호 작용을 처리해야합니까? 하나의 비즈니스 유닛이 다른 비즈니스 유닛이 관심이 없다는 것을 고려하여 커스터마이즈가 필요하다면 다른 데이터베이스를 제안합니다.
또 다른 고려 사항은 성능입니다. 이 응용 프로그램은 많은 비싼 자원을 사용합니까? 그렇다면 다른 데이터베이스 (잠재적으로 다른 서버)에서 응용 프로그램을 분할 할 수있는 것이 매우 바람직 할 수 있습니다.
반면에 많은 데이터가 공유되고 저장소가 실제로 동일한 기본 기능을 가진 중앙 저장소 인 경우 하나의 데이터베이스가 좋은 선택입니다.
고든 고마워, 내 고객은 완전히 다른 분야이지만 같은 분야에 있기 때문에 '별개이지만 동등한'데이터베이스가 답이라고 생각합니다. –
- 1. 테이블 당 하나의 저장소 또는 기능 섹션 당 하나의 저장소?
- 2. Postgresql - 모든 사용자를위한 하나의 데이터베이스 또는 고객 당 하나의 데이터베이스
- 3. 클라이언트 당 하나의 데이터베이스 또는 하나의 데이터베이스에있는 모든 클라이언트. 어느 것을 온라인 신청에 사용해야합니까?
- 4. 데이터베이스 인스턴스 당 하나 이상의 사용자가 있습니까?
- 5. Mongodb 단일 데이터베이스 대 클라이언트 당 데이터베이스 vs 클라이언트 당 데이터베이스
- 6. 클라이언트 당 여러 데이터베이스의 유용성 대 하나의 데이터베이스
- 7. 클라이언트 당 mysql 데이터베이스 분할하기
- 8. C++ 예외 - 라이브러리 당 하나 또는 맞춤형
- 9. Grails와 다중 데이터베이스 (호스트 당 하나)?
- 10. 여러 개의 sqlite 데이터베이스 (파일 당 하나의 테이블)를 하나의 큰 sqlite 데이터베이스로 결합
- 11. 클라이언트 당 하나의 포트에 장단점이 있습니까?
- 12. 하나의 큰 데이터베이스를 사용하거나 고객 당 단일 데이터베이스를 사용하십시오
- 13. WebSockets - 하나 또는 여러 개?
- 14. 많은 데이터베이스가있는 하나의 데이터베이스 구조 또는 하나의 글로벌 데이터베이스?
- 15. 부스트 asio - 여러 streambufs 또는 연결 당 하나?
- 16. CMS 데이터베이스 디자인 - 사이트 당 마스터 데이터베이스 또는 다중 -Db
- 17. 웹 애플리케이션 당 하나 또는 여러 개의 서블릿이 필요합니까?
- 18. 클라이언트 당 하위 도메인?
- 19. 하나의 큰 테이블이나 그들을 부셔? (최적의 데이터베이스)
- 20. 하나 하나 많은 데이터베이스 관련
- 21. 더 나은 점은 많은 유사한 데이터베이스 또는 유사한 테이블을 가진 데이터베이스 하나 또는 하나의 테이블을 가진 하나의 데이터베이스를 갖는 것입니다.
- 22. couchdb : 계정 당 하나의 데이터베이스 대 하나의 데이터베이스에있는 데이터베이스 w. 네임 스페이스/속성
- 23. 하나의 큰 수표 또는 여러 작은 것?
- 24. 비슷한 개체 당 하나의 테이블?
- 25. MVC 응용 프로그램의 컨트롤러를 도메인 개체 당 하나 또는 관련 작업 그룹 당 하나씩 사용해야합니까?
- 26. 데이터베이스; 하나 또는 두 개의 고유 필드?
- 27. 클라이언트 당 마스터 페이지 분리
- 28. 연결 당 하나의 인터프리터/스레드?
- 29. CMS/전자 상거래 asp.net 프로젝트 : 하나의 데이터베이스 또는 여러 데이터베이스?
- 30. 큰 파일 하나 또는 여러 개의 작은 파일이 포함되어 있습니까?
대단히 감사합니다. 아론, 내 생각을 거의 정확하게 반복했습니다. –