SQL Server-보고서를위한 별도의 데이터베이스?


19

SQL Server에는 각 웹 응용 프로그램에 대한 데이터베이스가 있습니다. 보고서의 경우 Reporting Services를 사용하며 모든 보고서 데이터 (보고서 매개 변수 포함)는 저장 프로 시저에서 가져옵니다.

저장 프로시 저는 보고서의 데이터와 동일한 데이터베이스에 있습니다. 예를 들어, 주식 보고서를 제공하는 procs는 주식 데이터베이스에 있습니다. 일부 보고서는 둘 이상의 데이터베이스에서 정보를 표시 한 다음 해당 소스 데이터베이스 중 하나에 proc이 있습니다. 보고서 매개 변수는 상점, 직원 등과 같은 데이터가있는 Enterprise 데이터베이스의 proc에서 데이터를 가져옵니다.

즉, 모든 보고서는 최소한 Enterprise 데이터베이스에 연결되어 있고 다른 데이터베이스에 연결되어 있으며 때로는 그 이상입니다.

제 질문은 : 보고 절차를 별도의 "보고서"데이터베이스로 옮기는 이점이 있습니까 ? 다른 서버로 보고서를 이동하면 얻을 수있는 이점을 알고 있으며 이에 대해 이야기하고 있지 않습니다. 동일한 서버에있을 것입니다.

이것에 영향을 줄 수있는 것들은 다음과 같습니다 :

  • 보고서에 대해 둘 이상의 데이터베이스 연결이 있으면 보고서 속도에 영향을 줍니까?
  • 보고 프로세스를 데이터와 별도의 데이터베이스에두면 인덱스 된 뷰를 사용할 수 없습니까?
  • 별도의 데이터베이스에서 보고서를 관리하는 것이 더 쉽고 어렵습니까?

당신의 생각을 알려주세요.


내 질문은 : RS 및 / 또는 DW를 다른 서버로 옮길 때이 새로운 서버에 기존 데이터베이스 엔진이 있습니까? 아니면 원래 데이터베이스 엔진을 사용하고 있습니까? -모든 SQL 서버에 대해 별도의 데이터베이스 엔진이 있어야합니까? 감사합니다-Dom

예, 각 서버마다 별도의 데이터베이스 엔진이 있습니다 : db 서버 및 DW 서버. 질문을 한 이후로, 우리는 소스 데이터와 동일한 데이터베이스 (및 동일한 서버)에 보고서를 유지하는 독창적 인 디자인을 유지했습니다. 또한 사용자가 SQL Server Analysis Services 큐브를 통해 액세스하는 데이터웨어 하우스 서버로 데이터를 이동합니다.

답변:


17

대답은 그렇습니다. 그렇게하는 것이 유익합니다. 운영 데이터베이스에 대한 보고서는 많은 리소스를 사용하며 운영 시스템의 성능을 방해합니다. 데이터베이스 성능은 기계적 제약 조건 (적절한 섹터가 헤드 아래에 표시 될 때까지 기다릴 때 디스크 헤드가 앞뒤로 이동하고 회전 대기 시간)의 영향을받습니다. 보고 전략에는 두 가지 옵션이 있습니다.

  1. 데이터베이스 를 다른 서버로 복제 하고보고 절차를 데이터베이스 로 옮깁니다. 복제 된 서버에서 보고서가 실행됩니다. 이는 최소한의 노력으로 기존 보고서와 저장 프로 시저를 재사용 할 수 있습니다.
  2. 프로덕션 시스템의 데이터를 통합하고 보고하기에 훨씬 편리한 형태 로 변환 하는 데이터웨어 하우스 를 구축하십시오 . 어제 거래 종료 시점에 스냅 샷에서 수용 할 수있는 임시 통계보고가 많으면 데이터웨어 하우스가 더 나은 방법 일 수 있습니다.

데이터웨어 하우스를 구축하고 OLAP과 같은 기술을 활용하면 트랜잭션 처리 시스템에 미치는 영향을 최소화하면서 빠르고 안정적인보고 기능을 제공 할 수 있습니다.

2

나는 그것이 당신이 운영하는 SP의 종류에 달려 있다고 생각합니다. 그것들이 무겁고 데이터베이스 서버에서 실행되는 다른 것들에 영향을 줄 수 있다면 그것들을 옮길 것입니다. 그렇지 않으면 유지 관리하고 추적하기가 훨씬 쉬운 경우 실제로보고하는 데이터베이스에 가깝게 유지하려고합니다. 실제 데이터베이스에 보고서를 두는 것만으로도 성능에 영향을 줄 수 있지만 표준 설정을 사용하고 엄청난 양의 데이터를 이동하지 않으면 약간의 차이가 있습니다.

기사도 유용하다는 것을 알았습니다 .


1

몇 가지 이유로 저장 프로 시저를 다른 데이터베이스로 이동하지 않는 것이 좋습니다. 개발 관점에서 변경할 때마다 두 개의 데이터베이스를 재현해야합니다. 결과적으로 이제 "데이터"데이터베이스의 스키마와 두 번째 데이터베이스의 저장 프로 시저를 프로덕션 버전과 동기화하는 방법을 알아 봅니다. 재해 복구 및 백업 / 복원과 관련하여 이제 시스템을 시작하고 실행하기 위해 2 개의 데이터베이스를 복원해야합니다.

테스트 할 때 복잡성이 추가되었습니다. 권한, 버전 등과 관련하여 더 많은 실패 지점이 있습니다. 이제 데이터베이스에서 여러 이니셔티브를 수행하는 사람이 두 명 이상인 경우 노력 조정에 더 많은 시간을 소비하게됩니다. 이제 오전 3시, 시스템이 다운되었으며 모든 데이터베이스에 대한 권한을 찾아야하며 개발 중에 잘못된 데이터베이스에 기능이나 프로 시저를 남겨 두지 않았는지 확인해야합니다.


1

두 개의 데이터베이스를 사용하는 것이 좋습니다.

'실시간'데이터베이스에서 보고서를 파생하면 성능 문제가 발생합니다.

또한보고 데이터베이스는 주로 검색 용이므로 성능 향상을 위해 여기에서 색인을 사용자 정의 할 수 있습니다. (실제 데이터베이스에는 특정 색인의 영향을받는 삽입물이 있습니다)


0

또 다른 방법은보고 테이블을 별도의 체계와 별도의 파일 그룹으로 이동하는 것입니다. 보고 파일 그룹의 파일은 데이터 하드 디스크에서 멀리 이동할 수 있습니다. 이는 관리, 향후 개발 및 액세스 관리에 훨씬 용이합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.