За последние несколько лет в мире SQL Server было сделано значительное усилие по внедрению изменений схемы базы данных в полноценную методологию поддержки жизненного цикла приложения (ALM). В то время как существует множество конкурирующих продуктов, решающих проблемы изменения схемы базы данных, они часто не уделяют должного внимания управлению данными наряду со схемой. Reference Data Manager от Redgate, находящийся в настоящее время в закрытом бета-тестировании, призван заполнить этот пробел, рассматривая данные как гражданина первого класса в цикле ALM.
У большинства систем есть некоторые формы постоянных справочных данных, таких как страны, валюты или префиксы имен. Традиционно эти данные управляются с помощью больших скриптов MERGE, которые проверяют всю базу данных при развертывании. Однако эти скрипты могут быть большими, неясными в намерениях и требующими много времени для проверки. Reference Data Manager упрощает этот процесс, интегрируя управление данными в среду Microsoft SQL Server Data Tools (SSDT) с использованием Deployment Contributors.
С Reference Data Manager данные становятся поддерживаемыми наряду со схемой внутри SSDT, что делает их неотъемлемой частью процесса развертывания. Добавление данных так же просто, как щелчок правой кнопкой мыши на соответствующем SQL-файле в Solution Explorer и выбор “Add Reference Data”. Это создает дочерний файл, в котором вы можете определить свои данные с помощью операторов SQL insert.
Например, рассмотрим таблицу с названием “Country” с колонками CountryId, CountryName и Currency:
CREATE TABLE [dbo].[Country]
(
CountryId INT NOT NULL PRIMARY KEY,
CountryName varchar(255) not null,
Currency char(3) not null
)
Чтобы добавить данные, вы можете просто вставить нужные значения в файл “Country.refdata.sql”:
insert into [dbo].[Country](CountryID,CountryName,Currency)
Values (1,'UK','GBP');
insert into [dbo].[Country](CountryID,CountryName,Currency)
Values (2,'USA','USA');
insert into [dbo].[Country](CountryID,CountryName,Currency)
Values (3,'France','EUR');
insert into [dbo].[Country](CountryID,CountryName,Currency)
Values (4,'Germany','EUR');
insert into [dbo].[Country](CountryID,CountryName,Currency)
Values (5,'Australia','AUD');
При развертывании решения Reference Data Manager автоматически включает соответствующие изменения данных в скрипт развертывания. В случае новой таблицы это будет включать операторы insert. Если вы измените данные в файле “refdata.sql”, в скрипт развертывания будут внесены только необходимые изменения данных.
Обращаясь к данным как к гражданину первого класса, Reference Data Manager позволяет не только контролировать исходный код данных, но и упрощает процесс развертывания, предоставляя явную информацию о вносимых изменениях. Это может быть особенно полезно для систем с несколькими таблицами справочных данных и множеством строк в каждой таблице.
Если вас интересует изучение Reference Data Manager, вы можете зарегистрироваться для бета-тестирования здесь.