Pull to refresh

Comments 26

повёлся я на заголовок статьи — ожидал увидеть другой сытный материал… :)
Как минимум «Oracle» должно было в заголовке фигурировать, я бы тогда ее сразу пропустил :)
надеялся постом излечить свое больное место (тему) — разработку структуры БД. эх…
И где же позвольте поинтересоваться структура БД?
Неужели старый, ужасающий ErWin столь хорош?
Сейчас меня, возможно, закидаю минусами, но зачем при том, что в ервине у вас только таблицы и связи, он вам вообще нужен централизованный?

Апдейты на базу? Так наверняка ж накатываете их через пачку sql-файликов, которые лежат в cvs/svn/git e.t.c

Только для схемы БД? Может проще её строить уже по базе, чем-нить типа SchemaSpy? Ну или пусть каждый для себя реверсит…
Почти верно, но мы храним ещё и логическую схему, кроме физической. В свою очередь логическая схема является частью документации, отсюда и централизация.
да с ервином явно облажались.

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

Вот типа так.

Потому как по моему опыту людей кто понимает что делает в базе данных единицы, а кто работал с объемами еще меньше.

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

В большинстве случаев идея такая — да у нас есть база. да она тормозит, но мы ничего не можем и не будем переделывать( доделывать ), так как боимся что-то сломать.
Очень верно про 1 человека, который шарит. Это идеал. Однако проекты имеют свойство разрастаться. Если изначально разработкой занимались 2-3 программиста, потребности в выделенном человеке для контроля структур не было. Сейчас, когда в команде десяток человек — такой специалист очень даже нужен. Но брать со стороны и добиваться, чтобы он «въехал» в существующую хренову тучу таблиц и взаимосвязей — пока не получается, поэтому стараемся оптимизировать процесс, который уже имеется.
1. «в существующую хренову тучу таблиц и взаимосвязей» — поверьте если человек проф. это не проблема.
2. это кунгфу — тут есть мастерство управления этим хозяйством.
один человек никогда не может быть идеалом, это как сервер без рэйда и бэкапа :)
Только придется брать миннимум двух брать, чтобы работа неожиданно не встала, когда этот один уедет в отпуск/дауншифтинг/сломает себе что-нить, катаясь на…

Плюс, рано или поздно его задергают требованиями :)

А против тормозящей базы и боязни переделывать (можно подумать от этого спасет только один человек ломающий базу:) есть отдельно взятый ДБА (который следит за производительностью, топом самых медленных запросов и т.д.) и наборы тестов :)
согласен. но по моему опыту можно все настроить — так как это не клиенский кодд а база данных — там все должно быть размеряно и точно)
«всё настроить» (сразу вспомнилась старая фраза одного бывшего начальника «так мы как всё напишем — нас сразу уволят») можно только на статичной системе, в которую не добавляется данных :)

а на живой системе постоянно выходят новые релизы, новые фичи, которые юзеры иногда начинают использовать не всегда запланированно, да и просто юзеров становится больще :)
Простите коллега, но вы не понимаете отличие програмирования баз данных и программирования просто кода.

Архитектура базы данных — это ключевое, грамотная логика дает право думать, что релизы и фичи не будут сильно изменять структуру базы данных — в этом то и сила настоящего Архитектора баз данных — о нем я и говорил.

но в жизни мало правды. по моему опыту программиста / архитектора баз данных( а он более 8 лет) мы имеем дело практически всегда с говноБАзой, которую сделал горе с++ программист в далекие года и которую менять нужно постоянно, ввиду того, что он «не подумал» и прочее( да простят меня программисты с++, я не хотел Вас обидеть но по опыту так ((( )
Ну надо же, за 10+ лет и не понимаю :)

Я просто говорю не о «сферическом коне в вакууме», а о реальных проектах, которые наблюдаю…

И если бы дело было только в «неподумавших говнопрограммистах на говноязыке» :)))
согласен) но я все чаще с этим сталкиваюсь — типа нам так сделали и переделывать нельзя так как мы уже всю систему налобали )))) да тормозит да не работает да зависает, но некто не даст гарантии что вы сделаете лучше, вот и приходиться ковыряться в говнобазе )))) а если еще база с языком ( оракл, постгре, сиквел), то еще и в говно коде с залипающими курсорами )))) и открытыми транзакциями, которые держат всех, либо ( ДАДА я о ORACLE FORM — горе программистах ) которые вообще все делают в FOR UPDATE ) ))) не беда что раком втсает база, так же сказано в книжках умных!
Не сочтите за рекламу, но для разработки, точнее даже для моделирования, большинства (средней сложности) схем БД волне сойдет mytaskhelper.ru/online-database-builder
Вы еще забыли написать что лицензия стоит $4k+ :)
Для SQL Server Database solution в VS 2010 очень неплох. Хранит все — от структуры таблиц и программных объектов до структуры размещения и свойств БД. Умеет валидировать, находить зависимости и т.д. С точки зрения совместной работы получается хорошо — вся база хранится в виде файликов в системе контроля версий, всегда можно посмотреть кто, что, как, когда и зачем менял. Это раз. Второе — умеет находить различия между физической базой и проектом и генерировать вполне юзабельные скрипты для апдейта и того и другого. Многие предпочитают всегда делать изменения на физической тестовой базе, а затем, вносить изменения в проект. Хотя, конечно, действия вроде переименования таблиц всегда надо делать вручную.
Sybase PowerDesigner. на уровне физической модели базы поддерживает большое множество реляционных DBMS (включая pgsql,mysql). reverse enginering, merging различных моделей, конвертация между различными. генерация ddl/работа напрямую через odbc c субд.
В свете collaborate-разработки используется репозиторий (какой нить odbc-источник, например сетевой sql сервер).
И вообще это инструмент моделировая уровня предприятия: возможностей и фич там дофига как и стоит.
Много лет используем этот продукт. Очень профессиональный инструмент.
Кроме ErWin, мне попадалась только одна приличная программа для дизайна — это Dezign for Databases. Все остальные обследованные с большими схемами работают плохо. Что интересно, ни одной пиратской версии в сети я не встречал.
Спасибо за статью.

Интересно, какой у вас порядок количества таблиц в БД приложения (100 — 1000 — 10000...)?

И какой порядок кол-ва записей в самой большой таблице с метаданными модели ErWin (m7object, m7objectproperty?)?
На вскидку 2-3 тысячи таблиц. Порядок записей, как я понял, следующий: подсхемы внутри модели отсортированы в лексикографическом порядке, таблицы — в порядке попадания в схемы. Соответственно в m7object вначале идут схемы, затем таблицы в указанном порядке, затем столбцы и прочие объекты в порядке соответствующем порядку их родительских объектов — это структура m7object. В таблице m7objectproperty содержится иерархическая система свойств и связей объектов друг с другом в порядке обхода m7object. Таким образом упрощённо в m7object объект с id = 1 — это схема, затем c id от 2 до какого-то n — подсхемы, далее таблицы, столбцы, макросы. А в m7objectproperty с 1 до m свойства модели, с m до m*n свойства подмоделей, далее свойства таблиц в том порядке в котором на них ссылаются подсхемы указанного промежутка от m до m*n.
По поводу «но уже смотрим на продукты конкурентов»
SQL Developer пробовали?
Разработчик Oracle Corporation, поставляется бесплатно, работает на всех платформах.
Only those users with full accounts are able to leave comments. Log in, please.