|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Здравствуйте , товарищи. Помогите с такой проблемой. Нужна система, позволяющая отслеживать строительство промышленных объектов так чтобы ежедневно заноситm состояние этих объектов в БД. При этом нужно обеспечить структурированную регистрацию произвольного кол-ва параметров этих самых объектов. Получается что жестко задать структуру таблиц , хранящих данные нельзя. Как быть? Если у кого есть подобный опыт, поделитесь пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2003, 13:02 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Возможны варианты: а) Использование чисто реляционной СУБД (типа MSSQL, MySQL, Access) Вопрос создания модели решается самым сложным образом - созданием промежуточного "слоя" из метаобъектов. Ссылки по этой теме: * Реляционная БД как хранилище объектов (известная статья Тенцера) * Пример создания картографической БД (также ссылки на др.ресурсы) б) Использование истинно объектной СУБД (типа Cache' и т.д), удовлетворяющей стандарту ODMG. Вопрос создания модели и программирования решается естественно просто на стороне СУБД, если вы знакомы с ОО-подходом и программированием б) Использование реляционно-объектной СУБД (типа UDB, Oracle, Postgres и т.д) Вопрос создания модели решается несколько сложнее, чем в случае б) и легче чем, в а) поскольку на стороне СУБД можно создавать произвольные структуры-объекты и функции работы с ними, но не сами методы объектов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2003, 14:13 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
На уровне типа промышленного объекта можно создать таблицу, содержащую названия необходимых параметров и их возможные значения если это нужно. То есть эта таблица может содержать 3 поля: ключ типа объекта, названние параметра и одну или несколько колонок с возможными значениями. Создав такое описание, при создании нового реального объекта создаешь специальную таблицу, которая и содержит нужные тебе описания. Что то по моему немного мутно объяснил. Но суть состоит в следующем. По моему ты пытаешься ориентироваться на такую структуру таблицы, в которой параметр это колонка. А нужно наоборот. Названия параметров и их значения хранить в строках. Тогда нет никаких проблем с колличеством и инзменением структуры таблицы под каждый случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2003, 14:25 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Спасибо ответившим. По ссылкам погуляю. Хранение какждого параметра в отдельной строке - хорошая идея и возможно единственная, которая дает то , что мне нужно в обычной (не объектной ) БД, но при этом терзают смутные сомнения что это будет укладываться в законы построения реляционных БД. Имея набор параметров в столбцах все просто ,быстро и изящно, но жестко. А засунув параметры в строки можно умереть на последующей обработке информации (ИМХО).Есть ли у кого такой опыт? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 09:17 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
spa писал:... засунув параметры в строки можно умереть на последующей обработке информации ... Не переживай - все нормально. Именно так и делается. Небольшие трудности с разработкой интерфейса - и ничего более. Учет материальных ценностей - у каждой категории свои характеристики. У меня работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 09:44 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Если все параметры попадают в один столбец, то они хранятся как данные одного типа. Как решается эта проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 12:38 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Скорее всего решение будет DBMS-специфично, точнее, его можно сделать таковым. К примеру, в Oracle можно попробовать поработать с типом ANYDATA: http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/sql_elements2a.htm#54882 http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96590/adfnstyp.htm#434671 Тенцер предлагает описать несколько таблиц с различными типами хранимых атрибутов- это одно из общих решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 13:07 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Я использую VARCHAR2. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 13:11 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Я вот тут как-то случайно вышел на контору, которая, как я понял, так проектирует структуру, что вновь появившиеся после запуска базы в эксплуатацию аттрибуты легко "ложатся" в их оптимизированную структуру без добавления новых таблиц, полей.., то есть без изменения базы. Правда, нет времени все это изучить, если что новое узнаете - черкните сюда пару строк... А адрес такой - http://www.sterling.ru/software/ . Там есть описания, по-моему, можно догадаться, как там это у них сделано... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 13:31 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
вот еще достаточно проработанно http://www.stikriz.narod.ru/ ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2003, 03:26 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Предполагаю что буду использовать вариант с хранением всех данных как строковых. Всем большое спасибо за ответы ! spa ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2003, 07:55 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 spa: Хранение какждого параметра в отдельной строке - хорошая идея и возможно единственная, которая дает то , что мне нужно в обычной (не объектной ) БД, но при этом терзают смутные сомнения что это будет укладываться в законы построения реляционных БД. Имея набор параметров в столбцах все просто ,быстро и изящно, но жестко. Да, но такой промежуточный вариант ("урезанный" Тенцер) - с хранением объектов, числовых/строковых параметров в виде отдельных сущностей и связей между конкретными объектами и параметрами, тоже не без недостатков. Например, как обеспечить корректность значений т.к ограничения типа check нельзя использовать А засунув параметры в строки можно умереть на последующей обработке информации (ИМХО).Есть ли у кого такой опыт? ... Предполагаю что буду использовать вариант с хранением всех данных как строковых. Всем большое спасибо за ответы ! При таком подходе ограничения и разные "геморрои" прослеживаются даже теоретически: => Реляционная модель с ее естетсвенными ограничениями целостности работает только частично, например, придется как-то гарантировать уникальность значения в строке с разделителем/определителем. => Надо писать функции по работе со строками с разделителем/определителем, например, поиск в строке значения конкретного параметра ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2003, 23:07 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Если будешь использовать "обычные" СУБД, то в этом случае можно наплодить таблиц-аттрибутов, т.е. под каждый аттрибут или связанную группу аттрибутов создать ОТДЕЛЬНУЮ таблицу (пусть их даже будет сотни этих таблиц аттрибутов), со связью 1<-1 с главной. При таком построении можно пользоваться всеми прелестями реляционной базы, напр. check на уровне строки и всевозможные constrains на уровне базы + индексы + возможность строить "осмысленные" запросы и т.д. и т.п. Так же правомерно в этом случае будет использование триггеров, привязанных к вполне "осмысленным" полям и таблицам. При желании можно немного постараться и реализовать управление этими таблицами из программы (т.е. если надо - позволить программе создавать и описывать новые простые или составные аттрибуты, которые будут затем храниться в "собственных" таблицах) Будет немного труда в начале разработки, но это сполна окупится. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2003, 03:48 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
сорри, вовремя это я... на число не посмотрел... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2003, 03:50 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
vdimas Если будешь использовать "обычные" СУБД, то в этом случае можно наплодить таблиц-аттрибутов, т.е. под каждый аттрибут или связанную группу аттрибутов создать ОТДЕЛЬНУЮ таблицу (пусть их даже будет сотни этих таблиц аттрибутов), со связью 1<-1 с главной. В "обычных", то есть реляционных СУБД - это можно назвать недочетом проектирования (если не ошибкой). С появлением нового объекта необходимо добавлять в схему новую таблицу атрибутов, в клиенте делать новое окно отображения и т.п. rmn_itam дал верный совет (см. его пост) Еще можно посоветовать сделать привязку атрибутов к объекту и на этой основе делать динамические запросы в клиенте, для того чтобы получить сводную таблицу значений по однотипным объектам. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2003, 10:56 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Во-первых, я не думаю, что там все параметры произвольные. Всё равно есть какая-то часть, которая имеется у всех объектов. Вот их нужно выделить и хранить в обычных таблицах. А для остальных использвать метод метатаблиц, как тут предлагалось (ID,TypeParam,NameParam,VarStr,VarInt,VarDouble,VarMemo,...). Если есть возможность, то можно всё хранить в текстовом виде как строки, тогда структура упрощается. Существуют ещё варинаты, когда разные типы хранятся каждый в своей таблице (чтобы место сэкономить). Но с точки зрения обработки это получается очень сложно. И ещё, для данной задачи я Вам весьма рекомендую сделать не просто список параметров, а ещё и разделы, где эти параметры сгрупированны. Плюс, что-то типа справочника параметров, из которого оператор будет их добавлять в конкретные объекты. Там, естетсвенно, та же система разделов, по которым эти параметры сгрупированы. В справочнике мы храним тип, наименование и значение по умолчанию. Возможно, что ещё и допустимый диапазон значений для данного параметра. Я бы ещё сделал к справочнику третью таблицу (кроме разделов и самих параметров), где бы при необходимости можно было хранить список допустимых или наиболее часто используемых значений, которые пользователь потом сможет выбирать с помощью ComboBox'а. Насколько я знаю эту предметную область (строительство), то там это встречается очень часто. Те же материалы конструкций или диаметры труб, марка бетона, цемента, металла и т.п. Причём тут, опять же, в большинстве случаев достаочно ограничется обычным текстовым представлением. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2003, 12:49 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 Jinn В "обычных", то есть реляционных СУБД - это можно назвать недочетом проектирования (если не ошибкой). С этим распространенным мнением хорошо знаком, т.к. сам несколько лет назад его придерживался. Считается, что плодить таблицы - излишество. Однако взгляни еще раз, для чего именно это предлагается (checks, индексы, ограничения целостности на уровне базы). И еще немаловажный вопрос по быстродействию! Когда данные храняться в "своих" таблицах, а не свалены в "кучу" в общих таблицах аттрибутов, все работает гораздо быстрее. И ничуть не сложнее написать "create table", чем "select". Так что, при грамотном подходе проблем не будет. А кто-нить может объяснить внятно, почему плодить таблицы считается ошибкой??? В ООП, например, тысячи классов/объектов - дело нормальное. А если в БД тысячи таблиц - "ошибка проектирования"... И то и другое есть проекция/моделирование сущностей решаемой задачи на конкретные цифровые представления. Вполне понятно желание "скомпоновать" похожие по типу (но не по СМЫСЛУ) данные в "групповых" таблицах, в страхе заблудиться в собственном проекте. Так кто же просит это "вручную" делать. Сначала делаем некий "движок", которому как раз и доверяем автоматизацию этого процесса. Организуем наши сущности в виде иерархических справочников (как Дмитрий Мыльников предложил) в целях удобства навигации, и ... Не так страшен черт, как его малюют - со сложностью можно бороться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2003, 23:18 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
vdimas> И еще немаловажный вопрос по быстродействию! Когда данные храняться в "своих" таблицах, а не свалены в "кучу" в общих таблицах аттрибутов, все работает гораздо быстрее. Так индексировать нужно, и все будет OK. Куча-то совсем небольшая. Плюс при такой схеме запросы получаются динамические, что очень плохо для того же быстродействия. Их можно сделать статическими, но сложно. К примеру при OLTP от динамических запросов сервер просто умрет. vdimas> А кто-нить может объяснить внятно, почему плодить таблицы считается ошибкой??? Само по себе много таблиц не есть формальная ошибка. Но если на каждый новый атрибут пользователь будет строить таблицу, то ему нужно выдать привелегию на create/drop database object. Такой пользователь потенциально может сильно испортить настроение DBA. Плюс пользователю нужно выдать привелегию на лазание по системным таблицам, тоже не очень хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 00:24 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Само по себе много таблиц не есть формальная ошибка. Но если на каждый новый атрибут пользователь будет строить таблицу, то ему нужно выдать привелегию на create/drop database object. Такой пользователь потенциально может сильно испортить настроение DBA. Плюс пользователю нужно выдать привелегию на лазание по системным таблицам, тоже не очень хорошо. А как насчет инкапсуляции этих моментов в процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 01:16 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
А я думаю, что тут есть ещё один момент. На самом деле количетсво параметров не такое уж "любое" и бесконечное. Я немного эту предметную область знаю, там действительно параметров много, СНиП'ов всяких полно. Но при всём при этом там тоже есть своя внутренняя структура с конечным числом объектов и их свойств. То есть, есть ещё варнат, когда мы делаем не просто справочник параметров, а "хранилище" этих параметров. То есть, таблица создаётся не для каждого объекта, а когда новый параметр добавляется в справочник. Но на самом деле нужно делать прототип и тестирвоать на удобство и быстродействие. Мне приходилось видеть системы с метатаблицами, где к примерно 30 тыс. базовых записей генерилось почти 500 тыс. записей в таблицах параметров. При этом система становилась ну очень сильно тормозной, хотя там что-то такое пытались оптимизировать и практически все операции выполнялись хранимыми процедурами на сервере. Что касается "много таблиц - плохо", то это связано с той же экономией ресурсов. Когда то это были ограничения на количество одновременно открытых файлов, сейчас попытка сэкономить ресурсы сервера. Ведь сервре, как я понимаю, для каждой используемой таблицы будет собственный объект заводить с буферами, таблицей прав пользователей и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 07:34 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
vdimas 2 Jinn В "обычных", то есть реляционных СУБД - это можно назвать недочетом проектирования (если не ошибкой). С этим распространенным мнением хорошо знаком, т.к. сам несколько лет назад его придерживался. Считается, что плодить таблицы - излишество. Однако взгляни еще раз, для чего именно это предлагается (checks, индексы, ограничения целостности на уровне базы). И еще немаловажный вопрос по быстродействию! Когда данные храняться в "своих" таблицах, а не свалены в "кучу" в общих таблицах аттрибутов, все работает гораздо быстрее. Ты несколько заблуждаешься. Не "плодить таблицы" а создавать для каждого нового объекта свою таблицу параметров. При таком подходе разработчик должен каждый раз, при появлении нового объекта, создавать новую таблицу параметров. При некоторой удаленности разработчика от заказчика это займет определенное время, что выльется в простой. Да и заказчик за такое удовольствие должен будет платить (поддержка). Заказчику это надо? Теперь о быстродействии. При грамотной индексации и шустром сервере быстродействие будет на уровне RT. На wintel с одним пнем это примерно до 10000 параметров и до 500000 их значений. Ну и до кучи про "кучу" :) В системе можно предусмотреть динамическое создание VIEWS, который разворачивет характеристики объектов в плоскую таблицу, для каждого типа объекта по набору привязанных параметров. Таким образом мы получаем тот же набор таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 11:23 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 Jinn Уже второй голос утверждает, что можно и некоторого быстродействия достичь на определенном количестве записей - кто же спорит? Только никто еще не высказался по поводу того, а что же делать с checks и constrains? А насчет "ручного" создания - повторюсь, этот процесс можно и нужно автоматизировать, тогда необходимость держать разработчика "на привязи" отпадет сама собой. Мое предложение подразумевает автоматизацию процесса создания таблицы аттрибуттов как основу идеи. 1C не боиться при добавлении полей менять структуры таблиц, а мы что - пальцем деланные? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 19:30 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
vdimas> А как насчет инкапсуляции этих моментов в процедуры? Конечно можно спрятать в процедуры. Но во-первых динамический SQL все равно остается по крайней мере для создания таблицы, во-вторых нужно очень внимательно продумывать систему, чтоб не позволить пользователью удалить чужую таблицу по ошибке, даже из процедуры. Разработчик ведь тоже от ошибок не застрахован. К тому же создание/удаление таблицы гораздо более медленный процесс, чем добавление/удаление нескольких записей в несколько таблиц, пусть даже это и относительно редкое явление. vdimas> Только никто еще не высказался по поводу того, а что же делать с checks и constrains. Автоматическое поддержание целостности SQL сервером безусловно достоинство предлагаемого решения. Но за него нужно платить теми процедурами, в которые прячутся от пользователя создание/удаление таблиц. Т.е. имеет место выбор: либо с констрейнами бороться с помощью триггеров, либо с таблицами с помощью процедур. Так по-моему проще и безопаснее с констрейнами бороться. Ведь удаление таблицы по ошибке (а ведь это можеть быть таблица customers) гораздо хуже, чем мусор в дочерней таблице, оставшийся по ошибке после удаления записи в родительской таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 22:24 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 c127 Дык, ведь без ума креститься - только нагрешить! Зачем предоставлять возможность удалить таблицу Customers? В интерфейсе готового программного продукта должны присутствовать средства по управлению аттрибутами. Пользователь и знать не должен, что в ответ на его действия могут создаваться , изменяться или удаляться таблицы. Опять же (не перебивать! :)) ), если в неких таблицах атрибутов есть записи, то пользователь просто не имеет права удялять такие таблицы. Сложная логика? Фонарь... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2003, 22:51 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 vdimas Check и Constrains нужно использовать только тогда, когда это очень критично. Как и внешнии ключи. Все это тормозит работу сервера БД. Лучше, по возможности, обходится без них. В данном случае достаточно будет внешнего ключа с конструкцией delete cascade, для удаления зависимых записей. Если нужно ограничить значение параметра, то строится еще одна или две таблицы, где указаны допустимые значения атрибутовов с привязкой как к атрибуту, так и к типу объекта. И никаких чеков. Ввод данных - через ХП. А вот как ты будешь искать в сотне таблиц объект по значению атрибута, при условии что наименование атрибута и объекта нам неизвестны? Даже сам запрос составить уйдет много времени, не говоря уже о времени поиска. Думать нужно не только о том как хранить, но и о том как добыть. В случае хранения значений атрибутов эта проблема решается "на раз" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2003, 15:19 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 Jinn Собственно подошли к тому, с чего надо было начинать. Без достаточно полной постановки задачи , мы в этом топике можем лишь обмениваться мнениями, которые лучше или хуже для разных по спицифике требований. Все способы хороши! :) Наша задача дать спрашивающему максимум материала, из которого только он один (обладая адекватной информацией о требованиях) сможет выбрать наиболее подходящий вариант, или не выбрать ни одного, но наши посты дают достаточно пищи для размышлений. Не в порядке спора а истины ради: :) Думать нужно не только о том как хранить, но и о том как добыть В моей схеме предполагается хранить некую мета-информацию о таблицах аттрибутов. Так что этот вопрос тоже легко решается. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2003, 18:28 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Во, в правильном направлении разговор пошёл. :) А то полезли в дебри. И вообще, если ему не нужен анализ всех этих параметров у объектов, а лишь возможность пользователю что-то такое сохранить, чтобы потом, вызвав объект, посмотреть, то можно вообще всё хранить в текстовом виде. Тогда вся структура упрощается до одной вторичной таблицы, где хранится ID объекта, название параметра и его значение. А уж что там пользователь себе сохранит - дело пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2003, 21:14 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Jinn: Check и Constrains нужно использовать только тогда, когда это очень критично. Как и внешнии ключи. Все это тормозит работу сервера БД. Лучше, по возможности, обходится без них. Вы это серьёзно?! Если да, то у меня вопрос - а где Вы учились проектировать БД (тема форума)? Ну нельзя же быть настолько безграмотным в самом деле.. Вопрос производительности относится к проектированию опосредованно. Проектировать БД нужно, исходя из принципов построения баз данных (реляционная теория, нормальные формы). А если конкретная СУБД конкретного производителя настолько слаба, что на её работу влияют те самые принципы, на которых она ДОЛЖНА БЫТЬ построена, то лучше выкинуть такую систему. Либо отказаться от принципов, но скрепя сердце и полностью отдавая себе отчёт в том, ЧТО Вы делаете. Я не экстремист вроде Дейта или Паскаля, но наличие таких высказываний в форумах наводит на мысль, что они правы. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2003, 15:32 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Павел Воронцов Ну нельзя же быть настолько безграмотным в самом деле.. Вопрос производительности относится к проектированию опосредованно. Проектировать БД нужно, исходя из принципов построения баз данных (реляционная теория, нормальные формы). Вы, сударь, похоже невнимательно читаете мои посты. Написано было "КРИТИЧНО". Проектировать базы нужно не "исходя из принципов построения", а исходя из требований заказчика с использованием упомянутых принципов. При этом надо помнить пословицу: "Научи дурака Богу молиться - он себе весь лоб расшибет". А если конкретная СУБД конкретного производителя настолько слаба, что на её работу влияют те самые принципы, на которых она ДОЛЖНА БЫТЬ построена, то лучше выкинуть такую систему. Гхм. Это ты перед заказчиком можешь выеживаться. И объяснять ему что выбранная им система никуда не годится, и он должен купить новую, более производительную, по той простой причине, что ты не сможешь спроектировать в соответствии с теорией. Бывает, конечно, что заказчик хочет на грош пятаков наменять. Но бывают и случаи, когда нужно привязывать разрабатываемую систему к уже работающей. Еще бывают случаи, когда дорог каждый тик процессора. Для примера: сбор и обработка информации с системы датчиков в реальном режиме времени. В этом случае foreing key только тормозит, как и check. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2003, 20:02 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Jinn - Ну извините, погорячился. Про объяснять заказчику я и сам всё знаю, и про критичность в некоторых случаях каждого тика процессора тоже. Перечитал Ваш пост и понял, что меня покоробило. Я бы сказал совсем не так - "Check и Constrains НЕ нужно использовать только тогда, когда это очень критично". В этом наше различие, только и всего. ) Ещё раз извините, если что не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2003, 07:06 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Павел Воронцов Я бы сказал совсем не так - "Check и Constrains НЕ нужно использовать только тогда, когда это очень критично". В этом наше различие, только и всего. ) Можно и так сказать. Но опять же - не стоит увлекаться. Все таки производительность - последнее качество базы. Да и прежде чем накладывать ограничения стоит задаться вопросом "А оно это нать?" :) В то же время иногда это значительно облегчает как проектирование и сопровождение (развитие). Foreing key с опцией delete cascade значительно облегчит код хранимых процедур и, соответственно, оптимизирует их выполнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2003, 10:49 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Jinn: Я бы скорее задался вопросом "А оно нать?" при попытке удаления того или иного ограничения. Безусловно, производительность - важное и порой определяющее качество базы. Но всё же основной её (базы) задачей является реализация бизнес-логики. Собственно для того всё это (реляционную теорию-SQL-современные СУБД сиречь сервера) и придумывали. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2003, 11:55 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
Павел Воронцов Jinn: Я бы скорее задался вопросом "А оно нать?" при попытке удаления того или иного ограничения. Безусловно, производительность - важное и порой определяющее качество базы. Но всё же основной её (базы) задачей является реализация бизнес-логики. Собственно для того всё это (реляционную теорию-SQL-современные СУБД сиречь сервера) и придумывали. В общем - пришли к консенсусу. Мы с тобой идем к одной цели с разных сторон: ты отсекаешь лишнее, а я добавляю необходимое. Конечный результат будет, практически, одинаков :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2003, 14:01 |
|
Хранение произвольного кол-ва параметров
|
|||
---|---|---|---|
#18+
2 Jinn Ты абсолютно прав, что checks и constrains тормозят работу. Только надо бы уточнять (чтобы не смущать неподготовленного слушателя), что накладываемые ограничения на целостность тормозят выполнение только лишь операций добавления и обновления данный. Судя по предметной области - строительные объекты 500 раз в секунду не сдаются. :) Так что, для данных, имеющих справочный характер, использование checks и constrains по-максимуму вполне оправдано. ------ Сам стараюсь по-возможности обходиться без ограничений целостности, особенно в автоматически-генерируемых данных, но ведь такое с умом надо делать, панимаешь ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2003, 16:25 |
|
|
start [/forum/topic.php?all=1&fid=32&tid=1546870]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
146ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 267ms |
0 / 0 |