Автор Тема: web семенары  (Прочитано 251129 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #555 : Январь 05, 2013, 10:32:40 am »
Давно хотел задать вам несколько вопросов по этим pdf'кам.
Можете вот это прокомментировать?
Цитировать
При решении интересных задач автоматизации объекты предметной области часто с
трудом отображаются в плоскую табличную структуру
. Основными проблемами является, во-
первых, сложная и неоднородная структура признаков таких объектов, во-вторых, изменения
и уточнения такой структуры в процессе использования системы. Реляционное
проектирование решает первую проблему либо с использованием гигантских таблиц, либо с
введением огромного их количества. Вторая проблема решается, как правило,
неудовлетворительно. Единственная действительно адаптивная организация реляционной БД
предполагает её «вырождение» до представления отдельной записью каждого атрибута
каждого объекта — т.е. наличия единой таблицы «Атрибуты» и таблиц метаинформации о
типах объектов. Однако при таком подходе теряется продуктивность SQL-запросов и вообще
смысл использования реляционной СУБД
Цитировать
...в реальности для нашего случая сложной предметной области мы оцениваем сокращение
трудоёмкости более чем вдвое, в сравнении с применением в автоматизированной системе
традиционной реляционной БД.

У меня работа вплотную связана с реляционными СУБД и я абсолютно не врубаюсь о каких проблемах идет речь.

DddIzer

  • Гость
Re: web семенары
« Ответ #556 : Январь 05, 2013, 10:41:33 am »
Тяжко это... клянусь своим дедом Моисеем и матерью своей Марией... ;)
  ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
Базару нет... тот же господень потратил неделю только на нас с вами... но и деться  вам особо некуда - назвался груздем - полезай в кузов  -  как иначе доказать что вы существо зделаное по ЕГО образу и ЕМУ подобное (а не -страшно казать ЭВОЛЮЦИОНИРОВАВШАЯ - научившаяся    говорить макака)... - ну не болтовней же на этом форуме...  с   с незрелой молодежью  :D

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: web семенары
« Ответ #557 : Январь 05, 2013, 11:05:26 am »
У меня работа вплотную связана с реляционными СУБД и я абсолютно не врубаюсь о каких проблемах идет речь.

Ну, например, про нерегулярность структуры. Вы посмотрели пример с признаками автомобилей?
Там, в мире запчастей, реально оказалась туева куча признаков.
Т.е., если иметь реляционную таблицу "запчасть", то понадобится 500 колонок - и таблица будет очень разрежённой. Или, например, в Postgre можно задействовать наследование таблиц, но там могут быть свои заморочки. Реально сейчас народ, как я смотрю, активно юзает ORM, наследует классы - а как там Hibernate отображает в таблицы, это его дело...
Ну и вторая проблема - это если вводятся новые признаки. Если не предпринимать специальных мер, то это может стать болезненным. И уж точно одним ALTER TABLE не обойдёшься.

А у тебя в 1C тоже, фактически, есть ORM, который часть проблем за счёт надстроенной объектности решает.

Если же взять чисто реляционку - и чисто язык программирования (тот же PHP), то придётся, фактически, переизобрести эти самые ORM, прежде чем сможешь нормально выражать свою мысль :)
« Последнее редактирование: Январь 05, 2013, 11:07:41 am от Илья Ермаков »

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: web семенары
« Ответ #558 : Январь 05, 2013, 11:11:32 am »
Есть такая книга:
Фаулер "Архитектура корпоративных приложений".

Alexus, конечно, разнесёт её в щепки за "не тот уровень понимания проблематики".
Но она хорошо отражает проблемы более приземлённые: как более-менее продуктивно, надёжно и модифицируемо организовывать приложение - на языке типа Java и с СУБД типа обычной реляционки.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #559 : Январь 05, 2013, 11:17:06 am »
500 колонок? O_o
Это в какой такой ситуации может столько колонок потребоваться?

