Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Генерация SQL - классами. / 25 сообщений из 28, страница 1 из 2
23.05.2008, 14:29
    #35331473
_xrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Недавно стал задумываться над вопросом. Сейчас нахожусь на дописывании - саппорте двух КИС.
Логика одной говорит. Все просто:
Создавай таблицы пиши логику на стороне сервака. и ваяй вот так-то так-то ГУИ все просто.
Вторая.
Есть БД. Есть к ней стандартные классы. г(Backoutdoc, Regdoc, ItemoutDoc - и т.д) Вот эти классы сами генерят sql. И на сохранение, и на удаление и на селекты. Но делают они это криво, и не всегда спасает. Приходиться ваять иногда самому. Ну конструктор гуи там тоже.

Внимание Вопрос.
Хочется узнать как живут другие: В ваших КИС - как прописывают запросы? как они хранятся?. Хранятся ли они жестко в коде?. или подгружаются Более интересно конечно если они генерятся рантайм. Спасибо.
...
Рейтинг: 0 / 0
23.05.2008, 14:51
    #35331548
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Вариант1, т.к варинт2 совсем непонятен.
авторВот эти классы сами генерят sql
искусственный интелект что-ль?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
23.05.2008, 15:01
    #35331578
_xrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Петро123
искусственный интелект что-ль?


Точно..
Например есть
DOC (id uniqueidentifier, from uniqueidentifier, to uniqueidentifier, rem Varchar(20))

Под него заточен класс:
class Doc: public SqlObject
public:
pid: GUID;
Contragent* from; // в базе это внешние ключи, в коде ассоциации
Contragent* to;
rem: std::string
end;


Обращение в коде:
Doc doc;
Doc.to = to1; Doc.from=from;
Doc.save()

в базу идет sql - insert doc (id, from, to) values (newID(), ... , ..);
типо того
...
Рейтинг: 0 / 0
23.05.2008, 15:26
    #35331666
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
охренеть. И всё это ручками самописка?
- есть куча прокладок-систем между объектами на клиенте и плоской СУБД. Вплоть до ООБД.
Чтобы самому неписать.
2. Геморрой всё это. Грамотный программист БД + грамотный архитектор клиентской части сделают по варианту1 лучше, проще и дешевле.
Рантайм запросы - это пока фантастика.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
23.05.2008, 15:28
    #35331674
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Petro123
Рантайм запросы - это пока фантастика.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
не совсем так, например:
"Открыть шторы!"
"Включить свет"
можно научить с грехом пополам.
...
Рейтинг: 0 / 0
23.05.2008, 15:31
    #35331683
_xrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
автор
есть куча прокладок-систем

Какие прокладки-системы вы знаете, киньте ссылки.
А система 2ая нормально работает, правда время вхождения программиста большое.
...
Рейтинг: 0 / 0
23.05.2008, 15:34
    #35331692
_xrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
автор
Рантайм запросы - это пока фантастика.

Почему это фантастика.. Еще древний 1С так делал.
...
Рейтинг: 0 / 0
23.05.2008, 15:39
    #35331718
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
_xrusКакие прокладки-системы вы знаете, киньте ссылки.
Такое слово как ORM , неужели не слышали? Например для Java: TopLink, Hibernate, Kodo и т. д. Аналогичная хрень есть и для других ЯП.
...
Рейтинг: 0 / 0
23.05.2008, 15:44
    #35331737
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Насчет генерации SQL "на лету"...
Например, в Oracle есть такое понятие, как Dynamic SQL, который предназначен именно для этого (хотя это не классы, это программист прописывает, просто там есть некоторые переменные части).
Однако, этим пользоваться надо умеренно, ибо снижает производительность работы. В Oracle разобранный запрос с планом выполнения хранится в кэше с той идеей, что одинаковые запросы повторяются в рамках приложения. Если они действительно повторяются, то за счет кэша выполняемая сервером работа уменьшается.
Если мы применяем динамический SQL, мы фактически заставляем сервер каждый раз выполнять разбор SQL и строить ему план выполнения, т.е. не используем эту возможность (кэширование запросов).
Полагаю, что похожие средства есть и в других БД
...
Рейтинг: 0 / 0
23.05.2008, 15:55
    #35331782
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
авторА система 2ая нормально работает, правда время вхождения программиста большое.
- и чем бОльший год на дворе, тем бОльше вхождение (и зарплата).

tru55
это просто склейка текста запроса. Я имел ввиду уровень выше.
Типа поигрался классами на клиенте, кости бросил.... и вот вам - эффективный запрос с другими JOINами

