복붙노트

[SQL] 하나 또는 여러 개의 데이터베이스

SQL

하나 또는 여러 개의 데이터베이스

SQL 서버 2008 데이터베이스 설계 문제.

나는 사이트의 사용자가 소유하고 여러 웹 사이트에 많은 양의 데이터 (메가 바이트 평균, 사이트 당 1 기가 바이트 최대)를 관리 할 서비스에 대한 아키텍처를 정의하고있다. 나는 핵심 사이트 관리 테이블 (사용자가, 지불, 연락처 세부 정보, 로그인 정보, 제품 등) 한 데이터베이스에서 개최되도록까지 데이터베이스를 분리하고, 고객의 자신의 웹 사이트에 관한 데이터베이스가 별도의 개최 여부를 고려하고 데이터 베이스.

나는 더 적합한 영역에서 사이트 관리 데이터베이스를 떠나는 웹 사이트 데이터베이스에서 수행 무거운에 더 많은 고기를 제공하기 위해 하드웨어 아키텍처를 배포 할 수 있다는 점에서 가능한 이득을보고하고있다. 그러나 나는 또한 직접 외부 키를 통해 고객에게 사이트를 관련하는 능력을 잃고 의식 해요 (I이 간 데이터베이스를 할 수없는 알까지로?).

그래서, 질문은 배 두 가지입니다 - 일반적인 용어로 시나리오 이러한 종류의 데이터는 여러 데이터베이스 속으로 분할해야한다, 또는 모든 단일 데이터베이스에서 개최해야합니까?

그것은 여러으로 분할 인 경우, 둘 사이에 밀접한 관계가 있음을 확인하기 위해 데이터베이스 계층에서 시스템의 무결성과 보안을 보호하기 위해 권장되는 방법은 무엇입니까?

당신의 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    1.이 질문에 따라서 내 대답은 가까운 주관의 회색 라인이 될 수 있지만, 적어도 나는 당신이하고있는 것처럼 소리가 무엇을 자신의 DB에 '관리자'테이블을 분리하는 것이 일반적이 될 것입니다 생각합니다. 별도 DB 인스턴스를함으로써 다음 특정 서버와 DB 인스턴스에 클라이언트를 묶을 수 있다면, 클라이언트를 추가 할 서버를 추가하기위한 몇 가지 쉬운 경로를 연다. 당신이 너무 큰있어 경우 다양한 클러스터링 원숭이 당신을 필요로 하나의 DB를 접근한다.

    이 질문에 따라서 내 대답은 가까운 주관의 회색 라인이 될 수 있지만, 적어도 나는 당신이하고있는 것처럼 소리가 무엇을 자신의 DB에 '관리자'테이블을 분리하는 것이 일반적이 될 것입니다 생각합니다. 별도 DB 인스턴스를함으로써 다음 특정 서버와 DB 인스턴스에 클라이언트를 묶을 수 있다면, 클라이언트를 추가 할 서버를 추가하기위한 몇 가지 쉬운 경로를 연다. 당신이 너무 큰있어 경우 다양한 클러스터링 원숭이 당신을 필요로 하나의 DB를 접근한다.

    [편집] 건물 각 클라이언트가 아니라 그냥 쉽게 구조 및 조직 변경을 할 때 개발 방법에 대한 톤을 설정 자체 DB의 도착 조기한다는 생각이다. 에서 2 세를 발견 지금 당신은 더 많은 고통이 될 것이다 할 필요가있다. 나는 과거에 시간의 분할 DBS 충분히 함께 일했는데 정말 당신이 상황이 무엇인지 몇 가지 아이디어를 설정할 수있는만큼 다루기 어려운 일이 아니다. 이미 클라이언트가 상황이라는 생각을 가지고있는 것처럼 여기 소리가 난다.

    내가 말했듯이 그냥 내 두 센트, 당신은이 일에 주관적에 가까운 수 있습니다.

  2. ==============================

    2.당신이 고객 당 맞춤 지원하려는 경우 별도의 데이터베이스 접근은 유효 할 것이다. 나는 값을, 그렇지 않으면 표시되지 않습니다.

    당신이 고객 당 맞춤 지원하려는 경우 별도의 데이터베이스 접근은 유효 할 것이다. 나는 값을, 그렇지 않으면 표시되지 않습니다.

  3. ==============================

    3.당신은 데이터베이스를 연결하는 링크를 사용할 수 있습니다. 귀하의 아키텍처는 스마트입니다.

    당신은 데이터베이스를 연결하는 링크를 사용할 수 있습니다. 귀하의 아키텍처는 스마트입니다.

    당신이 링크를 사용할 수없는 경우, 당신은의 사용자 데이터베이스에서 웹 사이트 데이터베이스에 항상 복제 중요한 데이터는 전용 모드를 읽을 수 있습니다.

    보안에 관하여 - 데이터베이스는 거의 고립 될 것입니다 - 그래서 가장 좋은 방법은 ASP (또는 다른 웹 LANG)와 데이터베이스 사이에 서비스 계층을하는 것입니다.

  4. ==============================

    4.이 때문에 부하의 미래에 다른 하드웨어에서 데이터베이스를 분리해야 할 것으로 예상되는 경우, 지금 그것을 분할 말하고 싶지만. 당신은 사이트 관리 데이터베이스에 주 데이터베이스에서 테이블의 일부의 사본을 밀어 복제를 사용할 수 있습니다. 지금, 당신은 당신은 당신의 볼륨이 성장함에 따라, 당신은 별도의 시스템에 데이터베이스의 일부를 이동할 수 있습니다해야하는 경우에 나중에 동일한 SQL Server 인스턴스에서 두 데이터베이스를 실행할 수 있습니다.

    이 때문에 부하의 미래에 다른 하드웨어에서 데이터베이스를 분리해야 할 것으로 예상되는 경우, 지금 그것을 분할 말하고 싶지만. 당신은 사이트 관리 데이터베이스에 주 데이터베이스에서 테이블의 일부의 사본을 밀어 복제를 사용할 수 있습니다. 지금, 당신은 당신은 당신의 볼륨이 성장함에 따라, 당신은 별도의 시스템에 데이터베이스의 일부를 이동할 수 있습니다해야하는 경우에 나중에 동일한 SQL Server 인스턴스에서 두 데이터베이스를 실행할 수 있습니다.

  5. ==============================

    5.우리는 무한히 빠른 컴퓨터가 상상 당신은 당신의 데이터베이스를 나눌까요? 당연히 아니지. 우리가 그들을 분할 유일한 이유는 쉽게 우리가 어떤 점에서 수평 확장 할 수 있도록하는 것입니다. 당신은 정말 여기에 선택의 여지가없는 클라이언트 당 1백메가바이트 - 1천메가바이트은 거대하다.

    우리는 무한히 빠른 컴퓨터가 상상 당신은 당신의 데이터베이스를 나눌까요? 당연히 아니지. 우리가 그들을 분할 유일한 이유는 쉽게 우리가 어떤 점에서 수평 확장 할 수 있도록하는 것입니다. 당신은 정말 여기에 선택의 여지가없는 클라이언트 당 1백메가바이트 - 1천메가바이트은 거대하다.

  6. from https://stackoverflow.com/questions/1676552/single-or-multiple-databases by cc-by-sa and MIT license