Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Корюшка"Старый" вариант реализации не меняет метаданные, а создает "динамические" справочники с помощью массы Join - ов. Я не супер программист. Но думаю, что этот вариант все равно лучший. В постгрессе есть индексы по выражению и условные индексы (и их сочетание). Их применение могут дать удовлетворяющий вас результат (на выборках, а может и на изменениях). Кроме того GIST индексы, которые станут в версии 8.1 полноправными (с конкурентностью и логгированием) частями Postgres, может быть достигнута феноменальная производительность (не побоюсь этого слова). (правда осторожность не помешает: в версии 8.0.3 они ели неоправданно много места и времени на создание , если первый столбец в индексе не уникален) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2005, 12:57 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
funny_falconв версии 8.0.3 они ели неоправданно много места и времени на создание , если первый столбец в индексе не уникален Поправка: имеет одно или несколько(немного) значений, которым соответствует львиная доля различных значении в остальных столбцах (~1:1000). Решается в большинстве случаев переносом его на более поздее (не первое) место. Т.е. делай первым столбцом наиболее разнобойное поле и никаких проблем вообще. На выборку данный "глюк" не влияет (версия 8.0.3). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2005, 13:03 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Funny_Falcon Я не супер программист. Но думаю, что этот вариант все равно лучший. В постгрессе есть индексы по выражению и условные индексы (и их сочетание). Их применение могут дать удовлетворяющий вас результат... Развейте, пожалуйста, свою мысль хотя бы до намека на решение прикладной задачи. Вот мне лично "лучший" вариант тоже больше нравится, да вот полевые испытания (в различных вариациях) не дали ответа, как справиться с падением производительности при увеличении числа атрибутов. И куда там пристроить индексы по выражению и условные индексы (и их сочетание)? Заранее благодарна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2005, 14:05 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Жентельмены и мадамы, может приведём пару структур и запросы на них? А то как-то всё о высоком да о высоком? Не обязательно полные структуры, но хотя бы основу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 12:31 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Сразу извиняюсь. Я не построил еще ни одной действующей системы подобного рода. (хотя придется). Есть вариант: написать агрегатную функцию, которая будет "собирать" наш объект из полей. Делать один один join, группировать по ObjectID - с ростом числа аттрибутов число JOIN-ов не величивается, он всегда один, а агрегатную функцию можно настроить, чтобы работала O(N) от числа полей - т.е. сколько полей, столько времени и занимает. Множественные JOIN-ы полагаю больше времени занимают. Кроме того, можно объекты восстанавливать не полностью, а только необходимые сейчас поля. Другой вопрос - что этот агрегат будет возвращать. Первый вариант - тип. Тогда нам нужно создавать и изменять типы, агрегаты, функции. Второй вариант - сериализованное представление, и тогда нужен только набор функций (взять поле с именем таким-то такого-то типа). Если у нас только атомарные значения в полях, все вообще зашибись. Если составные, то нужно быть осторожнее: постгрес имеет тенденцию выполнять функцию при каждом ее упоминании, т.е. в select complex.i,complex.j from (select ret_complex(t.k+t.l,t.k-t.l) from t) as complex (где ф-ия ret_complex возвращает тип с полями i,j) выражение ret_complex(t.k+t.l,t.k-t.l) будет выполнено два раза для каждой строчки t. Агрегатную функцию лучше всего (как мне кажется) писать на plperl, если она возвращает тип, и plpythonu если сериализованное представление (plpythonu может возвращать только строки). Причем в случае plpythonu в промежуточном значении агрегата можно вообще использовать только ссылку на объект python-а, экономя тем самым место. Значения полей любого типа можно хранить в тексте. И тут приходят на помощь индексы: можно строить индекс по преобраванию поля в нужный тип: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. itercable <dot> ru, буду благодарен за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 12:44 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
2 Funny_Falcon Спасибо, очень интересно. Ну, в общем-то, я уже прошла тот уровень, о котором Вы говорите. Запрос у меня всегда возвращает только набор ссылок (ну, коллекцию объектов, в Вашей терминологии, если я Вас правильно поняла) на нужные мне объекты, без значений атрибутов. Значения атрибутов я получаю "потом", по мере обработки данных (например, при отображении - скроллинг списка документов вызывает динамическую подгрузку значений нужных мне атрибутов и т.д.), однако проблема вовсе не в этом. Основная проблема в том, что выборку (коллекцию объектов) приходится формировать, исходя из значений этих "виртуально-динамических" атрибутов. Естественно, это все выполняется в процедурах на сервере, исходя из значений Словарей Данных, а там уже одним единственным Join не обойтись (скажем более корректно - я не смогла обойтись). Индексы в работе у меня практически не используются (ну, естественно, индексы первичных/внешних ключей все же используются :) ), так как в дизайн-тайме состав нужных атрибутов неизвестен, заранее неизвестны структуры запросов, и, следовательно, неясно, по чему строить индексы. Конечно, значения информационных полей в служебных атрибутах-справочниках проиндексированы, что несколько улучшает картину, но выборки часто строятся по сложным условиям, и выборка выполняется без использования индексов. К примеру, при формировании запроса на получении списка документов, сгруппированного последовательно по 3-4 атрибутам (что-то вроде псевдодерева), время реакции на такой запрос занимает до нескольких минут уже на объема 10-20 тыс. документов. В то же время подобные запросы к "родным", жестко сформированным структурам выполняются около 0,3...0,5 секунд на объеме в 100 тыс. документов. (реально ожидаемая нагрузка - 40-50 тыс., требуемое время реакции на запрос - 2-3 секунды.) Все данные - для сервера FireBird 1.5.2 (SS), почти все установки по умолчанию, на Windows XP Prof SP1, на машинке AMD Athlon 3.2 +, 512 RAM и т.п. (ничего особенно плохого/хорошего). ----------- "Значения полей любого типа можно хранить в тексте." - и это было (есть). Эффективнее оказалось ограничиться несколькими простыми типами, хранимыми в разных табличках, чем выполнять преобразования типов в/из строки. Впрочем, вопрос спорный для различных случаев. ----------- Все равно спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 19:08 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за назойливость, Корюшка. Я пока не представляю, какой точно структура будет у меня и какие запросы будут применяться. Если возможно (нетрудно, есть свободное время и т.п.) можешь прислать примерную структуру таблиц, сэмпловые данные и запросы? Не обязательно оригинальные, просто test-suit (но чтоб тормозило). Очень интересно было-бы поколдовать. 2-3 сек. может и слишком, но думаю секунд двенадцать - пятнадцать все-таки можно выжать. (я верю в Postgres Ж-))))) ну хотя бы попытаться Ж-))))) (да и меркантильный интерес - как начинающему, хотелось бы посмотреть на что-нибудь работающее). Пару других насущных (для меня по-крайней мере) задач я уже разрешил. К примеру-организовал хранение древовидной структуры с сохранением иерархии в отдельном текстовом поле. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. велосипед ?) Присылай на почтовый ящик, если в форуме нельзя большой файл прикреплять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2005, 20:49 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
1. Рабочая база на FireBird, схема есть в ErWin (интересно было бы переработать с учетом возможностей PostgreSQL - я имею в виду наследование таблиц - но пока не нашла в ErWin такого. Может, как-либо, используя субтипы...). В PostgreSQL еще не "рыба в воде". Пока осваиваю основы, пишу тестовые программки. 2. Еще рабочий вариант: гораздо более быстрый, но "некрасивый". В табличке создается избыточное число полей, назначение которых меняется динамически, самим пользователем. Все такие поля - физически типа Varchar (чтобы не так база "пухла"). Отдельно - словарь атрибутов, в котором указан тип (еще раз - логический, физически все Varchar) В FireBird с полями типа Varchar по сетке гонятся только фактические данные. Отдельная табличка - список связей со справочниками (т.к. справочников также переменное число). Значения соотв. полей справочника физически переносятся в главную табличку. Т.е. денормализация - дальше некуда. Даже триггеры есть специальные - при изменении значений в справочниках (и значения ссылки на элемент справочника) физически меняются значения отображемых атрибутов. Ужас, конечно, с т.зр. концепции нормализации - зато выборки очень шустрые. Т.е. запросы выглядят не так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. В общем, этот вариант первоначально рассматривался как шутка, но тесты показали его высокую пригодность с т.зр. времени доступа к данным. А при изменениях, как ни странно, каскадное изменение значений атрибутов происходит достаточно быстро: доступ к зависимым данным легко осуществляется по внешним ключам. Все это работает довольно шустро (именно эта схема в сейчас в эксплуатации, так что если увидите базу с подобным безобразием в структуре - можете смело на меня ругаться :) ), но опять-таки: все нормально, пока объемы данных в известных пределах. Индексы на все поля/варианты заранее не построишь, вот и собираюсь создать систему более жесткую, в т.ч. с заренее предопределенными запросами и индексами под них. 3. Как легко догадаться, в обоих случаях довольно большая нагрузка как на сервер (ХП / триггеры), так и на клиента (интерпретация логической структуры в физическую и наоборот). Впрочем, основная нагрузка - на программиста. ::) PostgreSQL начинающий во многом прав. 3. Извините, схемы я Вам не вышлю. Самой нужно :). 5. Вспоминается анекдот: мужчине после автокатастрофы пересадили женские уши. "Доктор, пожалуйста, отпарывайте обратно" "Что, плохо слышите?" "Слышу хорошо: не понимаю ничего." (Это так, к слову) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2005, 00:56 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Уважаемый автор! 1. Перед тем как что то писать, надо что то спроетировать. И хотя бы в общих чертах узнать о сути и возможностях возможно используемых вами СУБД. Система с периодически alter table это метод проектирования, типа "Постоянные танцы с бубном". Ни к чему хорошему не приводит. посмотрите SQLXML в mssql. ЭТО РАЗ. PostgreSQL позволяет хранить такую вещь, как динамические массивы чего либо. ЭТО ДВА. POstgreSQL позволяет создавать свои типы данных(читай Гради Буч-а и считай объекты). ЭТО ТРИ. В конце концов можно делать innerhits. ЭТО ЧЕТЫРЕ. У ВАС УЖЕ 4 ВАРИАНТА КАК НЕ ЗАНИМАТЬСЯ ТЕМ, ЧТО БОЛЬШАЯ ЧАСТЬ НАЗЫВАЕТ УПОРНЫМ (ПРОГРАММ/анан)ИЗМОМ. 2. Есть такое правило - стоимость конечного продукта должна иметь тот же порядок, что и стоимость тех устройств, примененных для его создания. Как я понял - вы хотите все сразу, и нахаляву. 3. Хамить не надо. Вы здесь никто и звать вас никак. Пришли - задали вопрос - когда его попросили уточнить - послали и нахали хамить, показывать свои распальцовки. Вам тут ответ нужен или же самоутвердиться? 4. Представьте себе задачу - у вас 2000 записей в файле БД и в 1 проиходит замена значения одного поля. Чтобы физически в файле БД заменить значение надо перезаписать весь файл. Так делается? нет (иначе производительность була бы близкой к нулю) Новое значение данной записи пишутся в конец файла, а старая запись переопределяется при прочтени новой. Пусть и весьма грубо, но принцип понятен? Так вот - уверен, что если бы офигелые ручки периодически делали "vacuum" то никаких проблем бы не было. Кстати, такое число alter говорит опять же о том, что структура БД построена не была. И поверьте опыту - никакие деньги при таком подходе не покажутся вам не то что большими - даже достаточными не покажутся. Скачайте инструкции по БД которыми вы собираетесь пользоваться, и хотя бы примерно определитесь для себя со: 1. жесткой структурой БД. 2. Технологиями, которые вы сможете получить а свой арсенал. 3. Технологиями, корорые в вашем случае пригодны. 4. Все же не проходите мимо mssql с ее sqlxml (если есть аналоги в opstgreSQL - прошу поделиться информацией со мной - ибо не владею) 5. И избавьтесь от желания Платить по минимуму - лучше деньги на mssql дополнительно с начальника снять - не думаю что это проблема. Ему то работающая система нужна, а не деньги экономить? И срок небось ограничен? Вот в крайнем случае скидывайте эти головные боли на него. С уважением ZiNTeR (2kplus1@rambler.ru) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 07:10 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
ZiNTeR 1. Система с периодически alter table это метод проектирования, типа "Постоянные танцы с бубном". Ни к чему хорошему не приводит. Да, а почему? :) Я, например добавление новых языков в систему сделал именно так. И ничего, жужжит-с :). ZiNTeR 2. Есть такое правило - стоимость конечного продукта должна иметь тот же порядок, что и стоимость тех устройств, примененных для его создания. Как я понял - вы хотите все сразу, и нахаляву. Наверно самый лучший пример - мелкософт. Особенно отдел впаривания, а продают - за копейки. ИМХО Вы не учли экономический аспект разработки/продажи продукта. Например если я продам 500 продуктов по $100 это лучше, чем 5 по $1000, ибо в этой штуке есть стоимость покупки MSSQL. ZiNTeR Скачайте инструкции по БД которыми вы собираетесь пользоваться, и хотя бы примерно определитесь для себя со: 1. жесткой структурой БД. Почему структура БД должна быть жесткой? В чем прична? Как пример - есть система, в которой динамически добавляются языки. Переводы на другие - обвзязаны триггерами, есть признаки оригинальности и т.д. Т.е. работа с языками - на триггерах. Естественно, что добавление/удаление языка - геморой вплоть до нескольких часов. Но чем это плохо? Чем хорошо - изменение метаданных редкое событие, и сколько оно длится - некритично (в разумных пределах), а вот на делфах были написаны приятственные базовые классы которые динамически разруливали любое количество языков, и запросы в пределах языка делаются не медленнее чем с одним языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 11:00 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Корюшка Все данные - для сервера FireBird 1.5.2 (SS), почти все установки по умолчанию, на Windows XP Prof SP1, на машинке AMD Athlon 3.2 +, 512 RAM и т.п. (ничего особенно плохого/хорошего). Раз уж вы используете FireBird, рекомендую хотя бы для эксперимента попробовать на FireBird 2.0, там серьезные доработки в плане оптимизации запросов, в том числе и для индексов с "плохой" селективностью. Он конечно еще на стадии бета, скоро RC будет. Последний билд лучше взять тут: http://firebird.sourceforge.net/download/snapshot_builds/win/ Beta1, которая везде валяется, имеет много глюков с timestamp. Ну а по сути проблемы - могу только присоединиться к общему мнению, что модификация метаданных как принцип функционирования системы в рабочем режиме - это очень плохо, для любых серверов, не только IB/FB, а как выясняется и для PostgreSQL. Вы всегда будете иметь проблемы на пустом месте, особенно при большом количестве пользователей. Нужно искать решение на статических структурах таблиц. Яркий пример тому - системные таблицы любого SQL-сервера. Они ведь статичны и хранят информацию о структуре любой произвольной базы данных. И они такие же самые как и наши пользовательские таблицы, и хранят информацию в том числе и о самих себе. Если у вас все тормозит, значит надо что-то подправить в консерватории. Но без конкретных структур, без конкретных запросов, вам никто ничего толком сказать не сможет. Для FB кстати есть неплохой инструмент - IBExpert, он при исполнении запросов показывает планы запросов, кикие индексы используются, сколько записей из каких таблиц читается и как (через index или natural). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 14:39 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
barry Ну а по сути проблемы - могу только присоединиться к общему мнению, что модификация метаданных как принцип функционирования системы в рабочем режиме - это очень плохо, для любых серверов, не только IB/FB, а как выясняется и для PostgreSQL. Вы всегда будете иметь проблемы на пустом месте, особенно при большом количестве пользователей. Нужно искать решение на статических структурах таблиц. Почему? Что в этом плохого? Если операция alter table выполняется монопольно, то все будет нормально, а если немонопольно - то любой из вариантов будет требовать внимательности программиста. barry Яркий пример тому - системные таблицы любого SQL-сервера. Они ведь статичны и хранят информацию о структуре любой произвольной базы данных. И они такие же самые как и наши пользовательские таблицы, и хранят информацию в том числе и о самих себе. Если у вас все тормозит, значит надо что-то подправить в консерватории. Именно! Системные таблицы - прекрастное место для обновления данных о таблицах! комманда alter table этим и занимается! (ну + еще немножко :) Так позволим же движку СУБД самому страдать о таблицах и как с ними работать. А если серьезно - то наверно самый яркий, как для меня аргумент это проблемы сопровождения этого добра. Это действительно при смене разработчика будет мрачно. Впрочем идея динамических справочников - тоже требует некислого вникания. ЗЫ Реклама firebird'а в форуме постгреса - это прикольно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 14:58 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Andrey DaeronПочему? Что в этом плохого? Если операция alter table выполняется монопольно, то все будет нормально, а если немонопольно - то любой из вариантов будет требовать внимательности программиста. Плохое именно в том, что она как раз монопольна, речь ведь идет о том, чтобы это делал любой юзер при обычной работе с базой. Andrey DaeronИменно! Системные таблицы - прекрастное место для обновления данных о таблицах! комманда alter table этим и занимается! (ну + еще немножко :) Так позволим же движку СУБД самому страдать о таблицах и как с ними работать.Да - все почти так, если опять забыть о монопольности. Andrey DaeronЗЫ Реклама firebird'а в форуме постгреса - это прикольно :) Ну у них уже система работает на FireBird, смена платформы - это занятие весьма болезненное. Может быть мною предложенный варинт позволит обойтись без кардинальных переделок. Да и разве Postgres или другой сервер - это средство лечения проблемы? Postgres что-то кардинально изменит? Я глубоко сомневаюсь. А разницу между FB 1.5 и FB 2.0 я представляю прекрасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 02:15 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Корюшка, и как часто вам приходится добавлять новые языки? Я не утверждал, что для postgreSQL постоянное использование alter table это зло. Просто так никто и никогда БД не строит. Ни один здоровый человек не рассчитывал свою БД для такого использования. Не думаю, что postgres исключение . Такой метод проектировки БД - это не конечный проект, а скорее диагноз для психоаналитика. К тому же - те же языки программирования - Разве для того чтобы добавить новый язк, вам приходится переписывать программынй код postgres? Вы просто используете для этого возможности, изначально вложенные в саму СУБД. Поймите одну вещь. Хотя нет - для начала найдите книгу Гради Буч-а ОСНОВЫ ОБЪЕКТНОГО ОРИЕНТИРОВАННОГО АНАЛИЗА И ПРОЕКТИРОВАНИЯ http://www.helloworld.ru/texts/comp/other/oop/about.htm%5D%7C>]http://www.helloworld.ru/texts/comp/other/oop/about.htm]|> http://www.helloworld.ru/texts/comp/other/oop/about.htm" TARGET="_blank"> и прочитайте хотя бы 1 главу. Так будет легче разговаривать - сейчас вы пытаетесь решить задачу теми методами, которые для решения подобных задач не используются. Система которую нужно постоянно изменять для продолжение работы - это не конечный продукт, а бесконечная головная боль. Хотя мне то вспринципе все равно. как хотите так и работайте. P.S. Кстати не услышал ваших извинений по поводу некорректного общения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 02:31 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Пердисловие: Себя великим и могучим програмистом не считаю, однако есть общие правила, понимая корорые, а также их принно-следственную связь надо проектировать. Сам же совсем недавно сел за postgres, о чем не жалею. К размышлению об alter table как мотоде хренения аморфных данных: Давайте, к примеру, возьмем обычный банкомат. Изначально это автомат с ограниченным числом взодов и выходов. Допустим владелец захотел расширить его функциональные возможности (ну допустим - добавить возможность играть через него в какой то казино с кредитки). Более того - задача может постоянно меняться - добавляются игры, новые возможности, и так далее: Есть 2 метода решения: 1. Экстенсивный - надо добавить табло чисто для казино. Поскольку дальнейшие задачи не определены, то в автомате тогда закладывыется возможность автоматическое добавление таких элеметнов (Ну чуток пофантазируем) Пусть тогда мы сделали систему, которая сама берет молоток, гвозди, и т.д. и сама же начинает себя оббивать новыми системами управления для разных игр, и в то же время удалять уже ненужные элементы. Для этого данная же система должна сама изменять и свое внутренне представление. Теперь представьте, что банкомат сломался. Приехал ремонтник, и.... Я думаю, что с этого зрелища он просто и окончательно прифигеет.... Весь банкомат полностью изменил свою структуру, и непонятно что к чему идет. Хотя и все работает. Зато число однотипных элементов изменилось настолько, что оно просто не укладывается в голове(как известно в голове одновременно в быстрой памяти может храниться не более 7 +-2 информационных объектов, далее происходит переполнения буфера :) ) Лезть в такую систему - изначально обрекать себя на неприятности 2. Интенсивный - создается многофункциональная система, которая чможет дать интерфейс для многих последующих возможностей. Думайте сами, решайте сами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 03:08 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
ZiNTeRПросто так никто и никогда БД не строит.гм. т.е. надо понимать, что [ZiNTeR]==[никто] ? ZiNTeR Ни один здоровый человек не рассчитывал свою БД для такого использования. . сильное утверждение. Можете доказать? Иначе - это попросту типичное оскорбоблеяние походя, характерное для некоторых "нормальных человеков", ... гм, что бы о них сказать помягче... ZiNTeRТакой метод проектировки БД - это не конечный проект, а скорее диагноз для психоаналитика.гм. такой тип логики (вывод именно этого высказывания из именно этих посылок) - уж точно диагноз. причем не для психоаналитика, а сразу для психиатра. Вы занимаетесь типичным "автовзводом", что типично для паранояльных типажей. ZiNTeR P.S. Кстати не услышал ваших извинений по поводу некорректного общения... нуда нуда, оно еще и чего то требует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 11:22 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
ZiNTeRКорюшка, и как часто вам приходится добавлять новые языки? А ей-то чего? Это я добавляю. Добавление - по мере необходимости. ZiNTeR Я не утверждал, что для postgreSQL постоянное использование alter table это зло. Просто так никто и никогда БД не строит. Ни один здоровый человек не рассчитывал свою БД для такого использования. Не думаю, что postgres исключение . Почему? Аргументы - ф студию :) ZiNTeR Такой метод проектировки БД - это не конечный проект, а скорее диагноз для психоаналитика. К тому же - те же языки программирования - Разве для того чтобы добавить новый язк, вам приходится переписывать программынй код postgres? Вы просто используете для этого возможности, изначально вложенные в саму СУБД. Поймите одну вещь. Хотя нет - для начала найдите книгу Гради Буч-а ОСНОВЫ ОБЪЕКТНОГО ОРИЕНТИРОВАННОГО АНАЛИЗА И ПРОЕКТИРОВАНИЯhttp://" TARGET="_blank">http://www.helloworld.ru/texts/comp/other/oop/about.htm]http://www.helloworld.ru/texts/comp/other/oop/about.htm" TARGET="_blank"> и прочитайте хотя бы 1 главу. Так будет легче разговаривать - сейчас вы пытаетесь решить задачу теми методами, которые для решения подобных задач не используются. Система которую нужно постоянно изменять для продолжение работы - это не конечный продукт, а бесконечная головная боль. Нашел, прочитал. Буч - есть Буч. В общем - хорошее описание того, что мне 6 лет рассказывали в институте. Если хотите что-то сказать опраясь на него - говорите, Вас попытаются понять. А тыкать пальцами в хорошие книжки - дык я могу Вас отослать к Кнуту, тоже хороший автор. Например для просчета сложности алгоритмов в том и другом способе. Ы? Что далее? Еще раз, Я ввожу такое структурирование моей информации. Я[b/] пишу программный код используя объектно-ориентированную декомпозицию предметной области. И это работает! И не увеличивает ни сложность разработки, ни время (кроме того, что было потрачено на проектирование базовых классов и реализацию использования DDL). Меня не устраивает увеличение СЛОЖНОСТИ системы без использоания DDL. Это увеличение НЕ улучшит жизнь программистов. И не увеличит быстродействие системы. Мое решение - упрощает жизнь программистов, и уменьшает сложность системы. Да, мое решение требует внимательности при собственно внесении DDL изменений, и я на это иду, например заставляя иметь пользователя монопольный доступ к БД, и заставляя делать предварительный бекап БД. ZiNTeR Хотя мне то вспринципе все равно. как хотите так и работайте. P.S. Кстати не услышал ваших извинений по поводу некорректного общения... Сер, Вы ведете себя некорректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:25 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
barry Andrey DaeronПочему? Что в этом плохого? Если операция alter table выполняется монопольно, то все будет нормально, а если немонопольно - то любой из вариантов будет требовать внимательности программиста. Плохое именно в том, что она как раз монопольна, речь ведь идет о том, чтобы это делал любой юзер при обычной работе с базой. Пожалуй да. Для оперативного - добавил/удалил/отредактировал - и все без перегрузки ПО и многих пользователях с DDL будут проблемы. Например то, что DDL не транзакционится толком. barry Andrey DaeronЗЫ Реклама firebird'а в форуме постгреса - это прикольно :) Ну у них уже система работает на FireBird, смена платформы - это занятие весьма болезненное. Может быть мною предложенный варинт позволит обойтись без кардинальных переделок. Да и разве Postgres или другой сервер - это средство лечения проблемы? Postgres что-то кардинально изменит? Я глубоко сомневаюсь. А разницу между FB 1.5 и FB 2.0 я представляю прекрасно. :) это без наездов, просто прикольно. На счет того, что не менять коней на переправе - это конечно да. Впрочем судя по тому, что топик сентябрьский по сути, все советы давать уже поздно :). ЗЫ Вердикт: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:34 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
4321ё ZiNTeRПросто так никто и никогда БД не строит.гм. т.е. надо понимать, что [ZiNTeR]==[никто] ? ZiNTeR Ни один здоровый человек не рассчитывал свою БД для такого использования. . сильное утверждение. Можете доказать? Иначе - это попросту типичное оскорбоблеяние походя, характерное для некоторых "нормальных человеков", ... гм, что бы о них сказать помягче... ZiNTeRТакой метод проектировки БД - это не конечный проект, а скорее диагноз для психоаналитика.гм. такой тип логики (вывод именно этого высказывания из именно этих посылок) - уж точно диагноз. причем не для психоаналитика, а сразу для психиатра. Вы занимаетесь типичным "автовзводом", что типично для паранояльных типажей. Что касается alter table в самой программе - считаю егозлом, поскольку его постоянное применение угрожает инкапсуляции. Можно сказать что перешел на postgres по идейным соображениям - дабы отделить саму программу, от ее БД, что разработку можно было их вести независимо. ZiNTeR P.S. Кстати не услышал ваших извинений по поводу некорректного общения... нуда нуда, оно еще и чего то требует Оно на самом деле - он. Щеколдин Владислав Георгиевич, живу в Краснодаре, 21 год. Занимаюсь разработкой сайтов. По поводу извинений и прочий гневный тон мой был обращен исключительно на автора Корюшка, который меня и вывел из себя. Повел я себя пожалуй сам некорректно, за что и приношу свои извинения. Регистрацию на сайте не прходил, не ради анонимности, и потому что было лень - сейчас сделаю. С уважением ZiNTeR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 14:55 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
ZiNTeRприношу свои извинения.встречно. попросту: тема - да, неясная. И зачем ее решать именно так - тем более. Но ессли нет ясных доказательств невменяемости пути, то и не стоит априори ее (невменяемость пути) предполагать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 15:05 |
|
||
|
Динамическое изменение метаданных
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Пожалуй да. Для оперативного - добавил/удалил/отредактировал - и все без перегрузки ПО и многих пользователях с DDL будут проблемы. Например то, что DDL не транзакционится толком. Ну и я о том же. Если уж и идти на это, то эти операции не должны быть доступны каждому рядовому пользователю наравне с обычными операциями ведения справочников. Это должно сидеть где-то типа в отдельной утилите, доступно сисадмину, чтоб он это делал выгоняя всех из базы, четко зная ограничения на все это дело. Да и раз есть реализованы такие штуки, то это значит что можно не только добавлять поля и прочее, а и удалять их. И попробуй потом среди 50-100 человек найти, кто это сделал. Накрылась информация лет за пять, только потому, что какая-то тетя Дуся не ту кнопку нажала - очень весело будет. Далеко не каждый день такие вещи делаются, ну пусть раз в неделю, раз в месяц, обычным пользователям это нельзя давать в руки. Andrey DaeronВпрочем судя по тому, что топик сентябрьский по сути, все советы давать уже поздно :). Ну судя по тому, что у нас есть оппоненты, такой подход все же иногда применяют - пусть послушают, я думаю тема все равно интересна и актуальна. :-) Пусть хоть знают, что ходят по граблям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:30 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33285774&tid=2006636]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 270ms |
| total: | 434ms |

| 0 / 0 |
