2010-07-18 4 views
1

SQL Server 백엔드가있는 .NET 웹 프로젝트에서 작업하고 있습니다. 재고 데이터로 채워지는 데이터베이스의 핵심 부분이 있습니다. 이 데이터는 매일로드 응용 프로그램에 의해로드됩니다.데이터베이스 디자인 감 결합

이 데이터는 웹 사이트에 계속 읽혀 있어야합니다. 웹 개발자가 주식 데이터에 특정한 테이블을 수정하거나 일일 업데이트에 의해 재정의 될 수 있기 때문에이 테이블에 데이터를 쓰고 싶지는 않습니다.

분명히 인증, 관리자 등과 같이 웹 사이트에서 요구하는 많은 테이블이있을 것이며, 경우에 따라 사용자가 주식 데이터를 조작하여 => the GOOG 'UsersGoogleStock Inc.'의 주식 이름을 표시해야합니다. 'Google Inc.'라는 저장된 일일로드 된 이름 대신

제 질문은 두 개의 별도 데이터베이스가 있어야합니까? 하나는 내 읽기 전용 재고 데이터이고 다른 하나는 웹 사이트 사양입니다.

답변

-1

별도의 데이터베이스가 있어야합니까?

웹 개발자에게 업데이트 할 내용과 업데이트 할 수없는 내용을 알려주십시오. 불필요한 기술적 복잡성으로 단순한 사회 문제를 만들어 내지 마십시오. 그들과 대화하십시오. 규칙을 설명하십시오. 다른 대안보다 쉽고 장기적으로 성공합니다.

+1

절대 안 되나요? 왜 안돼? 동일한 서버에있는 여러 DB는 완전히 유효한 제안입니다. 소금의 가치가있는 엔진은 그 시나리오에서 잘 최적화됩니다.나는 그가 같은 단일 클래스에서 그의 모든 메소드를 코딩해야한다고 생각한다. 불필요하게 복잡 해지는 것을 원하지 않을 것이다. – Joe

3

아니요, 하나의 데이터베이스가 있어야합니다. 웹 사이트에서 사용하는 인증 (일반적으로 사용자 이름/암호)은 읽고 쓸 수있는 것을 제어하기위한 적절한 보안이 있어야합니다.

0

INSERT, UPDATE 또는 DELETE에 필요한 권한을 테이블 단위로 부여하거나 보류 할 수 있으므로 별도의 데이터베이스가 필요하지 않습니다. 동일한 데이터베이스 내에 하나 이상의 스키마를 작성하여 모든 프로그래머에게 업데이트 할 수있는 것과 수행 할 수없는 것을 명확하게 할 수 있습니다.

선택하는 데이터베이스에 관계없이 GRANT 또는 REVOKE 설명서를 참조하십시오.

2

세 가지 답변은 모두 반대했습니다.

토론에 요점을 추가하려면 잠금 오버 헤드가 줄어들 기 때문에 데이터베이스를 읽기 전용으로 설정하려면 modest performance benefit이 필요합니다.

0

외부 원본에서 채워지고 트랜잭션 로그에서 복구 할 필요가없는 테이블에서 간단한 복구 만 수행하면되므로 별도의 데이터베이스에 저장합니다. 단순 복구 만 필요한 테이블을 데이터 복구를위한 트랜잭션 로그 세부 정보가 필요한 테이블과 분리하는 것이 좋습니다. 이렇게하면 가져 오기 속도가 빨라지고 전체 복구가 필요한 데이터베이스가 가져 오기로 인해 속도가 저하되지 않으므로 빠르게 작동합니다.

둘 다 동일한 복구 모드를 필요로하는 경우 하나의 데이터베이스에 포함될 수 있으며 개발자가 권한이없는 쿼리를 설정할 수 있습니다. 물론 개발자는 어쨌든 프로덕션 환경에서 어떤 것을 수정할 권한이 없어야합니다. dba 또는 구성 담당자 또는 관리자 만 생산 변경을 홍보해야합니다.