If two applications with separate release cycles share the same database

We have two products:

  • BI Reports (Business Information)
  • Social networks

The Social Media product is a web application that allows users in a company to collaborate, in particular with regard to reporting on BI products.

We have one database shared by both products. Each of them has its own tables in the database, and also provides some user management tables.

Each product has its own release cycle - when we release a new version of Social Networks, we will not always release a new version of BI Reports.

I now have headaches related to updating / version of the database when the client has version "X" "BI reports" and version "Y" in the "Social networks" section. Internally, the database has two versions.

I think the best idea is to split the database into two parts - each product gets its own database, and Social Network receives user management information through the web service offered by BI Reports. However, the rest of my team believes that this is too much work and does not like the idea.

Does anyone have experience sharing databases between multiple applications?

+4
source share
4 answers

We have a product consisting of several different modules. Customers can choose which modules are installed.

All modules share the main part, which processes user logins and other very common site functions.

The complication is that some of the modules are dependent on others. We took a modular approach to easily accept large chunks of code and easily create new modules.

All of the above, we have a similar situation in that each module is versioned and potentially released separately. To handle this, we did two things.

First, each module is registered in a common db table with the current revision number. It also logs all security roles and activities in shared tables. These checks are versatile enough for the kernel to handle this. Secondly, each module has its own schema inside the database. those. module1.Table1, module2.Table2. This allows us to have the same table names for several modules.

When we update this module, it only affects its own DDL (structure / data / s'procs / views). If there is a dependency between the modules, this is handled by the update tool. It checks the database to see if the xyz version (or better) of the associated module is installed. If this happens, the update will continue. If not, the update is interrupted and informs the user that they need to update other parts first.

The main thing to remove is dependency checking. If your modules are truly separate and share common security checks, that doesn't really matter. However, if there are some other overlaps, then for each installer it is necessary to check the versions to make sure that they are compatible.

You might even imagine a β€œfull” installer that updates both applications to the current level for those who are not synchronized.

+3
source

If this is a management solution, I would approach it as follows:

  • how much time / resources is required to manage the system, as is?

  • how much time / resources will it take to rework the system in the proposed new system?

  • how much time / resources will it take to manage the system when making changes?

Assuming that saving resources by making changes, then there should be a transition period when there is a return on investment. the manager will be able to decide whether the time between time and time will be worth the ongoing expenditure of effort against other items that may be required for priority.

Hth

+2
source

I think this concerns more than the release cycle - we think about it a bit.

Our cataloging application also has a BI aspect, but we find that part of BI can affect catalog performance.

I mention this because you may find that separate databases for these two applications can work not only for release management, but also for performance. Periodic archives of your social-netowrking application key data for your BI application can give you the best of both worlds - performance in managing social applications and releases.

Not sure about the general aspect of user management for you ...

+1
source

If you change the general table, you must update both applications. You cannot have a separate release cycle.

This is obvious .... no?

+1
source

All Articles