SQL Server - cơ sở dữ liệu riêng biệt cho các báo cáo?


19

Trên SQL Server của chúng tôi, chúng tôi có cơ sở dữ liệu cho từng ứng dụng web của chúng tôi. Đối với báo cáo, chúng tôi sử dụng Dịch vụ báo cáo và tất cả dữ liệu báo cáo (bao gồm cả tham số báo cáo) đến từ các thủ tục được lưu trữ.

Các thủ tục được lưu trữ trong cùng một cơ sở dữ liệu như dữ liệu trong báo cáo. Vì vậy, ví dụ, các procs phục vụ báo cáo Stock nằm trong cơ sở dữ liệu Stock. Một số báo cáo hiển thị thông tin từ nhiều cơ sở dữ liệu và sau đó, Proc sẽ ở một trong những cơ sở dữ liệu nguồn đó. Các tham số báo cáo nhận dữ liệu của họ từ procs trong cơ sở dữ liệu Doanh nghiệp có dữ liệu như cửa hàng, nhân viên, v.v.

Điều này có nghĩa là tất cả các báo cáo có ít nhất một kết nối đến cơ sở dữ liệu Doanh nghiệp và một kết nối khác với cơ sở dữ liệu khác - và đôi khi còn hơn thế.

Câu hỏi của tôi là: có lợi ích gì khi chuyển các procs báo cáo vào cơ sở dữ liệu "Báo cáo" riêng biệt . Tôi biết lợi ích của việc di chuyển báo cáo lên một máy chủ khác và tôi không nói về điều đó - đây sẽ là trên cùng một máy chủ.

Những thứ có thể ảnh hưởng đến điều này là:

  • Có nhiều kết nối cơ sở dữ liệu cho một báo cáo, có ảnh hưởng đến tốc độ của báo cáo không?
  • Việc có báo cáo Proc trong một cơ sở dữ liệu riêng biệt từ dữ liệu, ngăn chúng tôi sử dụng các chế độ xem được lập chỉ mục?
  • Bạn có thấy việc quản lý báo cáo trong một cơ sở dữ liệu riêng biệt dễ hơn / khó hơn không?

Xin vui lòng cho tôi biết những gì bạn nghĩ.


Câu hỏi của tôi là: Khi bạn di chuyển RS và / hoặc DW sang một máy chủ khác, bạn có Cơ sở dữ liệu hiện có trên (các) máy chủ mới này không? hoặc bạn đang sử dụng công cụ cơ sở dữ liệu gốc? - Vậy bạn có phải có công cụ cơ sở dữ liệu riêng cho tất cả các máy chủ SQL không? Cảm ơn, - Dom

Có, chúng tôi có một công cụ cơ sở dữ liệu riêng biệt trên mỗi máy chủ: máy chủ db & máy chủ DW. Kể từ khi đặt câu hỏi, chúng tôi đã giữ nguyên thiết kế ban đầu của mình là giữ các báo cáo trong cùng một cơ sở dữ liệu (và do đó cùng một máy chủ) làm dữ liệu nguồn. Chúng tôi cũng di chuyển dữ liệu lên máy chủ kho dữ liệu nơi người dùng truy cập dữ liệu thông qua các khối Dịch vụ phân tích SQL Server.

Câu trả lời:


17

Câu trả lời là: có, có một lợi ích để làm điều đó. Báo cáo về cơ sở dữ liệu hoạt động sẽ sử dụng nhiều tài nguyên và sẽ can thiệp vào hiệu suất của hệ thống vận hành. Hãy nhớ rằng hiệu suất cơ sở dữ liệu phải chịu các ràng buộc cơ học (đầu đĩa di chuyển qua lại và độ trễ quay khi chúng ta chờ đúng khu vực xuất hiện dưới đầu). Bạn có hai tùy chọn rộng cho chiến lược báo cáo:

  1. Sao chép cơ sở dữ liệu của bạn vào một máy chủ khác và di chuyển các sprocs báo cáo lên nó. Báo cáo được chạy ra khỏi máy chủ nhân rộng. Đây là nỗ lực ít nhất và có thể sử dụng lại các báo cáo và quy trình được lưu trữ hiện có của bạn.
  2. Xây dựng Kho dữ liệu hợp nhất dữ liệu từ các hệ thống sản xuất của bạn và chuyển đổi nó thành một hình thức thân thiện hơn để báo cáo . Nếu bạn có nhiều báo cáo thống kê đặc biệt có thể được thực hiện một cách có thể chấp nhận được từ một ảnh chụp nhanh kể từ 'đóng cửa doanh nghiệp ngày hôm qua', kho dữ liệu có thể là cách tiếp cận tốt hơn.

