metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-08-23 12:50 pm

Адъ баз данных

Софт1: написан почти целиком мной, заказной: 186 таблиц, 169 хранимых процедур
Софт2: написан мной и ребе белнетмоном, коробочный: 74 таблицы, 40 хранимых процедур

(Anonymous) 2010-08-23 01:09 pm (UTC)(link)
Соответственно, при добавлении еще одного рэбе количество таблиц и процедур еще более сократится?

[identity profile] bigfrogg.livejournal.com 2010-08-23 01:21 pm (UTC)(link)
>>Софт2: написан мной и ребе белнетмоном, коробочный: 74 таблицы, 40 хранимых процедур

Из которых ребе метакласс написал 90 таблиц и 62 хранимые процедуры :)

[identity profile] metaclass.livejournal.com 2010-08-23 01:29 pm (UTC)(link)
Сложный вопрос. Возможно, увеличится, т.к. у каждого ребе будет свой кодогенератор, создающий over 9000 таблиц, вьюшек и хранимых процедур за один вызов :)

[identity profile] metaclass.livejournal.com 2010-08-23 01:30 pm (UTC)(link)
Не, у нас разделение труда другое - ребе белнетмон пишет код, а я потом код удаляю :)
Я не умею писать код, а ребе религия запрещает его удалять.

[identity profile] zelanton.livejournal.com 2010-08-23 01:44 pm (UTC)(link)
Ребе, мы в вас верим, число таблиц и процедур непременно превысит цифру 1000!

[identity profile] metaclass.livejournal.com 2010-08-23 01:46 pm (UTC)(link)
Не, я столько даже в модели для кодогенератора заполнять задолбусь. Не говоря уже о том, что клиенты столько сущностей не придумают. А если придумают - то все равно там большая часть сведется к одной таблице типа "Documents(ID,blob)" :)

Адъ баз данных

[identity profile] komarov.livejournal.com 2010-08-23 02:13 pm (UTC)(link)
НАХЕРА СТОЛЬКО?!?!?!

Re: Адъ баз данных

[identity profile] metaclass.livejournal.com 2010-08-23 02:14 pm (UTC)(link)
"Так получилось".

Re: Адъ баз данных

[identity profile] dmzlj.livejournal.com 2010-08-23 02:38 pm (UTC)(link)
действительно. доказано ведь, что для каждой задачи заведомо достаточно трех таблиц.

Re: Адъ баз данных

[identity profile] metaclass.livejournal.com 2010-08-23 02:39 pm (UTC)(link)
Entities,Attributes,Values?

Re: Адъ баз данных

[identity profile] dmzlj.livejournal.com 2010-08-23 02:44 pm (UTC)(link)
Ну можно и так. Вообще-то число могло быть любым, это типа была ирония.

одна

[identity profile] sa-chernomor.livejournal.com 2010-08-23 02:54 pm (UTC)(link)
create table universe (
id,
parent,
type := entity|attribute|value,
blob
)

Re: одна

[identity profile] dmzlj.livejournal.com 2010-08-23 03:46 pm (UTC)(link)
поля id, parent и type --- лишние.

Re: одна

[identity profile] volodymir-k.livejournal.com 2010-08-23 04:03 pm (UTC)(link)
Потому что запись в этой таблице будет одна. В ней будет храниться зазипованная БД фокспро с сотней таблиц.

Re: Адъ баз данных

[identity profile] g-rub.livejournal.com 2010-08-23 04:04 pm (UTC)(link)
... (вкрадчиво) ребе, а Вы еще не использовали RDF в проектировании моделей предметной области? Там как раз три типа сущностей: субъекты, объекты, предикаты...

(удалился, злорадно похихикивая)

[identity profile] ilya-portnov.livejournal.com 2010-08-23 04:05 pm (UTC)(link)
В нашей софтине есть такая специальная концепция, 'публикация отчётов'. Типа, кнопочки для вызова разных отчётов должны появляться в разных местах, и это должно очень гибко конфигуряться. Для этого наворочен десяток сущностей с замысловатыми отношениями. Когда я спросил товарища, который формально за это в команде отвечает, нафига так сложно, ответ был: 'я три раза вносил предложения сделать проще. Предложения приняли, но в итоге каждый раз становилось сложнее'.

Re: Адъ баз данных

[identity profile] metaclass.livejournal.com 2010-08-23 04:13 pm (UTC)(link)
Мне пока ER-моделей хватает.

[identity profile] plumqqz.livejournal.com 2010-08-23 04:36 pm (UTC)(link)
Э... А где потрясаться.

PS Что-то процедур маловато. На клиента логику тянете, лодыри...

[identity profile] metaclass.livejournal.com 2010-08-23 04:45 pm (UTC)(link)
Логика в базе очень сильно усложняет обновление - в Firebird нет механизма "поменить зависимые объекты как инвалидные и перекомпилировать". Только дропать все дерево зависимостей начиная с листьев, менять объект и создавать зависимые заново.
Ну и, при всей моей невменяемости - я СТОЛЬКО бизнес-логики в хранимых процедурах не напишу - отладки нет, курсоров кошерных нет, типов нормальных нет, временные таблицы использовать не получается - отчетные транзакции "только для чтения", а если их сделать пишущими - забытый юзерами отчет начинает мешать сборке мусора, и прочая, и прочая.
В общем, при всех достоинствах FB писать серверную логику на нем сложно.

[identity profile] nekhill.livejournal.com 2010-08-23 04:59 pm (UTC)(link)
Софт3: писался 5 лет, потом год доделывается нами. 120 таблиц, over 1000 хранимых процедур. Очень хотим извести количество хранимых процедур до около 400 (CRUD), но не получится, ибо местами очень дофига данных в таблицах, и нужно ускорять :)

[identity profile] vp.livejournal.com 2010-08-23 05:19 pm (UTC)(link)
1000? А в каком стиле хранимые процедуры? Может толпа чего-то мелкого?

[identity profile] metaclass.livejournal.com 2010-08-23 05:21 pm (UTC)(link)
Ускорять в плане - обработку делать на сервере, поближе к данным?

[identity profile] nekhill.livejournal.com 2010-08-23 05:24 pm (UTC)(link)
Да, мелкого полно.
Ещё есть подсистема фильтрации объектов по 100500 критериев, которая ускорения ради делается на сервере и чтобы не тащить клиенту все 300 гб базы данных. В фильтрацию мы даже не лезем - её писал уже покинувший контору человек, любящий сильно нетрадиционные подходы.
Ещё есть слабообоснованное дублирование некоторого числа ключевых сущностей ради, допустим, многоязычной сортировки на стороне сервера БД, которое тащит за собой дублирование всех взаимодействующих ХПшек.
Собственно, всё это надо активно и жестоко чистить, но есть ещё near 500 000 строк мудрёного кода, поток новых требований и 2 разработчика на всё.

[identity profile] nekhill.livejournal.com 2010-08-23 05:25 pm (UTC)(link)
Написал комментом выше.
Или просто с целью не таскать много данных клиенту, ибо в далёкой перспективе предстоит работа большого кол-ва юзверей через инет.

[identity profile] nekhill.livejournal.com 2010-08-23 05:27 pm (UTC)(link)
Да, приложение сначала разрабатывали таким, чтобы оно на каждый чих сохраняло все сделанные изменения в БД. Извращенцы. Сейчас точим его в направлении "грузить объектами, держать на клиенте, периодически кидать в БД". Соответственно, в результате первого подхода был написан комплект ХП на довольно атомарные операции и на каждый чих. При этом SQL-запросы в явном виде из приложения не швыряются _никогда_.

Page 1 of 4