Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
Есть задача организовать предрелизный сервер, на котором будут процедуры и код, которые надо будет после тестирования выкладывать на прод. Но он должен работать с реальными данными прод сервера.
Поэтому надо разнести процедуры и таблицы.
Единственный из вариантов, который пришел ко мне в голову, связать два сервера и по всем таблицам на предрелизном сервере создать вьюхи с именами таблиц, которые будут ссылаться на прод сервер.

Может у кого-нибудь более интересные и простые варианты есть?
23 апр 18, 11:24    [21360044]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Alex1975,

автор
Единственный из вариантов, который пришел ко мне в голову, связать два сервера и по всем таблицам на предрелизном сервере создать вьюхи с именами таблиц, которые будут ссылаться на прод сервер.

зачем такие сложности, сразу на прод и накатывайте чё уж черезь вьюхи всё ломать
23 апр 18, 11:34    [21360084]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
т.е. вы хотите не тестированным кодом лезть в прод?
бэкап прода на "предрелиз" развернуть.
23 апр 18, 11:36    [21360088]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
На прод сейчас накатывается сразу, но опасно. Если что не учлось, то получается что мы тестим сейчас на живых клиентах. А они обижаются.

Бэкап тоже не вариант, т.к. данные должны быть живыми и обновляемыми. Это не тестовый сервер разработчиков. И к нему будут подключены клиенты согласившиеся стать бета-тестерами. Но их результат должен менять боевую базу.
23 апр 18, 12:19    [21360245]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7780
Alex1975,

разворачивайте боевой бэкап на тестовом сервере. Но для чего это? Нагрузочное тестирование?
23 апр 18, 12:20    [21360253]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
invm
Member

Откуда: Москва
Сообщений: 9351
Alex1975
Бэкап тоже не вариант, т.к. данные должны быть живыми и обновляемыми. Это не тестовый сервер разработчиков. И к нему будут подключены клиенты согласившиеся стать бета-тестерами. Но их результат должен менять боевую базу.
На боевом сервере создаете отдельную БД, содержащую только код, вместо таблиц синонимы на таблицы основной БД.
23 апр 18, 12:31    [21360287]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
Владислав Колосов
Alex1975,

разворачивайте боевой бэкап на тестовом сервере. Но для чего это? Нагрузочное тестирование?


Не вариант.

Клиенты торгуют акциями.

Все их результаты попадают в боевую.

Задача выделить отдельный сервер, на котором бета тестеры (обычные клиенты, согласные за некие плюшки на возможные баги) будут работать, но все их результаты должны быть в боевой. Откуда бэк берет все данные, считает отчеты, меняет в обратку деньги и т.п.

Задача этого предрелизного сервера, окончательно оттестить какие-то баги, которые прошли мимо разработчиков и отдела тестирования на тестовом сервере.

Аналог мне показывали на Postgree. Там в базе только таблицы лежат, а весь код на PHP. И можно к боевой базе пробросить сколько угодно внешних сервисов, которые чем-то отличаются.

Но исторически сложилось что вся бизнес-логика зашита в процедуры.
23 апр 18, 12:35    [21360298]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Alex1975,

два отдельных сервера, но данные ездят репликацией?
23 апр 18, 12:37    [21360310]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
Alex1975
Задача выделить отдельный сервер, на котором бета тестеры (обычные клиенты, согласные за некие плюшки на возможные баги) будут работать, но все их результаты должны быть в боевой. Откуда бэк берет все данные, считает отчеты, меняет в обратку деньги и т.п.

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

Но зачем другой сервер? Можно сделать отдельную базу с процедурами, и синонимы на боевые таблицы.
23 апр 18, 12:48    [21360370]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
invm,

Спасибо. Хороший вариант.

А в плане производительности как синонимы себя ведут в сложных запросах?
23 апр 18, 12:53    [21360395]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Alex1975
invm,

Спасибо. Хороший вариант.

А в плане производительности как синонимы себя ведут в сложных запросах?

