powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ms sql server continuous integration and shared static data
14 сообщений из 14, страница 1 из 1
ms sql server continuous integration and shared static data
    #39855010
mazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитал про инструменты continuous integration для баз данных вообще и для MS SQL в частности.

принцип понятен:
1. создаем дев-тест-merge-build-.... окружения различными способами
2. заливаем тестовые данные в эти окружения
3. тестируем-билдим...
4. заливаем на прод

получается, что нужно много баз с тестовыми данными.

если у нас корпоративное приложение с рабочей базой на MS SQL в несколько терабайт, то возникает вопрос как сделать корректные тестовые данные? генерить собственную маленькую AdventureWorks - тот еще проект с непонятной трудоемкостью и непонятной корректностью.

приходит мысль - взять какой-нибудь бэкап рабочей базы, почистить от картофельных очисток, логов и прочего мусора и использовать его как тестовые данные. но так получается несколько тераабайт на каждое окружение.

возникает технический вопрос к MS SQL - а можно ли как-то сказать MS SQL что у данных в разных базах есть общий (shared) кусок первоначальных данных, а в каждом окружении храни только изменения от этого куска?

что-то вроде снапшотов для виртуальных машин (внимание! снапшоты MS SQL не подходят, поскольку они дают только read-only доступ к данным).
или вроде докера для данных.

есть ли такое? как называется?
ткните носом куда рыть, пожалуйста.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855016
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mazzyесть ли такое? как называется?
ткните носом куда рыть, пожалуйста.

Есть такая штука как SQL Clone: https://www.red-gate.com/products/dba/sql-clone/
Мы как то игрались (тоже для CI, да), не могу сказать, что особо успешно. Может у вас лучше получится...
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855029
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mazzy,

Смотря что Вы намерены проверять. Если функции кода, то все справочные данные, необходимые для тестирования формируются руками в теле теста в проекте "модульные тесты" VS. Это тоже не сложно, т.к. тесты могут содержать похожие наборы. Просто копируете при написании теста.

За год напишите полторы-две тысячи основных тестов + ручное дымовое. Непрерывную интеграцию для сиквела можно сделать автотестами, но этого не достаточно для выпуска на прод, если есть пользовательские интерфейсы.

Тестирование в духе "лучших практик" проходит три этапа - локальное тестирование автотестами, т.е. у каждого разработчика развернута конфигурируемая версионируемая среда (студия, сервер, эмуляторы), после разработки перед чек-аут разработчик проверяет локально модульными тестами разработку (желательно регрессионно). А ещё лучше, когда тесты разработчик пишет в первую очередь. Затем наступает очередь публикации центрального репозитория на единую систему тестирования непрерывной интеграции, которая раз в сутки высылает протокол ошибок. После окончания этапа разработки версия продукта проходит дополнительное ручное тестирование на приёмочном сервере, после этого накатывается на прод.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855062
mazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Minamotomazzyесть ли такое? как называется?
ткните носом куда рыть, пожалуйста.

Есть такая штука как SQL Clone: https://www.red-gate.com/products/dba/sql-clone/
Мы как то игрались (тоже для CI, да), не могу сказать, что особо успешно. Может у вас лучше получится...
о, спасибо. похоже на то, что хочется. покопаю.

значит, нет стандартных средств... жаль.

Владислав КолосовА ещё лучше, когда тесты...
это понятно, что лучше быть богатым и здоровым, чем бедным и больным.
спасибо.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855121
mazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MinamotoЕсть такая штука как SQL Clone: https://www.red-gate.com/products/dba/sql-clone/

работает на уровне vhd-файлов. прикольная мысль.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855126
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mazzy,

так стремитесь к здоровью. За пять минут проблему вы не решите. Лучше с самого начала использовать проверенные методки, чем потом зайти в тупик из-за нехватки ресурсов, квалификации персонала и так далее.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855133
mazzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовЛучше с самого начала использовать проверенные методки, чем потом зайти в тупик из-за нехватки ресурсов, квалификации персонала и так далее.
:)
абсолютно согласен.

по поводу SQL Clone. Оставлю для истории: https://habr.com/ru/post/440804/
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855383
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mazzyесли у нас корпоративное приложение с рабочей базой на MS SQL в несколько терабайт, то возникает вопрос как сделать корректные тестовые данные? генерить собственную маленькую AdventureWorks - тот еще проект с непонятной трудоемкостью и непонятной корректностью.

приходит мысль - взять какой-нибудь бэкап рабочей базы, почистить от картофельных очисток, логов и прочего мусора и использовать его как тестовые данные. но так получается несколько тераабайт на каждое окружение.Для dev можно генерить синтетические данные, либо брать небольшую вырезку из рабочих данных.

А для теста лучше восстанавливать рабочую БД, потому что, несмотря на размер БД, её бакап всё равно нужно где то проверять путём восстановления.
Притом нужно отметить, что для "корпоративных баз в несколько терабайт" будет достаточно одного копеечного HDD. Тут же не нужна производительность, нужна только ёмкость.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855420
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgПритом нужно отметить, что для "корпоративных баз в несколько терабайт" будет достаточно одного копеечного HDD. Тут же не нужна производительность, нужна только ёмкость.