______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
23.05.2008, 15:58
    #35331796
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Kachalov _xrusКакие прокладки-системы вы знаете, киньте ссылки.
Такое слово как ORM , неужели не слышали? Например для Java: TopLink, Hibernate, Kodo и т. д. Аналогичная хрень есть и для других ЯП.
+1
в Delphi
Код: plaintext
1.
Class.SaveToStream;
BD_BLOB.SaveToBlob;
:)
...
Рейтинг: 0 / 0
23.05.2008, 16:00
    #35331809
_xrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Petro123
.SaveToBlob;


Какой еще сайв_то_блоб. Вы не понимаете наверно о чем мы говорим.
Kachalov - спс интересно.
...
Рейтинг: 0 / 0
23.05.2008, 16:03
    #35331823
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Petro123
tru55
это просто склейка текста запроса. Я имел ввиду уровень выше.
Типа поигрался классами на клиенте, кости бросил.... и вот вам - эффективный запрос с другими JOINами


Дело не в склейке текста. Дело в том, будет ли запрос повторяться, или каждый раз после "игры" он будет другой (ведь достаточно отличия в 1 символе, чтобы получился повторный разбор)
...
Рейтинг: 0 / 0
23.05.2008, 16:10
    #35331853
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
_xrus
Какой еще сайв_то_блоб. Вы не понимаете наверно о чем мы говорим.

это ты пока не понимаешь. Это простейший ORM.
Не надо всё усложнять так, чтобы "порог вхождения был большой" :).
Удачи.
...
Рейтинг: 0 / 0
23.05.2008, 16:15
    #35331872
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
tru55
Дело в том, будет ли запрос повторяться, или каждый раз после "игры" он будет другой (ведь достаточно отличия в 1 символе, чтобы получился повторный разбор)
повторный разбор - малая из бед, которая решается техническими срествами (не сегодня завтра).
После отличия в один символ, он вообще может выдавать неправильный результат.
/topic/12992#57518
...
Рейтинг: 0 / 0
23.05.2008, 16:36
    #35331948
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Petro123 tru55
Дело в том, будет ли запрос повторяться, или каждый раз после "игры" он будет другой (ведь достаточно отличия в 1 символе, чтобы получился повторный разбор)
повторный разбор - малая из бед, которая решается техническими срествами (не сегодня завтра).
После отличия в один символ, он вообще может выдавать неправильный результат.
/topic/12992#57518

Ошибки - это отдельная статья.
Я то хотел подчеркнуть другую сторону (сам с этим сталкивался). Люди ради удобства программирования или настройки приложения идут на подобную динамическую генерацию, а то, что при интенсивной нагрузке на базу это может серьезно просадить производительность - об этом не думается...
...
Рейтинг: 0 / 0
24.05.2008, 11:17
    #35332801
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
ru55 +1
да, мы говорим о двух сторонах генерации SQL на клиенте.
Бывает, толковый программист со знанием ООП, но с более слабым знанием СУБД начинает "тянуть одеяло" на клиента и городить удивительные огороды.
Кстати в ORM есть куча недостатков и ограниченности по применению.

"Сложнее всего достигнуть простоты..."
...
Рейтинг: 0 / 0
24.05.2008, 16:21
    #35333015
rilio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Сугубо ИМХО...
Очень часто при оценке стоимости и рисков проекта от ORM отказываются.
Хотя бы потому, что SQL-программиста найти гораздо проще, чем разбирающегося в этой ORM (хорошо еще, если не самодельной)
...
Рейтинг: 0 / 0
24.05.2008, 17:52
    #35333088
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
rilioСугубо ИМХО...
Очень часто при оценке стоимости и рисков проекта от ORM отказываются.
Хотя бы потому, что SQL-программиста найти гораздо проще, чем разбирающегося в этой ORM (хорошо еще, если не самодельной)
- я лично не фанат использования ORM, но хочу отметить что в Java есть даже спецификация JPA, расчитанная на использование сторнних ORM, т. е. на сегодняшний день это возможность использования ORM в Java стандартизована и если программист не разбирается в стандартах - это грустно. Не хочется начинать холивары, но технология EJB успешно существует уже более 11-ти лет и использование ORM - это одна из существенных составляющих данной технологии.
...
Рейтинг: 0 / 0
25.05.2008, 00:31
    #35333321
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Kachalov,
в Java стандартизована и если программист не разбирается в стандартах - это грустно. Не хочется начинать холивары
ну, Java - отдельный разговор. Там много чего знать нужно :).

