We have an application (rules engine) in which there are many tables in memory to execute certain business rules. This engine is also used to write to the database if necessary.
The DB structure is denormalized, and we have 5 transactional tables, which also sometimes need to be requested for reporting.
The problem is that we want to cache the data inside the application, so it loads when the application starts, and then changes only when the database changes.
Any recommendations?
We tend to create a database service that will process all Inserts, Updates, and Deletes and queue them to reduce the load on the database server (there are also many indexes in transaction tables). In addition, we are thinking about allowing the database service to sit on top and serve all reports / other applications that need direct access to the database.
The goal here is to reduce the number of remote databases for selective queries for each query and prioritize transactions. In addition, so that people accessing applications do not load the database server.
Rules Engine - C # desktop application, reports and other applications based on web interfaces.
What would be the best way? I also thought about removing all indexes from my transaction table and having a trigger in the new table that would be a copy but indexed to retrieve the report.
source share