Это в теории. А на практике с таким подходом потеряете кучу времени разработчиков, цена простоя за год выйдет подороже, чем хороший массив.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39855444
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КритикalexeyvgПритом нужно отметить, что для "корпоративных баз в несколько терабайт" будет достаточно одного копеечного HDD. Тут же не нужна производительность, нужна только ёмкость.
Это в теории. А на практике с таким подходом потеряете кучу времени разработчиков, цена простоя за год выйдет подороже, чем хороший массив.Я же не против хорошего массива, но даже в хорошем массиве стоимость терабайта небольшая, если хранилище проектировалось для объёма, а не для скорости.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39856763
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgmazzyесли у нас корпоративное приложение с рабочей базой на MS SQL в несколько терабайт, то возникает вопрос как сделать корректные тестовые данные? генерить собственную маленькую AdventureWorks - тот еще проект с непонятной трудоемкостью и непонятной корректностью.

приходит мысль - взять какой-нибудь бэкап рабочей базы, почистить от картофельных очисток, логов и прочего мусора и использовать его как тестовые данные. но так получается несколько тераабайт на каждое окружение. Для dev можно генерить синтетические данные, либо брать небольшую вырезку из рабочих данных.

А для теста лучше восстанавливать рабочую БД, потому что, несмотря на размер БД, её бакап всё равно нужно где то проверять путём восстановления.
Притом нужно отметить, что для "корпоративных баз в несколько терабайт" будет достаточно одного копеечного HDD. Тут же не нужна производительность, нужна только ёмкость.

я правильно понимаю что для DEv -
это РУЧНОЙ скрипт ?
ну ведь там FK-s - какие то таблицы целиком тянуть
какие то можно за месяц и т.д и т.п
фактически такой полноценный ETL
к-й будет устаревать к тому же с появлением новых таблиц ?
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39856767
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

В dev-среде можно многим пренебречь, в том числе и FK
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39856895
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорalexeyvgпропущено...
Для dev можно генерить синтетические данные, либо брать небольшую вырезку из рабочих данных.

А для теста лучше восстанавливать рабочую БД, потому что, несмотря на размер БД, её бакап всё равно нужно где то проверять путём восстановления.
Притом нужно отметить, что для "корпоративных баз в несколько терабайт" будет достаточно одного копеечного HDD. Тут же не нужна производительность, нужна только ёмкость.я правильно понимаю что для DEv -
это РУЧНОЙ скрипт ?
ну ведь там FK-s - какие то таблицы целиком тянуть
какие то можно за месяц и т.д и т.п
фактически такой полноценный ETL
к-й будет устаревать к тому же с появлением новых таблиц ?Да, правильно.
Понятно же, что никакая разработанная изготовителем БД логика не может учесть бизнес-логику ваших данных, а получить обрезанную версию БД без учёта бизнес-логики данных невозможно.

Соответственно, остаётся либо создавать ETL-решение для частичного переноса данных (возможно, с деперсонализацией и искажениями цифр), или генерить тестовые данные (для чего в принипе существуют всякие решения, но они тоже не делают всё "одной кнопкой")

Или, как вариант, использовать в качестве дева копию продакшен базы (как и для теста), что, разумеется несравнимо дешевле, потому что десяток терабайт даже на SSD-массиве не сравнить по стоимости с полноценным проектом.

КритикВ dev-среде можно многим пренебречь, в том числе и FKЭто да, но лучше делать дев полноценной копией продакшена (по модели и логике данных), что бы понизить стоимость разработки.
...
Рейтинг: 0 / 0
ms sql server continuous integration and shared static data
    #39857153
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорalexeyvgпропущено...
Для dev можно генерить синтетические данные, либо брать небольшую вырезку из рабочих данных.

А для теста лучше восстанавливать рабочую БД, потому что, несмотря на размер БД, её бакап всё равно нужно где то проверять путём восстановления.
Притом нужно отметить, что для "корпоративных баз в несколько терабайт" будет достаточно одного копеечного HDD. Тут же не нужна производительность, нужна только ёмкость.

я правильно понимаю что для DEv -
это РУЧНОЙ скрипт ?
ну ведь там FK-s - какие то таблицы целиком тянуть
какие то можно за месяц и т.д и т.п
фактически такой полноценный ETL
к-й будет устаревать к тому же с появлением новых таблиц ?

Как раз для таких случаев создаются синтетические репрезентативные наборы данных, один раз и на все время. Поскольку код теста может разрушать данные, то он должен выполняться либо в транзакции, либо, если это невозможно, "убирать мусор" и "ремонтировать" данные.

Полнообъемные наборы могут потребоваться для нагрузочного тестирования, а это уже другая история.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ms sql server continuous integration and shared static data
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]