Код: plaintext
1.
2.
3.
Обращение в коде:
Doc doc;
Doc.to = to1; Doc.from=from;
Doc.save()
на 1С похоже.
:)


авторНу конструктор гуи там тоже
Интересно, там таблицы есть? В каком они виде?
...
Рейтинг: 0 / 0
25.05.2008, 12:41
    #35333546
rilio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Kachalov- я лично не фанат использования ORM, но хочу отметить что в Java есть даже спецификация JPA, расчитанная на использование сторнних ORM, т. е. на сегодняшний день это возможность использования ORM в Java стандартизована и если программист не разбирается в стандартах - это грустно. Не хочется начинать холивары, но технология EJB успешно существует уже более 11-ти лет и использование ORM - это одна из существенных составляющих данной технологии.
Больше года как отошел от Java, но, если не ошибаюсь:
- JPA возникла только в EJB3, это, кажется, 2 или 3 года назад?
- различия между теми же EJB2 и EJB3 были очень существенными. Программистам приходилось переучиваться.
- ORM - это далеко не только EJB. Hibernate, JDO и куча еще всякого. Видел работающие системы на EJB, где как раз ORM была не стандартной, а самодельной.
- Есть стандарты, а есть их реализации. Допустим, программист всю дорогу работал с JDO, а у нас - Hibernate. Сколько ему понадобится времени на адаптацию? IMHO не один день...
...
Рейтинг: 0 / 0
25.05.2008, 13:18
    #35333580
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
rilio- JPA возникла только в EJB3, это, кажется, 2 или 3 года назад?
- да, но необходимость использования ORM была заложена в спецификацию EJB в виде наличия в спецификации CMP Entity компонентов и языка EJB QL, т. е. 11 лет назад!

rilio- различия между теми же EJB2 и EJB3 были очень существенными. Программистам приходилось переучиваться.
- т. к. EJB3 заметно проще чем EJB2, то "переучиваться" легко и приятно, слово "приходилось" вряд ли тут уместно :)


rilio- ORM - это далеко не только EJB. Hibernate, JDO и куча еще всякого. Видел работающие системы на EJB, где как раз ORM была не стандартной, а самодельной.
- а кто говорил что ORM == EJB ? Дословно: "использование ORM - это одна из существенных составляющих данной технологии", да и вообще, я привел Java/EJB/JPA как пример знакомой мне технологии использующей ORM, уверен что в других языках есть нечто подобное, например PHP/Doctrine и т. п.

rilio
- Есть стандарты, а есть их реализации. Допустим, программист всю дорогу работал с JDO, а у нас - Hibernate. Сколько ему понадобится времени на адаптацию? IMHO не один день...
- есть стандарты, а есть их кривые реализации :) Стандарт JPA тем и хорош что не надо вникать в особенности TopLink или Hibernate, если они реализуют стандарт JPA, то достаточно знать только его. Переписывать грамотный EJB3 код (без native SQL и т. п.) из-за смены ORM обычно не требуется :)
...
Рейтинг: 0 / 0
01.06.2008, 10:29
    #35347541
trdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Petro123
Код: plaintext
1.
Class.SaveToStream;
BD_BLOB.SaveToBlob;
:)
какой странный синтаксис.
...
Рейтинг: 0 / 0
01.06.2008, 10:39
    #35347545
trdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
Вообще имхается мне что варианты 1 или 2 нужно выбирать руководствуясь требованием проекта.
вариант 2 мне почемуто напоминает патерн интерпретатор, характеризуемый так:
"Проблема: Имеется часто встречающаяся, подверженная изменениям задача."
"Решение: Создать интерпретатор, который решает данную задачу. "
Помоему при значительной общности задач обработки объектов вариант 2 может показаться очень разумным. А кривоватось, она лишь следствие недоработанности идеи.
...
Рейтинг: 0 / 0
02.06.2008, 09:30
    #35348230
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация SQL - классами.
trdm Petro123
Код: plaintext
1.
Class.SaveToStream;
BD_BLOB.SaveToBlob;
:)
какой странный синтаксис.
- Класс! На тебе поток, сохранись в него!
- БД! На тебе поток, сохрани его!

При "рождении" класса из БД, порядок обратный.

ЗЫ. Суть в том, что средства сериализации объектов уже давно заложены в ЯП.
И с некоторыми ограничениями могут успешно использоваться для сохранения в БД объектной модели клиента.
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Генерация SQL - классами. / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]