Мы начнем с этой схемы
CREATE TABLE [dbo].[Label]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,
[Prefix] VARCHAR(50) NOT NULL UNIQUE,
[ArtistName] VARCHAR(MAX) NOT NULL
)
У нас также есть микросервис, который управляет «метками».http://labels.example.com/v1/all вернет все метки в этом формате:
{ Id = xxx, Prefix = xxx, ArtistName = xxx }
Как мы обрабатываем изменение схемы, которое не затрагивает потребителей этого микросервиса?
Мы должны сделать некоторыерефакторинг и художник перемещается к своему собственному столу.
CREATE TABLE [dbo].[Label]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,
[Prefix] VARCHAR(50) NOT NULL UNIQUE,
[ArtistId] UNIQUEIDENTIFIER NOT NULL,
CONSTRAINT FK_Label_Artist
FOREIGN KEY (ArtistId) REFERENCES Artist(Id)
)
CREATE TABLE [dbo].[Artist]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,
[Name] VARCHAR(MAX) NOT NULL,
[Country] VARCHAR(MAX) NOT NULL
)
Наш микросервис должен будет вернуть следующий объект
{ Id = xxx, Prefix = xxx, Artist = { Id = xxx, Name = xxx, Country = xxx } }
Нам нужно будет создать вызов API v2, который возвращает этот новыйсостав.Нам также придется перенести данные в новую структуру.Это означает, что v1 также нужно изменить для поддержки новой схемы, но он по-прежнему будет возвращать тот же объект.
Так ли это происходит при создании версии микросервиса?Что нужно иметь в виду?Есть ли другой способ сделать это?