Skip to main content
added 85 characters in body
Source Link
Chris F
  • 475
  • 1
  • 3
  • 15

I want to create a schema that reflects the following relationships, and I'm trying to do this in MySQL Workbench. (I'm no DB expert)

  • I have 3 environments - sandbox, staging, and production
  • I release a product version in each environment, e.g., sb-1.0.0 for sandbox, st-1.0.0 for staging, and pr-1.0.0 for production. I can have multiple releases per environment, but there can only be ONE version that's currently released in each environment.
  • Each product version in each environment contains a set of services, same set of services in all the environments, but differing in their version numbers. So sb-1.0.0 = [svc1-2.0.0, svc2-2.0.0], st-1.0.0 = [svc1-1.0.0, svc2-2.0.0], and pr-1.0.0 = [svc1-1.0.0, svc2-1.0.0]. As you can see, I have the same 2 services in each environmentall environments, but the service versions can be different (or the same) in each environments environment.

I want to accomplish multiple things.

  • I want to be able to create new releases in each environment, with each release containing the set of services and corresponding versions. So I want to be able to create a pr-2.0.0 = [svc1-2.0.0, svc2-1.0.0] version.
  • I want to be able to query my DB for version pr-1.0.0 and know all the services and their respective versions in this particular release.
  • I want to have the notion of a "current version" and a "desired version" for each service in each environment.
  • I want to be be able to then run a script (Kubernetes?) to release each service and their respective version based on the query.
  • I want to be able to extend it to more environments, e.g., add a UAT environment.

So how do I model my DB?

I want to create a schema that reflects the following relationships, and I'm trying to do this in MySQL Workbench. (I'm no DB expert)

  • I have 3 environments - sandbox, staging, and production
  • I release a product version in each environment, e.g., sb-1.0.0 for sandbox, st-1.0.0 for staging, and pr-1.0.0 for production. I can have multiple releases per environment, but there can only be ONE version that's currently released in each environment.
  • Each product version in each environment contains a set of services, same set of services in all the environments, but differing in their version numbers. So sb-1.0.0 = [svc1-2.0.0, svc2-2.0.0], st-1.0.0 = [svc1-1.0.0, svc2-2.0.0], and pr-1.0.0 = [svc1-1.0.0, svc2-1.0.0]. As you can see, I have the same 2 services in each environment, but the service versions can be different (or the same) in each environments.

I want to accomplish multiple things.

  • I want to be able to create new releases in each environment, with each release containing the set of services and corresponding versions. So I want to be able to create a pr-2.0.0 version.
  • I want to be able to query my DB for version pr-1.0.0 and know all the services and their respective versions in this particular release.
  • I want to have the notion of a "current version" and a "desired version" for each service in each environment.
  • I want to be be able to then run a script (Kubernetes?) to release each service and their respective version based on the query.

So how do I model my DB?

I want to create a schema that reflects the following relationships, and I'm trying to do this in MySQL Workbench. (I'm no DB expert)

  • I have 3 environments - sandbox, staging, and production
  • I release a product version in each environment, e.g., sb-1.0.0 for sandbox, st-1.0.0 for staging, and pr-1.0.0 for production. I can have multiple releases per environment, but there can only be ONE version that's currently released in each environment.
  • Each product version in each environment contains a set of services, same set of services in all the environments, but differing in their version numbers. So sb-1.0.0 = [svc1-2.0.0, svc2-2.0.0], st-1.0.0 = [svc1-1.0.0, svc2-2.0.0], and pr-1.0.0 = [svc1-1.0.0, svc2-1.0.0]. As you can see, I have the same 2 services in all environments, but the service versions can be different (or the same) in each environment.

I want to accomplish multiple things.

  • I want to be able to create new releases in each environment, with each release containing the set of services and corresponding versions. So I want to be able to create a pr-2.0.0 = [svc1-2.0.0, svc2-1.0.0] version.
  • I want to be able to query my DB for version pr-1.0.0 and know all the services and their respective versions in this particular release.
  • I want to have the notion of a "current version" and a "desired version" for each service in each environment.
  • I want to be be able to then run a script (Kubernetes?) to release each service and their respective version based on the query.
  • I want to be able to extend it to more environments, e.g., add a UAT environment.

So how do I model my DB?

Source Link
Chris F
  • 475
  • 1
  • 3
  • 15

How can I model this schema in MySQL?

I want to create a schema that reflects the following relationships, and I'm trying to do this in MySQL Workbench. (I'm no DB expert)

  • I have 3 environments - sandbox, staging, and production
  • I release a product version in each environment, e.g., sb-1.0.0 for sandbox, st-1.0.0 for staging, and pr-1.0.0 for production. I can have multiple releases per environment, but there can only be ONE version that's currently released in each environment.
  • Each product version in each environment contains a set of services, same set of services in all the environments, but differing in their version numbers. So sb-1.0.0 = [svc1-2.0.0, svc2-2.0.0], st-1.0.0 = [svc1-1.0.0, svc2-2.0.0], and pr-1.0.0 = [svc1-1.0.0, svc2-1.0.0]. As you can see, I have the same 2 services in each environment, but the service versions can be different (or the same) in each environments.

I want to accomplish multiple things.

  • I want to be able to create new releases in each environment, with each release containing the set of services and corresponding versions. So I want to be able to create a pr-2.0.0 version.
  • I want to be able to query my DB for version pr-1.0.0 and know all the services and their respective versions in this particular release.
  • I want to have the notion of a "current version" and a "desired version" for each service in each environment.
  • I want to be be able to then run a script (Kubernetes?) to release each service and their respective version based on the query.

So how do I model my DB?