пробросятся на оригиналы. При такой схеме можно как через синонимы, так и через представления (на них можно к оригиналам права вообще не давать)
23 апр 18, 12:55    [21360411]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
Спасибо всем за советы. Буду копать в сторону внедрения синонимов.
23 апр 18, 12:56    [21360413]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Alex1975
Бэкап тоже не вариант, т.к. данные должны быть живыми и обновляемыми. Это не тестовый сервер разработчиков. И к нему будут подключены клиенты согласившиеся стать бета-тестерами. Но их результат должен менять боевую базу.
если ваши клиенты не изолированны друг от друга, то что про это думают другие, не согласившиеся стать бета-тестерами? :)
если же изолированны, то заведите этих бета-тестеров на копию системы и всё (а нагрузочное тестирование делается по другому).
23 апр 18, 13:05    [21360459]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
Дедушка
если ваши клиенты не изолированны друг от друга, то что про это думают другие, не согласившиеся стать бета-тестерами? :)
если же изолированны, то заведите этих бета-тестеров на копию системы и всё (а нагрузочное тестирование делается по другому).

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

Копия тянет за собой кучу проблем синхронизации данных.

А так вариант что если предрелиз не рабочий по каким-то причинам, то могут перейти на боевую и спокойно работать до момента багфикса.
23 апр 18, 14:47    [21361150]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Alex1975,

выглядит как какая-то безумная экономия на QA c ещё более странными оправданиями
23 апр 18, 14:52    [21361187]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
TaPaK
Alex1975,

выглядит как какая-то безумная экономия на QA c ещё более странными оправданиями
Выглядит как стандартное решение для ответственных проектов, с большим количеством пользователей.
После тестирования на девелоперском окружении тестируется на стабильной тестовой системе, потом на версию переводится часть пользователей, и только потом уже все остальные.
Тестовые системы не абсолютно адекватны боевым, вон, даже производители машин делают отзывы, а уж в софтостроении бета-версии вообще стандартная практика.
23 апр 18, 15:32    [21361443]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
alexeyvg
После тестирования на девелоперском окружении тестируется на стабильной тестовой системе, потом на версию переводится часть пользователей, и только потом уже все остальные.
ну, собственно это я и написал
Дедушка
то заведите этих бета-тестеров на копию системы
но у ТСа
Alex1975
Копия тянет за собой кучу проблем синхронизации данных.
23 апр 18, 15:37    [21361482]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
alexeyvg
TaPaK
Alex1975,

выглядит как какая-то безумная экономия на QA c ещё более странными оправданиями
Выглядит как стандартное решение для ответственных проектов, с большим количеством пользователей.
После тестирования на девелоперском окружении тестируется на стабильной тестовой системе, потом на версию переводится часть пользователей, и только потом уже все остальные.
Тестовые системы не абсолютно адекватны боевым, вон, даже производители машин делают отзывы, а уж в софтостроении бета-версии вообще стандартная практика.

всё звучит не плохо до того момента, что они всё это делают на одних и тех же объектах, что значить как минимум
1. Таблицы они никогда не меняют
2. Соотвественно триггеры/представления
А что они тогда делают? Отчёты?
Есть вариант что накатывают объекты сразу на прод, остальное на препрод, но тут ещё больше удивления, ну и так далее
23 апр 18, 15:40    [21361509]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Alex1975
Копия тянет за собой кучу проблем синхронизации данных.
т.е. у вас пользователи не изолированны и состояние системы для одних зависит от действий других.
в таком случае у вас только один путь - эмулировать нагрузку на копии боевой системы где проводится финальное тестирование.
23 апр 18, 15:42    [21361518]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Alex1975
Member

Откуда:
Сообщений: 219
TaPaK
всё звучит не плохо до того момента, что они всё это делают на одних и тех же объектах, что значить как минимум
1. Таблицы они никогда не меняют
2. Соотвественно триггеры/представления
А что они тогда делают? Отчёты?
Есть вариант что накатывают объекты сразу на прод, остальное на препрод, но тут ещё больше удивления, ну и так далее

Структура таблиц меняется очень редко. И понятно что изменение таблиц после тестового сервера сразу попадут в бой без предрелизного сервера. Это минимальный риск.
Триггеров тоже мало
Представления также через синонимы использовать.