Можно перечислить хотя бы примерно что вы предполагаете в них запихать?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #560 : Январь 05, 2013, 11:22:41 am »
Скажу честно. Пока у меня ощущение что у вас несколько искаженное представление о реляционной модели. Прекрасно помню какая каша у меня была в голове пока не набрался достаточно опыта.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #561 : Январь 05, 2013, 11:35:24 am »
А у тебя в 1C тоже, фактически, есть ORM, который часть проблем за счёт надстроенной объектности решает.
В 1С ORM не совсем ORM. Т.е. это не классическое ООП отображенное на реляционную модель. Там это скорее набор шаблонов таблиц с предопределенными индексами, полями и связями. Ну и есть конечно плюшки в виде набора удобных методов "знающих" эти шаблоны.
НО! Когда я проектирую БД, то не мыслю объектами. Я мыслю стратегиями, которые заключены в этих шаблонах/объектах. Т.е. у меня в голове шаблоны проектирования над реляционной моделью.
Кроме того я много больше пользуюсь запросами, чем "волшебными" методами... Т.е. задача решается обычно в терминах SQL и таблиц. В 1С - это сделано удобно, но оно не подменяет реляционную модель.

alexus

  • Гость
Re: web семенары
« Ответ #562 : Январь 05, 2013, 11:43:17 am »
У меня работа вплотную связана с реляционными СУБД и я абсолютно не врубаюсь о каких проблемах идет речь.

Ну, например, про нерегулярность структуры. Вы посмотрели пример с признаками автомобилей?
Там, в мире запчастей, реально оказалась туева куча признаков.
Т.е., если иметь реляционную таблицу "запчасть", то понадобится 500 колонок - и таблица будет очень разрежённой.
Существует несколько вариантов решения этой проблемы в рамках реляционной модели. Одно из решений мы рассмотрим в проекте подсистемы "Сбыт", если желаете...

Или, например, в Postgre можно задействовать наследование таблиц, но там могут быть свои заморочки. Реально сейчас народ, как я смотрю, активно юзает ORM, наследует классы - а как там Hibernate отображает в таблицы, это его дело...
Ну и вторая проблема - это если вводятся новые признаки. Если не предпринимать специальных мер, то это может стать болезненным. И уж точно одним ALTER TABLE не обойдёшься.
Это зависит от того, какое решение выбрано. Но ни в одном из известных мне решений явно использовать ALTER TABLE нет необходимости.

Если же взять чисто реляционку - и чисто язык программирования (тот же PHP), то придётся, фактически, переизобрести эти самые ORM, прежде чем сможешь нормально выражать свою мысль :)
Ну, ну... не факт, что "виноград зелен"...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #563 : Январь 05, 2013, 11:49:50 am »
Илья, если сегодня сформулируете простую обозримую задачу с этими автомобилями и запчастями, то я постараюсь рассказать как решается эта задача в реляционной модели на примере 1С.

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
Re: web семенары
« Ответ #564 : Январь 05, 2013, 11:50:17 am »
500 колонок? O_o
Это в какой такой ситуации может столько колонок потребоваться?

Можно перечислить хотя бы примерно что вы предполагаете в них запихать?

Если брать ту систему для торговли "тюнинговыми" элитными запчастями, про которую упоминания в статьях, то присланная заказчиком Excel-таблица "модели автомобилей" содержала колонки вплоть до WN (т.е. порядка 590). Это - все возможные признаки, которые нужно учитывать для автомобилей. Конечно, эта таблица разрежённая - т.е. для конкретной модели определена только четверть, скажем, признаков. (Т.е. признаки коробки передач вариаторного типа пустые для моделей, у которых коробка другого типа).

Конечно, "по уму" нужно затеять крупный анализ предметной области - и выделять отдельно сущности и "коробка" и проч. - и всё это отображать в десятки таблиц. Анализ такой, конечно, делать необходимо по-любому, только вот получится, что реляционная модель будет для выражения этого анализа где-то как ассемблер. Хочется какого-то промежуточного семантического уровня.
А в реальности многие разработчики, видя ограниченность сроков и сложность предметки, плюют на анализ и хреначат прямо таки 500-колоночные таблицы. Не пытаясь "структурировать" представления заказчика. Для торговца ведь это всё пространство признаков обычно "плоское": ему нужно просто подобрать соответствующую деталь, не вникая в её этимологию и классификацию.

