|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Я еще дальше пойду - напишу вкратце, как оно у нас, а вы уж покажите, в какое место нужно прикрутить ООП_чего-то_там. Значит.... 1. Список. Есть процедура TableNameLst, возможно с параметрами, которая приносит записи из таблицы. Форма с гридом, в котором колонки. Есть запрос exec TableNameLst, который в грид отдает результат. Все. 2. Единичная запись - просмотр, редактирование и т.д. ХП: TableNameGet @ID, приносит одну запись. На форме этот запрос, компоненты для просмотра и изменения данных полей записи. Все. Если есть связанные списки с этой записью из других таблиц - на закладках все они в виде списков. 3. Изменение единичной записи. Все на той же форме есть компонент с процедурами TableNameIns, TableNameUpd, которые вызываются исходя из того, добавили или меняли запись. Все. 4 и все остальное. Допустим хотим мы, чтобы для выбранной записи (в списке или при редактировании) чего-то произошло по нашему велению - кидаем на форму запрос типа exec TableNameDoSomething, передаем туда ID записи, параметры (если их задаем руками), исполняем. Все. И? Куды тут ООП_механику_данных? Еще раз замечу, чтобы не было отговорок: речь идет не об ООП вообще, а об вашей ООП_механике_данных_СУБД и только о ней. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 14:01 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
pkarklinАбсолютно не согласен. Вы опять посчитали только малую толику затрат. Т.е. Вы не приплюсовали стоимость разработки третьего звена, которое можно было бы и не использовать. Т.е. вы хотите сказать, что для всех пользователей, имеющих доступ к системе, заведены логины к СУБД и все работает на row level security? Таким образом можно построть только довольно простую систему безопасности с кучей ограничений. А как насчет полноценной role based security с редактируемым списком прав для каждого объекта и наследованием этих прав?возможностью разрешать/запрещать, в общем внешне это очень похоже на права на файлы a-la права в NTFS... Реализуете это средствами СУБД? tygraЯ еще дальше пойду - напишу вкратце, как оно у нас, а вы уж покажите, в какое место нужно прикрутить ООП_чего-то_там. Тут трудно сказать в какое место надо ООП прикрутить, скорее надо все выкинуть и написать с использованием ООП, по-другому не получится :) Дяя создания новой редактируемой таблицы вам придется создать новую форму, написать процедуры для получения информации/изменения/удаления и т.п. Я могу описать, как это делается у меня. Есть форма ObjectList, которая отображает объекты любого типа с возможностью сортировки, поиска, постраничного пролистывания и т.п. В ее конструктор передается параметр типа IObjectType - это те самые метаданные типа, которые кэшируются в сервере приложений. При изменении, добавлении конкретного объекта на основании этих метаданных автоматически генерится формочка для редактирования/добавления объектов, если есть ссылки на другие объекты, то в зависимости от настроек могут быть разные варианты выбора - или через аткую же форму ObjectList, или через выпадающий список и т.п. На крайний случай можно для какого-нибудь типа переопределить форму выбора элемента. При удалении объекта автоматически на основании опять же метаданных о связях между объектами вычищаются или не вычищаются всязанные с ним объекты. В общем, при добавлении нового типа в системе у меня уже есть готовый механизм для редактирования данных объектов этого типа, назначения прав на объекты этого типа и т.п. Писать какой-то код для этого в общем случае не требуется. Это как раз хороший пример повторного использования кода, который дает ООП в общем и моя реализация в частности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 14:30 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Насчет прав уточню - если речь идет о том, чтобы просто закрыть доступ ко всем таблицам и открыть только для хранимых процедур, в которые передавать всякие ID пользователя - такой вариант не катит. Это получается то же security на уровне приложения, только это приложение СУБД, а не промежуточного слоя. От моего варианта отличается только тем, что доступ к таблицам у вас закрывается на уровне СУБД, а у меня на уровне сервера приложений, других принципиальных отличий нет, так же как и нет отличий в трудоемкости реализации. Я не говорю про реализацию всего сервера приложений - он вообще-то не для этих целей создавался. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 14:35 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторТ.е. вы хотите сказать, что для всех пользователей, имеющих доступ к системе, заведены логины к СУБД и все работает на row level security? Таким образом можно построть только довольно простую систему безопасности с кучей ограничений. Логины заведены для всех. Система безопасности очень сложная. авторА как насчет полноценной role based security с редактируемым списком прав для каждого объекта и наследованием этих прав?возможностью разрешать/запрещать, в общем внешне это очень похоже на права на файлы a-la права в NTFS... Реализуете это средствами СУБД? Именно такая система и есть. Практическая полная копия ACL винды. На счет средств СУБД: -Членство в роли бд - это средство СУБД? -Проверка принадлежности текущго пользователя к роли - это средство СУБД? -Связывание таблиц с данными с таблицами ACL - это средства СУБД? авторНасчет прав уточню - если речь идет о том, чтобы просто закрыть доступ ко всем таблицам и открыть только для хранимых процедур, в которые передавать всякие ID пользователя - такой вариант не катит. Никаких ID пользователей в хп не передаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 15:03 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Ради интереса опишу как это делается у меня. Для списка объектов у меня одна единственная форма на все приложение и если добавляются новые типы объектов, то с этой формой ничего делать не надо, тем более генерить что-то Для редактирования/просмотра объекта нужно добавить форму, унаследованную от формы супертипа и поместить на нее контролы для доп. атрибутов. Для работы с доп. атрибутами создаются процедуры. Контролы с процедурами связываются и все. Процедуры тоже создаются автоматически. Для простых типов даже форму добавлять не нужно. А если новый тип не имеет доп. атрибутов по отношению к супертипу, то все что нужно сделать - зарегистрировать новый тип в системе. Регистрация производится вызовом одной процедуры с минимум 2 параметрами Класс и суперкласс ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 15:03 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Вот насчет "А как насчет полноценной role based security с редактируемым списком прав для каждого объекта и наследованием этих прав?возможностью разрешать/запрещать, в общем внешне это очень похоже на права на файлы a-la права в NTFS... Реализуете это средствами СУБД?" могу сказать точно - реализуется, так как проектировал это сам. Права на методы, свойства, отчеты, приложения, которые могут работать с БД (т.е. SQLNavigator не пройдет) и прочее прочее прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 15:08 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Ну хорошо, определенная часть системы security ложится на плечи СУБД, что ее немного упрощает. Но для меня например неприемлемым является невозможность использования Dynamic SQL в хранимых процедурах. У меня система security не завязана на security СУБД, но по возможностям аналогична. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 15:27 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
VladiChНо для меня например неприемлемым является невозможность использования Dynamic SQL в хранимых процедурах. Я все-таки использую динамический SQL, но только для работы с временными таблицами для построения cross-tab отчетов. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 15:40 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Ну вот, у всех почти одинаково. Только у одних автоматически что-то генерится, а у кого-то вручную, но результат тот же - те же формы, те же процедуры. Так как в нашей системе мало чего наследуется на уровне данных, то все формы разные соответственно. Но конечно в самом приложении вне зависимости от данных все формы наследуются от базовой и т.д. - но это уже только клиентская вещь. VladiChЕсть форма ObjectList, которая отображает объекты любого типа с возможностью сортировки, поиска, постраничного пролистывания и т.п. В ее конструктор передается параметр типа IObjectType - это те самые метаданные типа, которые кэшируются в сервере приложений. При изменении, добавлении конкретного объекта на основании этих метаданных автоматически генерится формочка для редактирования/добавления объектов, если есть ссылки на другие объекты, то в зависимости от настроек могут быть разные варианты выбора - или через аткую же форму ObjectList, или через выпадающий список и т.п. На крайний случай можно для какого-нибудь типа переопределить форму выбора элемента. Тут я только не понял - у вас форма на лету создается в процессе выполнения приложения или все же на стадии разработки? Ну и форма ObjectList - она вроде как одна на всех. А фильтры? Динамически? ----------- Но вообще, сейчас к нам вернулся старый товарищ на работу, он разработчик системы ВЕРО - единый реестр объектов. Вот там все автоматизировано на полную катушку - список объектов единый, от него наследуются почти все сущности, есть типы объектов, которые так-же могут наследоваться друг от друга и от них зависит много чего. Система мощная, на объект можно навесить все, что захочется - все это настраивается, так же может быть множество атрибутов (тоже настраивается), независимо от объекта есть универсальные методы, есть собственные, есть мощная система статусов, есть система прав - как общая, так и на конкретный объект - и вся она на базе СУБД. Но все это делается средствами СУБД, клиент как всегда только отображает и кое-что универсализирует в смысле интерфейса. Когда ее пойму (когда время будет), смогу лучше рассказать, а пока что если только где в инете информация есть. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 16:25 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
tygraТут я только не понял - у вас форма на лету создается в процессе выполнения приложения или все же на стадии разработки? Ну и форма ObjectList - она вроде как одна на всех. А фильтры? Динамически? Вы про форму редактирования? Да, форма в процессе выполнения приложения создается. Фильтры тоже создаются динамически. tygraНу вот, у всех почти одинаково. Только у одних автоматически что-то генерится, а у кого-то вручную, но результат тот же - те же формы, те же процедуры. Ну так в этом и есть главное отличие - много писать кода или мало, проще поддерживать или сложнее. Все это ведь не ради каких-то метафизических премуществ создавалось или моды, а ради того, чтобы систему проще было расширять и поддерживать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 16:45 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
tygraНо вообще, сейчас к нам вернулся старый товарищ на работу, он разработчик системы ВЕРО - единый реестр объектов. Вот там все автоматизировано на полную катушку - список объектов единый, от него наследуются почти все сущности, есть типы объектов, которые так-же могут наследоваться друг от друга и от них зависит много чего. Система мощная, на объект можно навесить все, что захочется - все это настраивается, так же может быть множество атрибутов (тоже настраивается), независимо от объекта есть универсальные методы, есть собственные, есть мощная система статусов, есть система прав - как общая, так и на конкретный объект - и вся она на базе СУБД. Но все это делается средствами СУБД, клиент как всегда только отображает и кое-что универсализирует в смысле интерфейса Ну собственно моя система сильно похожа на то, что вы описали, и довольно много работы в ней также делается в СУБД. Список объектов единый, от него наследуются все сущности, ну и все остальное тоже. Я думаю у Old Nick все по аналогичным принципам построено. Единственно - наследование бизнес-логики делать на уровне СУБД - на эту тему я уже высказывался - это на мой взгляд ненужное извращение. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 16:48 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Ну тут видите - взгляды наши не совпадают -------- Автоматически генеренная форма это с одной стороны хорошо - с другой стороны, ничего добавить в нее уже нельзя, облом. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 18:00 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Значит.... автор1. Список. Есть процедура TableNameLst, возможно с параметрами, которая приносит записи из таблицы. Форма с гридом, в котором колонки. Есть запрос exec TableNameLst, который в грид отдает результат. Все. 2. Единичная запись - просмотр, редактирование и т.д. ХП: TableNameGet @ID, приносит одну запись. На форме этот запрос, компоненты для просмотра и изменения данных полей записи. Все. Если есть связанные списки с этой записью из других таблиц - на закладках все они в виде списков. 3. Изменение единичной записи. Все на той же форме есть компонент с процедурами TableNameIns, TableNameUpd, которые вызываются исходя из того, добавили или меняли запись. Все. 4 и все остальное. Допустим хотим мы, чтобы для выбранной записи (в списке или при редактировании) чего-то произошло по нашему велению - кидаем на форму запрос типа exec TableNameDoSomething, передаем туда ID записи, параметры (если их задаем руками), исполняем. Все. И? Куды тут ООП_механику_данных? Еще раз замечу, чтобы не было отговорок: речь идет не об ООП вообще, а об вашей ООП_механике_данных_СУБД и только о ней. Если в вашей системе завести 3 документа (накладная, заявление об увольнении, прием на работу) - то это будет 3 разных таблицы (как и у других). Теперь для того, чтобы реализовать операцию "Подпись" вы создадите 3 ХП Table1SignDoc/Table2SignDoc/Table3SignDoc и в каждой напишите приблизительно один и тот же код с точностью до имени таблицы. Нужно будет доавить вторую подпись - на море по колено - продублируем все ХП еще один раз. Тогда как в ОО вы ОДИН раз напишите логику подписи документа и будете вызывать везде ОДИН базовый метод для ВСЕХ документов системы. Вообще, непонятна ваша логика - на GUI ООП это круто, а для БЛ логики нет. Почему? Чем вдруг формы, контролы и работа с ними сильно отличаются от документов, клиентов и т.п.??? Такие же объекты, у которых функциональность пересекается из-зи чего удобно использовать наследование и полиморфизм при работе с ними. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 19:46 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
2tygra: Еще представьте, что Borland написал бы VCL по вашим правилам - на каждый контрол ControlNameSetSize ControlNameGetSize ControlNameSetWith ControlNameGetWidth и т.п. Для каждого нового пришлось бы написать ручками все методы. Ваше решение - полный аналог. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2005, 20:09 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
Terrorist Есть текст для, например, вопроса. Что с ним сделать для отображения нужно, что бы он был готов? Пожарить? :) Долго писать, но можете, если интересно, прочитать стандрат IMS QTI на imsorg . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 02:54 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ООПЕсли в вашей системе завести 3 документа (накладная, заявление об увольнении, прием на работу) - то это будет 3 разных таблицы (как и у других). Теперь для того, чтобы реализовать операцию "Подпись" вы создадите 3 ХП Table1SignDoc/Table2SignDoc/Table3SignDoc и в каждой напишите приблизительно один и тот же код с точностью до имени таблицы. Нужно будет доавить вторую подпись - на море по колено - продублируем все ХП еще один раз. Вообще-то, можно и не так. Если механизм "подписывания в базе" для записей разных таблиц одинаков, то я создам одну процедуру и "имя таблицы" передам в нее параметром. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 10:10 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
А еще есть понятие "генерация SQL скриптов по шаблону". Так что никто ничего по 100 раз в коде не дублирует, пишем однотипный шаблон, по нему собираются нужные скрипты, процедуры, триггеры и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 10:12 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
2 ООП Да вам, товарищ, на sql да и вообще с СУБД научиться работать бы надо - хотя бы вообще работать, а потом уж хорошо работать. А вот потом уже можно начинать комментировать - тогда не получится тот бред, который вы тут написали. Если разработчик не идиот, то он создаст одну базовую таблицу - документ, от которой наследуются остальные - заявления, накладные и т.п. И подпись будет ставиться на базовом документе - потому дергать будет разработчик_не_идиот одну процедуру SignDocument. Для воторой подписи соответственно создадим поле в базовой таблице и т.д. (см. выше) Так что пока не выучите sql и архитектуру создания кс систем - лучше не выражайте ваши фантазии, а то блин вот такие понасоздают систем, а потом орут: sql фигня, ничего сделать нельзя, в процедурах нельзя разобраться... Твою маман.... -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 10:30 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
С интересом прочитал всю тему. Предалагю все же разделять два вопроса: а) создание многозвенных приложений б) вынос бизнес-логики за СУБД (в моем понимании, именно для этого и создается сервер приложений) Многозвенка, по-моему, имеет смысл на существование. Легко могу представить себе что в некоторых случаях это бывает необходимо. Только в этой ветке приводились примеры: - целесообразно вынести какую-либо обработку "единицы" данных в спец. приложение (пример с использованием фотошопа для какой-либо обработки данных из базы) - необходимо обрабатывать всю инфу от СУБД к клиенту, т.е. вариант "толстого драйвера" (например, шифрование или какое-нибудь "хитрое" сжатие). Что касается сервера приложений, то тут пока я видел только два примера, для которых такой подход м.б. применим: - работа с геторогенными БД (создание СП м.б. эффективней некой консолидации) - ограничение на макс. кол-во пользователей (хотя это не совсем укладывается в вынос БЛ) Тут, скорее всего, речь будет идти о неправильно выбранной СУБД для данной задачи. Еще могу себе представить вынесение "оберток" в некий промежуточный слой - упрощается создание разнородных клиентских приложений к одной БД. Но опять же, это не является необходимостью выноса БЛ за пределы БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 10:38 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ограничение на макс. кол-во пользователей (хотя это не совсем укладывается в вынос БЛ) Тут, скорее всего, речь будет идти о неправильно выбранной СУБД для данной задачи. если таки подумать :D, то БЛ опять же остается в БД. И это вырождается в вариант "толстого драйвера" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 10:40 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
2tygra: авторЕсли разработчик не идиот, то он создаст одну базовую таблицу - документ, от которой наследуются остальные - заявления, накладные и т.п. И подпись будет ставиться на базовом документе - потому дергать будет разработчик_не_идиот одну процедуру SignDocument. Для воторой подписи соответственно создадим поле в базовой таблице и т.д. (см. выше) Гениально! На каждый уровень иерархии объектов системы мы создадим по таблице. У нас будет 1 таблица с ИД и номером, потом таблица с подписями, еще одна для базовых документов с контрагентами и т.п. При выборке одного документа мы будем делать JOIN из N таблиц. А базовая у нас будет содержать миллионы записей и любой запрос по любому документу будет обязательно шариться по ней. И это все для того, чтобы доказать, что ООП на сервере не нужен. Прогрессивный подход к построению КС систем. 2 ACRUS и Инженер: То, что вы предлагаете и есть один из вариантов надстройки над СУБД. Просто у вас она реализована средствами самой СУБД. Д.Сорокин приводил пример аналогичной надстройки, выполненной на .Net. В случае .Net большую часть того, что вам приходится писать самим - а именно хранение иерархии таблиц, выбор нужной таблицы для выборки (полиморфизм) и т.п. вы получаете "бесплатно" за счет использования ОО языка. Собственно, про это я и говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 11:18 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ООПГениально! На каждый уровень иерархии объектов системы мы создадим по таблице. У нас будет 1 таблица с ИД и номером, потом таблица с подписями, еще одна для базовых документов с контрагентами и т.п. При выборке одного документа мы будем делать JOIN из N таблиц Вы правда идиот или просто прикидываетесь? Если первое - сознайтесь честно, обижаться не будем Если второе - пришлем ведро гнилых помидор. авторА базовая у нас будет содержать миллионы записей и любой запрос по любому документу будет обязательно шариться по ней. А вот это правда - так обычно и делают, если используют именно такую архитектуру. Так работает система ВЕРО, причем в нескольких крупных предприятиях с огромным количеством данных - и работает хорошо. Просто нужно руки прямые иметь и знать, чего делаешь, но вам этого не понять :) авторИ это все для того, чтобы доказать, что ООП на сервере не нужен. Нет, это все для того, чтобы хорошо все работало. А ООП на сервере нет ни у нас, ни у вас, потому что его там просто нет :)) Используйте FastObjects - там вам будет полное ООП, по самое нихочу. авторПрогрессивный подход к построению КС систем. Конечно. У вас то его вообще нет - подхода, до сих пор все на клиенте делаете. Хотя может и вообще ничего не делаете - судя по постам. Может вы просто дворником в ИТ конторе работаете? Слышите иногда разговоры программеров - вот и нахватались "знаний" автор2 ACRUS и Инженер: То, что вы предлагаете и есть один из вариантов надстройки над СУБД. Просто у вас она реализована средствами самой СУБД. Д.Сорокин приводил пример аналогичной надстройки, выполненной на .Net. В случае .Net большую часть того, что вам приходится писать самим - а именно хранение иерархии таблиц, выбор нужной таблицы для выборки (полиморфизм) и т.п. вы получаете "бесплатно" за счет использования ОО языка. Собственно, про это я и говорю. Это не надстройка - это работа с СУБД, только правильно, по человечески, с пониманием и знанием СУБД и ее возможностей. А хранение иерархии таблиц и т.п. - это ненужная муть, вытекающая из того, что с уровня разработки клиента на уровень разработки сервера перейти у вас нет желания и умения. Иначе не писали весь этот бред. -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 11:46 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ООП2tygra: У нас будет 1 таблица с ИД и номером, потом таблица с подписями, еще одна для базовых документов с контрагентами и т.п. При выборке одного документа мы будем делать JOIN из N таблиц. А базовая у нас будет содержать миллионы записей и любой запрос по любому документу будет обязательно шариться по ней[/quote] Даже в таком :) варианте, при условии грамотных индексов и запросов работать будет быстро. Я бы даже рискнул сказать ОЧЕНЬ быстро :) [quot] То, что вы предлагаете и есть один из вариантов надстройки над СУБД. Просто у вас она реализована средствами самой СУБД. Д.Сорокин приводил пример аналогичной надстройки, выполненной на .Net. В случае .Net большую часть того, что вам приходится писать самим - а именно хранение иерархии таблиц, выбор нужной таблицы для выборки (полиморфизм) и т.п. вы получаете "бесплатно" за счет использования ОО языка. Собственно, про это я и говорю. Я еще раз предлагаю разделять использование "обертки" и использование СП с вынесенной в него БЛ. При определенных обстоятельствах я "ЗА" обертки. Но использование СП для меня пока остается загадкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 13:35 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
ООПУ нас будет 1 таблица с ИД и номером, потом таблица с подписями, еще одна для базовых документов с контрагентами и т.п. При выборке одного документа мы будем делать JOIN из N таблиц. А базовая у нас будет содержать миллионы записей и любой запрос по любому документу будет обязательно шариться по ней Даже в таком :) варианте, при условии грамотных индексов и запросов работать будет быстро. Я бы даже рискнул сказать ОЧЕНЬ быстро :) То, что вы предлагаете и есть один из вариантов надстройки над СУБД. Просто у вас она реализована средствами самой СУБД. Д.Сорокин приводил пример аналогичной надстройки, выполненной на .Net. В случае .Net большую часть того, что вам приходится писать самим - а именно хранение иерархии таблиц, выбор нужной таблицы для выборки (полиморфизм) и т.п. вы получаете "бесплатно" за счет использования ОО языка. Собственно, про это я и говорю. Я еще раз предлагаю разделять использование "обертки" и использование СП с вынесенной в него БЛ. При определенных обстоятельствах я "ЗА" обертки. Но использование СП для меня пока остается загадкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 13:36 |
|
Создание сервера приложений
|
|||
---|---|---|---|
#18+
авторУ нас будет 1 таблица с ИД и номером, потом таблица с подписями, еще одна для базовых документов с контрагентами и т.п. При выборке одного документа мы будем делать JOIN из N таблиц. А базовая у нас будет содержать миллионы записей и любой запрос по любому документу будет обязательно шариться по ней Да. Именно так и должно быть. Представьте, как в системе с отдельными таблицами для каждого документа, сделать такую операцию: "удалить все документы подписанные мистером ВВП" Придеться, сканировать N таблиц и чётко знать сколько таких таблиц есть и генерить динамический СКЛ! В случае одной базовой таблицы, для общих свойств всех документов, выполняется один СКЛ оператор, все связанные таблицы могут удалить записи ссылающиеся на базовые автоматически. И при этом совершенно не важно сколько у нас типов разных документов и где еще хранятся их атрибуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2005, 14:17 |
|
|
start [/forum/topic.php?fid=33&msg=33322555&tid=1548944]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
111ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 513ms |
0 / 0 |