Xây dựng kho dữ liệu và tận dụng các công nghệ như OLAP trong đó có ý nghĩa làm tăng các tùy chọn của bạn để cung cấp báo cáo nhanh, đáng tin cậy với ít tác động đến hệ thống xử lý giao dịch nhất có thể.

2

Tôi nghĩ nó phụ thuộc nhiều vào loại SP bạn đang chạy. Nếu chúng nặng và có thể ảnh hưởng đến những thứ khác đang chạy trên máy chủ cơ sở dữ liệu, tôi sẽ di chuyển chúng. Mặt khác, tôi sẽ thử và theo sát cơ sở dữ liệu mà họ thực sự đang báo cáo, nếu thấy việc đó dễ dàng hơn nhiều để duy trì và theo dõi. Chỉ cần có báo cáo gần với cơ sở dữ liệu thực tế cũng có thể ảnh hưởng đến hiệu suất nhưng nếu bạn cài đặt chuẩn và không di chuyển lượng dữ liệu khổng lồ thì đó sẽ là một sự khác biệt nhỏ mà tôi đoán.

Tôi cũng tìm thấy này bài viết hữu ích.


1

Tôi khuyên bạn không nên chuyển các thủ tục được lưu trữ sang cơ sở dữ liệu khác vì nhiều lý do. Từ góc độ phát triển, bạn phải tạo lại hai cơ sở dữ liệu mỗi lần bạn muốn thực hiện các thay đổi. Kết quả là bây giờ bạn sẽ làm thế nào để đồng bộ hóa lược đồ từ cơ sở dữ liệu "dữ liệu" và các thủ tục được lưu trữ từ cơ sở thứ hai với các phiên bản sản xuất. Liên quan đến khôi phục thảm họa và sao lưu / khôi phục, bây giờ bạn phải quan tâm đến việc khôi phục 2 cơ sở dữ liệu chỉ để hệ thống của bạn hoạt động.

Khi kiểm tra bạn cũng đã thêm phức tạp. Bạn sẽ có nhiều điểm thất bại hơn đối với các quyền, phiên bản, v.v ... Bây giờ nếu bạn có nhiều hơn 1 người làm việc với các sáng kiến ​​khác nhau trên cơ sở dữ liệu, bạn sẽ dành nhiều thời gian hơn để phối hợp các nỗ lực. Bây giờ hãy tưởng tượng 3 giờ sáng, hệ thống ngừng hoạt động và bạn phải tìm kiếm các quyền trên tất cả các cơ sở dữ liệu và phải đảm bảo rằng không ai để lại chức năng hoặc quy trình trên cơ sở dữ liệu sai trong quá trình phát triển.


1

Tôi khuyên bạn nên sử dụng hai cơ sở dữ liệu.

Xuất phát báo cáo từ cơ sở dữ liệu 'sống' gây ra vấn đề về hiệu suất.

Ngoài ra, vì cơ sở dữ liệu báo cáo chủ yếu dành cho tìm kiếm, bạn có thể tùy chỉnh các chỉ mục ở đây để có hiệu suất tốt hơn. (Cơ sở dữ liệu trực tiếp sẽ có các phần chèn sẽ bị ảnh hưởng bất lợi bởi các chỉ mục nhất định)


0

Một cách tiếp cận khác là di chuyển các bảng báo cáo sang sơ đồ riêng và tách nhóm. Các tệp trong báo cáo filegroup có thể được di chuyển khỏi đĩa cứng dữ liệu. Điều này dễ dàng hơn nhiều cho quản trị, phát triển trong tương lai và quản lý truy cập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.