Как я подступался к этой проблеме - вводил некий промежуточный семантический уровень, который позволял мне удобно систематизировать предметку. Дальше этот уровень клался на XML-СУБД, но я мог бы его без супер-усилий отобразить и на реляционку, с помощью некоего уровня отображения. Но тут уже реляционка точно использовалась бы просто как ассебмлер - с таблицами вида "объект - признак - значение" и т.п.
Могу выложить описание той модели данных, в которой мы систематизировали предметку.
Она называлась ФОК - Формат Картотеки.
Она была положена на СУБД "Седна", плюс был разработан набор визуальных компонентов для работы с такими карточками, на JS-каркасе Qooxdoo. Серверная же часть была на XQuery, с тонким слоем PHP.



Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: web семенары
« Ответ #565 : Январь 05, 2013, 12:02:31 pm »
Давно хотел задать вам несколько вопросов по этим pdf'кам.
Можете вот это прокомментировать?
Цитировать
При решении интересных задач автоматизации объекты предметной области часто с
трудом отображаются в плоскую табличную структуру
. Основными проблемами является, во-
первых, сложная и неоднородная структура признаков таких объектов, во-вторых, изменения
и уточнения такой структуры в процессе использования системы. Реляционное
проектирование решает первую проблему либо с использованием гигантских таблиц, либо с
введением огромного их количества. Вторая проблема решается, как правило,
неудовлетворительно. Единственная действительно адаптивная организация реляционной БД
предполагает её «вырождение» до представления отдельной записью каждого атрибута
каждого объекта — т.е. наличия единой таблицы «Атрибуты» и таблиц метаинформации о
типах объектов. Однако при таком подходе теряется продуктивность SQL-запросов и вообще
смысл использования реляционной СУБД
Цитировать
...в реальности для нашего случая сложной предметной области мы оцениваем сокращение
трудоёмкости более чем вдвое, в сравнении с применением в автоматизированной системе
традиционной реляционной БД.

У меня работа вплотную связана с реляционными СУБД и я абсолютно не врубаюсь о каких проблемах идет речь.

Если рассматривать мир через ООП-очки, то требуется иерархическая СУБД (типа XML-СУБД), реляционные базы же неиерархические.

Другой вопрос -- стоит ли делать ОО-картину мира?
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #566 : Январь 05, 2013, 12:04:29 pm »
Судя по тому, что в этой pdf у вас действительно слабое представление о реляционной модели. Ибо такая картотека делается в SQL-СУБД элементарно. И я не увидел задачи в pdf. Какая задача то стояла?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: web семенары
« Ответ #567 : Январь 05, 2013, 12:09:52 pm »
Если рассматривать мир через ООП-очки, то требуется иерархическая СУБД (типа XML-СУБД), реляционные базы же неиерархические.

Другой вопрос -- стоит ли делать ОО-картину мира?

Во-первых, иерархию в реляционке можно легко замутить даже с помощью одной таблицы.
Во-вторых современные СУБД в большинстве своем поддерживают рекурсивные запросы.

alexus

  • Гость
Re: web семенары
« Ответ #568 : Январь 05, 2013, 12:17:40 pm »
Илья Евгеньевич прав в том, что такая проблема существует... См. подробнеенапример, здесь.
Но существует не только проблема, но её решения, в рамках реляционной модели. Будет ли это "ассемблер"? В некотором смысле - да (придётся брать на себя те функции, которые должны быть реализованы в СУБД). Но едва ли это труднее, чем использовать нереляционные СУБД.
При этом проблема настолько древняя, что не понятно, почему до сих пор разработчики стандартов SQL не включили её решение в новые версии стандарта. Вложенные таблицы, которые есть в стандарте данную проблему не решают.

alexus

  • Гость
Re: web семенары
« Ответ #569 : Январь 05, 2013, 12:20:20 pm »
Если рассматривать мир через ООП-очки, то требуется иерархическая СУБД (типа XML-СУБД), реляционные базы же неиерархические.

Другой вопрос -- стоит ли делать ОО-картину мира?

Во-первых, иерархию в реляционке можно легко замутить даже с помощью одной таблицы.
Во-вторых современные СУБД в большинстве своем поддерживают рекурсивные запросы.
Простую иерархию - да, легко... более, чем одним способом. Но если каждый узел иерархии имеет произвольное количество разных атрибутов... и атрибуты не всегда элементарных типов... то здесь и возникают проблемы.