Business intelligence must be managed for performance and scalability without impacting other production applications. There are many facets to ensuring your users can get access to their data and analyze them in real time without having to wait long periods or schedule reports for overnight delivery.
Here are 10 important considerations when planning your BI system for performance and scalability:
- Reporting Engine. A high performing reporting engine that can quickly access millions of rows of data without a huge overload on the system. High performance is reached only after many years of R&D and customer-driven improvements.
-
Access to Data. Provide efficient access to the data required by the report. This may be through direct access to the production tables, materialized views created in the database, extracted summary tables or a full data warehouse. JReport does not require any data extraction into custom storage, it can directly access data in any environment including relational DBMS, columnar DBMS, huge data sources such as MongoDB and HIVE and even directly to cached data from Java objects. The key is to ensure the queries will run quickly and all of the data required by the users is available.
-
Dynamic Queries. Have an intelligent query tool that can automatically modify the query on the fly, as a report is run based on the type of report and the data that the user wants to see. Only bring back the data actually required by the report and not all of the data in the query. Automatically push down aggregations and groupings to the DBMS when the report requests summary data instead of detailed data.
-
System Configuration. The tool needs to be able to manage threads and instances on a server to most efficiently use all of the server resources. On large systems with many running CPUs, just one instance of the tool can not make efficient usage of the resources. Be sure you can design the system to take full advantage of all resources available.
-
Reliability. There must not be a single point of failure in the system. If any one server crashes or is taken offline, the other servers need to be able to transparently take over and execute the report requests without any intervention by administrators. Even if a disk goes down, the resources must be spread across multiple locations so there is no single resource, software or hardware, that can disrupt reporting requests and schedules.
-
Load Balancing. The system needs to have multiple built-in scenarios as well as customizable rules for determining where the next report request should run, including affinity to specific available servers.
-
Clustering. The system must be highly efficient when adding nodes to the cluster so that it is scalable. Adding and removing nodes should be completely transparent to the system and not require the system to be restarted to include the new nodes. Administrators must be able to quickly add and remove nodes from the cluster without impacting any current users.
-
Monitoring. The system should provide browser-based monitoring and alerting so administrators can be notified if a server is not responding. The monitor should allow easy reconfiguration of the server to see users and reports currently running and add or remove nodes as required for high performance.
-
Resource Management. Resources such as managed report templates, dashboards, ad hoc reports and scheduled report results must be easily deployed and updated across the entire cluster of servers with a single command. No matter what server the user created and saved their template on, it must be available immediately on all the other nodes.
-
Platform Independent. The server as well as the browser the user uses to create and run reports should work on any platform. Since JReport is 100% Java the identical release works on all server platforms and since JReport is based on standard HTML and JavaScript the browser can also run on any platform and support all common browsers as well as mobile clients.
Click here to read the full Whitepaper about how JReport addresses these considerations.