Меняются постоянно процедуры в которых обрабатываются данные из таблиц. Их и надо через разные уровни тестирования провести.

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

А смысл? Это же обычные пользователи, которые работают как и на боевом и выйти за рамки и похерить данные никак не могут.
И нагрузочное тестирование не нужно. Нужно вылавливание мелких багов, которые можно ловить вылизанным ТЗ, юнит тестами и хорошей и дорогой командой тестеров. Либо так.
23 апр 18, 16:09    [21361670]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33700
Блог
какие синонимы?! а если у вас какой-нибудь delete/update будет над синонимом?

только один вариант: поднимать копию каждый день, возможно, копию на "почти прямо сейчас", после чего накатывать туда релиз, заказчиков проинформировать о том, что на предрелизном сервере будет такая-то задержка относительно боевого, поэтому смотреть нужно не самые свежие данные
23 апр 18, 18:20    [21362192]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 590
Я с подобной задачей справлялся следующим образом: восстанавливал базу из боевого бэкапа, удалял скриптом весь программный код и накатывал его с помощью liquibase из соответствующей ветки в SVN. Получалось довольно быстро это делать. Тем более, что таковые манипуляции обычно не приходится проделывать каждый день.
23 апр 18, 20:18    [21362450]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 590
Очень лысый
Я с подобной задачей справлялся следующим образом: восстанавливал базу из боевого бэкапа, удалял скриптом весь программный код и накатывал его с помощью liquibase из соответствующей ветки в SVN. Получалось довольно быстро это делать. Тем более, что таковые манипуляции обычно не приходится проделывать каждый день.

Ах, да. Бэкап не канает, ибо данные должны быть живыми и тестеры ещё и менять их дожны иметь возможность. Или не должны?
23 апр 18, 20:24    [21362463]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
Очень лысый
Member

Откуда: БОМЖ
Сообщений: 590
Но вообще сама схема тестирования выглядит как-то стрёмно. Я бы такое точно не разрешил делать. Хочешь работать на боевых данных - поднимай базу из бэкапов, или пользуй стендбай для чтения. Что за писание работы тестеров в боевую базу? Мало ли что там кодеры накодят, и, при доступе на прод, этот код там что-то похерит ненароком? Или, если есть доступ на чтение основных данных на проде, кодеры напишут неудачный запрос, который нагнёт прод на некоторое время? Кто будет убытки компенсировать?
23 апр 18, 20:30    [21362473]     Ответить | Цитировать Сообщить модератору
 Re: Разделить процедуры и таблицу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31371
TaPaK
alexeyvg
пропущено...
Выглядит как стандартное решение для ответственных проектов, с большим количеством пользователей.
После тестирования на девелоперском окружении тестируется на стабильной тестовой системе, потом на версию переводится часть пользователей, и только потом уже все остальные.
Тестовые системы не абсолютно адекватны боевым, вон, даже производители машин делают отзывы, а уж в софтостроении бета-версии вообще стандартная практика.

всё звучит не плохо до того момента, что они всё это делают на одних и тех же объектах, что значить как минимум
1. Таблицы они никогда не меняют
2. Соотвественно триггеры/представления
А что они тогда делают? Отчёты?
Есть вариант что накатывают объекты сразу на прод, остальное на препрод, но тут ещё больше удивления, ну и так далее
Так ТС пишет - "только для процедур".

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

Собственно, модель данных ведь намного стабильнее кода, так что в принципе это работающая, годная стратегия.
Дедушка
ну, собственно это я и написал
Дедушка
то заведите этих бета-тестеров на копию системы
Нужно же на реальных данных тестировать. Иначе это не называют "бета-тестированием".
Как могут часть пользователей работать в системе, вместе с остальными пользователями, но не на реальных данных? 10 кассиров из ста работают со своей базой??? Бета тестеры - это обычные работающие с продуктом люди, но работающие не с текущей стабильной версией, а с кандидатом на неё.

Да, репликациями так можно сделать, но распределённая система сама по себе нетривиальна, слишком сложна, что бы делать её только для тестирования.
24 апр 18, 00:46    [21362862]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить