Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When to build a separate reporting database?

We're building an application that has a database (yeah, pretty exciting huh :). The database is mainly transactional (to support the app) and also does a bit of "reporting" as part of the app - but nothing too strenuous.

Above and beyond that we have some reporting requirements - but they're pretty vague and high-level at the moment. We have a standard reporting tool that we-use in-house which we'll use to do the "heavier" reporting as the requirements solidify.

My question is: how do you know when a separate database for reporting is required?

What sort of questions need to be asked? What sort of things would make you decide a separate reporting database was necessary?

like image 485
Adrian K Avatar asked Jul 26 '10 00:07

Adrian K


People also ask

Why do we separate databases?

Advantages: Isolated database cannot be stopped by overloaded processes on the web/application server. The database is further isolated from a security perspective. Problem diagnosis and performance monitoring is easier as the web and database loads are separated.

What is the advantage of creating a report in a database?

You can create reports and dashboards to measure your business performance and draw insights about your business. You can also use these reports to track the key performance indicators. It is possible to filter, sort, search, and drill-down into reports to dig deeper and understand business performance.

Which DB is best for reporting?

Oracle, DB2, Microsoft SQL Server, Microsoft Access, MySQL are the popular relational database nowadays. They are easy to use and maintain. Database reporting tools rely on connections to a relational database management system via JDBC, JNDI or ODBC.

What is a reporting DB?

A database report is the formatted result of database queries and contains useful data for decision-making and analysis. Most good business applications contain a built-in reporting tool; this is simply a front-end interface that calls or runs back-end database queries that are formatted for easy application usage.

Do I need a separate database for reporting issues?

The main reason you would need a separate database for reporting issues is when the generation of the reports interferes with the transactional responsibilities of the app. E.g. if a report takes 20 minutes to generate and utilizes 100% of the CPU/Disk/etc... during a time of high activity you might think of using a separate database for reporting.

What is the Report Server database in SSRs?

Collectively, the two databases are called the report server database or report server catalog. SQL Server Reporting Services SharePoint mode includes a third database that's used for data alerting metadata. The three databases are created for each SSRS service application.

How do I create a database in SQL Server Reporting Services?

In the SQL Server Installation Wizard, this option is Install and configure on the Report Server Installation Options page. If you choose the Install only option, you must use SQL Server Report Server Configuration Manager to create the database. (Applies only to SQL Server Reporting Services 2016 and earlier)

Is the Report Server database a public schema?

The report server database isn't a public schema. The table structure might change from one release to the next. If you write an application that requires access to the report server database, always use the SQL Server Reporting Services APIs to access the report server database. Execution log views are exceptions to this rule.


1 Answers

In general, the more mission critical the transactional app and the more sophisticated the reporting requirements, the more splitting makes sense.

  1. When transaction performance is critical.
  2. When it's hard to get a maintenance window on the transactional app.
  3. If reporting needs to correlate results not only from this app, but from other application silos.
  4. If the reports need to support trending or other types of reporting that are best suited for a star schema/Business Intelligence environment.
  5. If the reports are long running.
  6. If the transactional app is on an expensive hardware resource (cluster, mainframe, etc.)
  7. If you need to do data cleansing/extract-transform-load operations on the transactional data (e.g., state names to canonical state abbreviations).

It adds non-trivial complexity, so imo, there has to be a good reason to split.

like image 55
Rob Avatar answered Nov 09 '22 01:11

Rob