![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
А вот скажите, как вы относитесь к инструментам, в которых для подключения, например, к БД, нужно пройти 5-10 экранов визарда? Ну или там поработать полчасика в неудобном мышедизайнере.
С одной стороны, для начинающих это сильно снижает порог входа - нажимаешь "сделать чо нибудь", оно задает кучу вопросов и это чо нибудь делает. С другой стороны - внутренности либ для подобных инструментов чуть более чем всегда совершенно не
пригодны для обычной разработки - "чтобы создать что-то из кода, надо выполнить страницу неадекватных вуду заклинаний".
Я подобные вещи стараюсь не использовать, благо, разработчики все делают для того, чтобы это было неудобно и медленно для сколько-нибудь сложных задач и подобное ретроградство и луддизм находят понимание среди коллег, особенно тех, кто ничем, кроме текста и его редакторов, принципиально не пользуется.
С одной стороны, для начинающих это сильно снижает порог входа - нажимаешь "сделать чо нибудь", оно задает кучу вопросов и это чо нибудь делает. С другой стороны - внутренности либ для подобных инструментов чуть более чем всегда совершенно не
пригодны для обычной разработки - "чтобы создать что-то из кода, надо выполнить страницу неадекватных вуду заклинаний".
Я подобные вещи стараюсь не использовать, благо, разработчики все делают для того, чтобы это было неудобно и медленно для сколько-нибудь сложных задач и подобное ретроградство и луддизм находят понимание среди коллег, особенно тех, кто ничем, кроме текста и его редакторов, принципиально не пользуется.
no subject
Date: 2013-11-02 03:08 pm (UTC)no subject
Date: 2013-11-02 07:03 pm (UTC)В конечном итоге - diff-скрипты и есть исходник.
no subject
Date: 2013-11-04 10:10 am (UTC)no subject
Date: 2013-11-04 10:16 am (UTC)Особенно что касается живых данных в продакшене.
no subject
Date: 2013-11-04 10:21 am (UTC)no subject
Date: 2013-11-04 10:35 am (UTC)Создавать таблицы в стиле "добавил 10 полей, удалил 5, добавил еще 20" меня огорчает, поэтому я для новых деплойментов создаю базу из финальных скриптов.
Я в голове не смогу удержать разработку, если таблица будет разбросана по нескольким файлам.
no subject
Date: 2013-11-18 09:39 am (UTC)no subject
Date: 2013-11-18 09:46 am (UTC)no subject
Date: 2013-11-04 05:49 am (UTC)Либо эти команды даются в текстовом виде скриптом и это и есть исходник
либо это делается через ГУЙ.
Если у какого-то сервера есть возможность создать объекты в базе только через гуй и мышку - это адов пиздец и втопку такой сервер.
Некоторые сервера даже бэкапы баз делают в текстовый вид.
no subject
Date: 2013-11-04 10:05 am (UTC)Как минимум будут как-то выгружать из поднятой из исходников базы ее метаданные, и как-то их читать. Можно выгрузить SQL-скрипт, можно какой-нибудь еще текст красивый, можно картинку. Картинка для многих случаев очень удобна.
Никто не говорит про то, что картинку хранить в VCS и по ней поднимать базы. Нет, картинка - производная, артефакт получаемый из текстовых исходников.
no subject
Date: 2013-11-04 08:58 pm (UTC)>> начала существования базы. Читать это чтобы понять текущую схему базы никто в здравом уме не будет.
Как по мне - скрипты для перевода базы из старого состояния в новое - это не есть исходник базы.
Исходник - это один скрипт прогнав который получаем базу требуемой структуры.
Другое дело что когда в базе есть какие-то данные (а это практически всегда) то исходника обычно не достаточно и требуются специально написанные скрипты по изменению базы с данными. Они тоже нужны и хранятся в CVS но исходником не являются, это уже типа инструмент.
no subject
Date: 2013-11-04 09:35 pm (UTC)Речь идет только о схеме данных. Всякие хранимки и вьюшки - это тот же код, их надо хранить также как остальные исходники.
no subject
Date: 2013-11-05 02:09 am (UTC)SQL-файлики хранятся в контроле версий и именуются YYYYMMDD_Description, в каждом - создание табличек, раздача полномочий, создание процедур и т.п.
В каждом последующем может быть добавление полей, изменение процедур и т.д.
При установке смотришь, какие скрипты ещё не наложены и запускаешь последовательно.
Тогда у каждого клиента будет версия базы, соответствующая определённой версии софтины.
Хуёво только, что у MS нету стандартного механизма для таких вещей, всё приходится руками делать, пихать в setup и прочая.
После выхода 2010 студии на форумах смеялись ещё. Мол, да, подключение к базе, схема - всё есть. А как на практике быть? Ни тебе развёртывания автоматического, ни диффов. Кто же в жизни из студии к продакшену подключается? В таком духе.
no subject
Date: 2013-11-05 07:54 am (UTC)Действия все автоматизируются и сводятся к выполнению скриптика. Я делал такую тулзу, да и многие себе что-то такое приделывают.
Хранимки и прочие вьюхи я хранил в отдельных файликов - и история есть, и не надо через diff-скрипты проводить.
Стандартной такой штуки для MSSQL нет, и это печально, да. Впрочем, для других баз я тоже такого не видел.
Самый минималистичный вариант из тех что я видел - это тупо сишный препроцессор, который склеивает include-ами кучу скриптов.
no subject
Date: 2013-11-05 07:50 am (UTC)>> Этот скрипт, кстати, можно сгенерировать со свежей базы, подняв ее diff-ами.
Ну к примеру я его тоже не поддержваю, я его просто генерю из базы нужной версии.
Однако именно этот скрипт я называю исходником а не пачку переходных скриптов.
Для воссоздания базы эталонной структуры достаточно прогнать единственный скрипт создающий базу с нуля и сразу нужной версии. Специальные переходные скрипты нужны лишь потому что пустая эталонная база нужна крайне редко.
Вообще говоря, я и скрипты-исходники делаю крайне редко, только когда они нужны именно в виде скрипта что бы сделать по нему diff и посмотреть разницу. А обычно я работаю с последней версией в виде копии рабочей базы, хожу в нее через IBExpert который показывает мне объекты базы в виде дерева и дает массу удобных плюшек. Однако, для внесения изменений в структуру базы я использую только SQL-текст в том же эксперте и не юзаю его множественных ГУЙ-оглупляторов которые подменяют исходник некими гуевыми примочками которые не всегда понятно как связаны с реальными SQL-командами.
Крайне редко я пользуюсь этими оглупляторами когда они делают то что мне понятно, но лишь для того что бы посмотреть какой SQL в результате генерится, и в дальнейшем обычно использую именно его.
Но к примеру если надо посмотреть DDL таблицы - то я смотрю ее именно на вкладке с ее SQL-текстом а не там где оно же представлено в более графическом виде, ибо мне так быстрее и понятнее.
Пробовал как-то сгенерить визуальную схему по своей базе, в IBExpert и такой инструмент встроен, но столкнулся именно с тем о чем говорит метакласс - даже зная структуру глядя на ее схему хрен поймешь что к чему ибо слишком много связей которые невозможно отобразить на схеме так что бы оно было читабельно.
Один раз сделал, распечатал на десятке листов, ибо на экране не видно толком, повесил на стенку.
При переезде в другую комнату уже вешать не стал, ибо устарела, а опять растаскивать связи и таблицы что бы было читабельно - ну его нах.
no subject
Date: 2013-11-05 08:06 am (UTC)Потом крайне желательно чтобы у каждого разработчика была своя отдельная база. Я видел когда это не так - там получается ад. В результате все сводится к тому, что все изменения в схеме удобнее распространять в виде diff-ов.
А дальше все работают кому как угодно - можно пересоздать базу с нуля, можно скопировать с какого-нибудь QA-ного инста, чтобы там какие-нибудь красивые данные были. Иногда бывает можно взять с прода через обфускатор, если он есть.
Главное - что никто ни в одну базу напрямую не гадит, всегда есть возможность довести любую базу до актуальной коду версии, и ничего нигде не разъезжается.
>Однако именно этот скрипт я называю исходником а не пачку переходных скриптов.
"Исходник" - это все-таки от "source", т.е. правильнее - "источник". Любой сгенерированный код - это не исходник, а артефакт, полученный из исходника. Таким образом "исходники" - это таки diff-ы.
no subject
Date: 2013-11-05 08:12 am (UTC)Каждый остался при своем мнении по поводу терминологии и того что из нее следует.
Вы исходники программы тоже как комплект диффов воспринимаете или таки результирующий текст на момент времени?
:P
no subject
Date: 2013-11-05 08:18 am (UTC)no subject
Date: 2013-11-04 05:51 am (UTC)