
많은 데이터베이스가 포함된 단일 인스턴스를 보유하는 것이 가장 좋습니까, 아니면 데이터베이스를 몇 개의 인스턴스에 분산시키는 것이 가장 좋습니까?
답변1
매우 전문적인 문제를 해결하려는 경우가 아니라면 동일한 상자에 있는 여러 인스턴스 대신 하나의 인스턴스를 제안합니다. 이는 서버 관리를 더 쉽게 만들고 오버헤드에 필요한 리소스를 덜 사용합니다.
시스템 관리를 위한 아주 좋은 규칙은 프로그래밍에 잘 작동하거나 제가 예전에 그렇게 하던 시절에 했던 것과 동일한 규칙입니다. 문제를 적절하게 해결하기 위해 필요한 만큼 복잡하게 만드십시오. 그 이상도 그 이하도 아닙니다. . 여러 인스턴스는 일반적으로 여러 DB가 있는 하나의 인스턴스보다 상황을 더 복잡하게 만듭니다.
보안을 위해 사물을 분리해야 하는 경우 여러 서버 설치를 제안합니다(여기서는 하나의 물리적 상자에 가상화할 수 있음). 왜냐하면 한 상자에 있는 여러 인스턴스를 보안 경계로 간주할 수 있을지 확신할 수 없기 때문입니다.
답변2
SQL Server를 가정하면, 그것이 내가 아는 것이기 때문입니다...
단일 인스턴스 내에 보관하는 것이 좋습니다.
이를 통해 데이터베이스 전반에 걸쳐 데이터에 액세스할 때 더 높은 성능을 얻을 수 있습니다(예: db A 내에서 db B에서 무언가를 검색해야 함). 별도의 인스턴스인 경우 명명된 파이프 등을 사용하여 연결된 서버를 통해 통신을 수행해야 합니다. 단일 인스턴스 내에서 모든 DB에 직접 액세스할 수 있습니다(보안 제약이 있음).
이들을 모두 합치면 단일 실패 지점에 노출될 가능성이 있지만 SQL Server 자체는 매우 강력합니다. 전체 시스템이 실패할 수도 있지만(모든 인스턴스가 다운됨) 이러한 방식으로 단일 인스턴스 배열을 선호하게 만드는 종류의 실패는 본 적이 없습니다.
스토리지를 파일 수준까지 관리할 수 있으므로 여러 인스턴스로 분리하는 것은 도움이 되지 않습니다.
어떻게든 SQL 주입 공격을 당한다면 보안에 미치는 영향에 대해 생각해 볼 수 있습니다(예방하기가 너무 쉽기 때문에 변명의 여지가 없습니다!). 그러나 인스턴스 간에 연결된 서버가 있으면 더 이상 보호를 받을 수 없습니다.
답변3
우리가 말하는 SQL 서버에 관계없이, 일반적으로 다른 사람들이 이미 언급한 모든 이유 때문에 가능하다면 모든 데이터베이스를 하나의 인스턴스에서 실행합니다. 더욱이, 한 인스턴스가 로드를 잘 처리하지 못하는 지점에 도달하면 다른 인스턴스가 아닌 다른 머신을 추가해야 할 때입니다. 제가 생각할 수 있는 유일한 예외는 자체 인스턴스로만 실행되는 애플리케이션입니다. 물론 그러한 소프트웨어는 가능하면 피하거나 다른 컴퓨터에 배치하는 것이 가장 좋습니다.
답변4
메모리 관점에서(다시 MS SQL Server로 가정) 단일 인스턴스 내에 여러 데이터베이스를 사용하면 일반적으로 더 효율적으로 사용할 수 있습니다.
기성 애플리케이션에서 필요할 때 여러 인스턴스를 실행합니다. 우리가 개발하는 것의 경우 모든 것을 단일 인스턴스에 넣습니다.