Best Practices for Managing a Common Database in a Centralized Development Setup with XByK

2025/01/22 1:12 PM

Hello Kentico Community,

We are using Xperience by Kentico in a centralized development environment and Git for version control. All developers in our team work with a shared database hosted on a common local server. While this setup simplifies collaboration to some extent, we are facing challenges with database management, such as:

  1. Handling synchronization when multiple developers make updates to the database.
  2. Managing schema changes without introducing conflicts or disruptions.
  3. Ensuring database integrity and consistency across different environments (local, staging, production).

We’re seeking guidance on the best practices for managing a shared database in this context. Specifically, we’d like to know:

  • How to efficiently synchronize database changes while using Git for code version control?
  • Are there recommended tools, workflows, or techniques for managing schema changes and content staging in Xperience?
  • Would it be better to move to an alternative setup for database management in a multi-developer environment?

Your insights, experiences, or recommendations would be highly appreciated.

Thank you in advance for your help!

Answers

2025/01/24 6:14 AM
Answer

Hi Rahul,

To address your challenges, I recommend adopting Continuous Integration (CI) where each developer works with their own local database. This eliminates conflicts from shared databases and streamlines collaboration.

Kentico’s CI feature (docs) allows you to serialize database objects into files stored in Git. Developers can pull changes, apply them locally, and resolve conflicts through Git, ensuring consistent schemas across environments.

Notably, Kentico documentation doesn’t cover development over a shared database and focuses solely on CI, which suggests this is the intended and supported approach.

2025/01/24 2:30 PM

I completely agree with Milan. The best way to solve your issues with a shared database is to not use a shared database.

Although shared database development is supported, it's only a viable solution for small teams working closely together that are able to communicate and work around breaking changes created by parallel work in the same area of an application.

Most of our customers and partners are using Xperience's CI/CD features.

In addition to the documentation Milan linked to, there is a blog post on the Community Portal - Xperience by Kentico CI/CD developer scenarios - which has many helpful best practices for teams using Xperience's CI/CD features.

To answer this question, you have to login first.