Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.01.19;
Скачать: [xml.tar.bz2];

Вниз

DB/2. ацтой или рай?   Найти похожие ветки 

 
Petr   (2013-07-29 00:33) [0]

с т.з. разработчика.
лучше ли Oracle?


 
разработчик   (2013-07-29 06:41) [1]

с точки зрения разработчика должно быть по барабану какой сервер программировать.
а если задаешь такой вопрос - ты еще не разработчик


 
Ega23 ©   (2013-07-29 08:00) [2]

Они все одинаково никчёмны.
Только ini-файлы, только хардкор!


 
antonn ©   (2013-07-29 08:07) [3]

я выбрал бы sqlite для встроенной


 
Inovet ©   (2013-07-29 08:13) [4]

> [2] Ega23 ©   (29.07.13 08:00)
> Только ini-файлы, только хардкор!

И Линукс.


 
Кщд   (2013-07-29 15:34) [5]

>разработчик   (29.07.13 06:41) [1]
>с точки зрения разработчика должно быть по барабану какой сервер программировать.
с точки зрения разработчика, сидящего по другую сторону hibernate, - да


 
картман ©   (2013-07-29 16:04) [6]


> Кщд   (29.07.13 15:34) [5]


> по другую сторону hibernate

в букварях - возводят до небес(во введениях - дальше не досуг), программисты - ругают на чем свет стоит. Не будет ли затруднительно рассказать что к чему? Желательно без выражений типа "если правильно, да с умом...", но если без таковых никак - почему не получается "правильно, да с умом"?


 
разработчик   (2013-07-29 19:19) [7]

с точки зрения разработчика, сидящего по другую сторону hibernate, - да

мне было по барабану на сервер, когда вашего этого хибернейта еще в проекте не было


 
Фокс Йожин   (2013-07-29 20:57) [8]


> DB/2. ацтой или рай?

под Linux/Unix/Windows вполне себе рай. Под z/OS - адъ и израиль, если  до этого мейнфреймы в глаза не видел.


 
Кщд   (2013-07-30 11:25) [9]

>разработчик   (29.07.13 19:19) [7]
>мне было по барабану на сервер, когда вашего этого хибернейта еще в проекте не было
одинаково хорошо пишете под версионники и блокировочники?
виртуозно владеете расширениями SQL любой СУБД?
что ж, остаётся лишь позавидовать Вам - несуществующий разработчик

>картман ©   (29.07.13 16:04) [6]
ORM - он и есть ORM
о плюсах и минусах - статей тьма
напр., http://habrahabr.ru/post/123293/
а "правильно, да с умом" - получается
иногда)


 
Sergey Masloff   (2013-07-30 11:36) [10]

Кщд   (30.07.13 11:25) [9]
>одинаково хорошо пишете под версионники и блокировочники?
>виртуозно владеете расширениями SQL любой СУБД?
>что ж, остаётся лишь позавидовать Вам - несуществующий разработчик
Да ладно несуществующий. На любом SQL можно писать как будто это paradox/dbf
Только всегда ли это хорошо?


 
Пит   (2013-07-30 11:57) [11]


> мне было по барабану на сервер, когда вашего этого хибернейта
> еще в проекте не было

Ты сейчас расписался, что ничего сложного в хранилищах данных не делал.

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

Гораздо проще отталкиваться от БД, чтобы к ней можно было цеплять клиенты на разных языках - хоть дельфи, хоть джаву, хоть веб.

А еще лучше - отталкиваться от сервера приложения, который по HTTP пашет.


 
Кщд   (2013-07-30 12:24) [12]

>Sergey Masloff   (30.07.13 11:36) [10]
>Да ладно несуществующий. На любом SQL можно писать как будто это paradox/dbf
вот так, например, получать новый id?
select max(id) + 1 from some_table

а то, что поддерживаются разные уровни изоляции(при этом весьма условно следующие стандарту ANSI), используются различные стратегии блокирования(товарищи с MS SQL не понаслышке знакомы с таким понятием, как эскалация блокировок), различные подходы по работе с транзакциями и т.д. и т.п. - это всё, конечно, ерунда и глупости

и, собственно, расширения SQL(не процедурные, а именно SQL) - различны
не будем показывать пальцем, но, вот, не было кое-где констуркции "left join", а когда появилась - работала престранно

но, Вы правы, под любую из современных СУБД можно писать, как под десктопную
и под себя ходить можно
ведь можно же?


 
разработчик   (2013-07-30 13:11) [13]

вот так, например, получать новый id?
select max(id) + 1 from some_table


Вы еще скажите, что в случае если двадцать лет писал под FB и никуда кругозор не расширял, то в случае возникновения необходимости ora/mssql/etc надо сразу поднять лапки и сказать: извините, мне надо еще двадцать лет. приходите позже и тогда я буду готов взяться.


 
Кщд   (2013-07-30 13:17) [14]

>разработчик   (30.07.13 13:11) [13]
>Вы еще скажите
откуда мне знать, что Вам говорить и когда поднимать лапки?)


 
Sergey Masloff   (2013-07-30 13:18) [15]

Кщд   (30.07.13 12:24) [12]
>>Да ладно несуществующий. На любом SQL можно писать как будто это paradox/dbf
>вот так, например, получать новый id?
Ты уловил мысль ;-)

Я регулярно пересекаюсь с людьми которые считают что именно так писать и нужно. Причем умудряются делать работоспособные системы, что лично меня удивляет.


 
разработчик   (2013-07-30 13:20) [16]

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

Ты просто не видел моей реализации.
В ней поддерживается : ora/mssql/mysql/fb/msaccess
Причем сразу скажу, что это не то что ты подумал.

Никаких самоограничений средствами которые "гарантированно работают везде" при использовании универсальных механизмов типа bde/ado/odbc

То есть в наличии полный доступ ко всем специфичным фичам любой платформы.


 
разработчик   (2013-07-30 13:21) [17]

откуда мне знать, что Вам говорить и когда поднимать лапки?)

Зато мне сразу видно невооруженным глазом что имелось ввиду.


 
разработчик   (2013-07-30 13:24) [18]

и т.д. и т.п. - это всё, конечно, ерунда и глупости


Ну так. И какой вывод-то?

Никто не умеет писать и под оракл и под MSSQL одновременно?
Так что ли?

Или это просто завуалированное высказывание типа "мало кто знает про это лучше меня"?


 
Кщд   (2013-07-30 13:24) [19]

>Sergey Masloff   (30.07.13 13:18) [15]
>Причем умудряются делать работоспособные системы, что лично меня удивляет.
работоспособные однопользовательские системы
не спорю


 
разработчик   (2013-07-30 13:25) [20]

работоспособные однопользовательские системы
не спорю


А у меня мультиплеер. Обидно да?

Предваряя следующую реплику, говорю:

работает не только у младшей сестры на ноуте.


 
Inovet ©   (2013-07-30 13:31) [21]

> [20] разработчик   (30.07.13 13:25)
> А у меня мультиплеер

Проигрыватель мультиков7

> [20] разработчик   (30.07.13 13:25)
> работает не только у младшей сестры на ноуте.

Ну мультики и взрослые бывают.


 
Кщд   (2013-07-30 13:31) [22]

>разработчик   (30.07.13 13:24) [18]
>Ну так. И какой вывод-то?
вывод очевиден: если Вам "было по барабану на сервер", то либо Вы не работали с БД(как справедливо было отмечено - с DWH, OLAP), либо всё плохо. очень-очень плохо.

>Или это просто завуалированное высказывание типа "мало кто знает про это лучше меня"?
это уже вторая попытка вложить в мои уста Ваши мысли
приёмчик в споре старый настолько же, насколько заметный и нелепый)


 
разработчик   (2013-07-30 13:32) [23]

это называется включить дурачка, когда сказать больше нечего.


 
разработчик   (2013-07-30 13:35) [24]

если Вам "было по барабану на сервер

если мне было по барабану на сервер, то это означает что мне без разницы под какой сервер создавать работающее приложение.
И до сих пор по барабану, так как все созданное работает (десятки тысяч инсталляций за многие годы) и поддерживается всего одним человеком.


 
разработчик   (2013-07-30 13:36) [25]

приёмчик в споре старый настолько же, насколько заметный и нелепый)

В общем я угадал.
да еще и с учетом первого абзаца из [22] на все 146 процентов.


 
разработчик   (2013-07-30 13:39) [26]

это уже вторая попытка вложить в мои уста Ваши мысли

Так вы прямым текстом выразите свою мысль, которая что-то все витает да витает в воздухе.
И не оставляйте мне шансов на неправильную интерпретацию.

Скажите прямым текстом:
Тот, кто хорошо пишет для ora, не может так же хорошо писать для mssql.

И все.
А то все многозначительно жметесь только.


 
Sergey Masloff   (2013-07-30 14:05) [27]

разработчик   (30.07.13 13:39) [26]
>Скажите прямым текстом:
>Тот, кто хорошо пишет для ora, не может так же хорошо писать для mssql.
Можно я попробую сказать. Я согласен с вышеприведенной формулировкой. "Приемлемо" может. "Хорошо" - врядли. Для двух систем - допущу даже "хорошо" для более - я такого не встречал.

 Мне кажется, что я представляю о чем речь. Я видел продукты у которых есть система трансляции некоего общего кода в платформ-специфичный. Я видел только подтверждения что получается "приемлемо" но "хорошим" я те примеры что видел считать не могу.
 Код на выходе этих трансляторов ориентированный на оракл я в частных случаях оптимизировал до 2 порядков по производительности. С другой стороны, обобщенный транслятор в код оракла я врядли смог бы написать лучше чем автор(ы). Собственно даже также как они - сомневаюсь.
 Подитожим - у разных решений есть право на жизнь. Я продолжаю считать что использование большинства возможностей целевой платформы полезно а в некоторых случаях и единственная приемлемая стратегия.
 Допускаю, что в иных условиях работы у меня могло бы сформироваться другое мнение


 
разработчик   (2013-07-30 14:22) [28]

нет никаких трансляций. понимаешь?
просто нет.
нет трансляторов и нет трансляций.
написано руками.
пять проектов.
99.999% кода - общий.

Разные:
1. дпр только юзезом модуля данных отличаються.
2. разные потомки абстрактного модуля данных. отличаются перекрытыми методами в количестве меньшем двадцати.

Все остальное общее.
Весь бизнес код ничего не знает про ни про сервер ни про движок. Он оперирует виртуальными методами "дай мне датасет для грида", "выполни вот такой dml", etc.

Так как методов всего ничего (<20), то например создание версии под мускул заняло полтора часа неспешной работы, в ходе которой был адаптирован ддл скрипт и переопределены методы наследника датамодуля.

а вся бизнес логика нетронута и отлажена давно.

При этом проекты не ограничены узкими рамками одбс и ему подобных технологий, а юзают нативные фичи настолько полно, насколько это надо или насколько этого хочется.

ora->odac
mssql,access->ado
mysql->mysqldac
fb->fib

И если вдруг завтра мне потребуется версия для db2, она у меня будет так же быстро (через полтора часа) и не в первой бете, а сразу в релизе.

Потому что перекрыть 15-20 абстрактных, служебных методов без необходимости влезать в бизнес слой - дело пары часов.

Впрочем у нас все равно остается тема для холивара.
Что такое "писать хорошо", и что такое "писать приемлемо".
Где пролегает грань, и что делать и что будет если ты (о ужас!) пишешь всего лишь "приемлемо" (и пофик что ты один закрыл огромный кусок бизнеса для своей конторы и она лет 20 не знает что такое проблемы в этой области)


 
sniknik ©   (2013-07-30 14:26) [29]

> Причем умудряются делать работоспособные системы, что лично меня удивляет.
не всегда нужен мерседес чтобы съездить за хлебом... чаще достаточно велика, или просто ног.
но мечтать о мерседесе "для всего" не вредно. при разработке такие "мечты" обычно превентивные, т.е. сначала хотят "чтобы все, и максимально надежно, т.к. будет миллион юзеров",  а потом с программой работает "полторы секретарши в две смены" и даже выбранного "дубового способа, нифига не безопасного(теоретически, вот посчитайте вероятность...) хотя бы для 2х одновременно" вполне хватает (а иногда и 10ти и более везет, а раз в пару лет случающиеся "косячки" считают за форс мажор, но в общем-то система работает...).


 
Кщд   (2013-07-30 14:41) [30]

>разработчик   (30.07.13 13:35) [24]
>И до сих пор по барабану, так как все созданное работает
так проясните некоторые моменты Вашей сверхсистемы.
Например:
1. Какого типа Ваша система(OLTP, OLAP, DWH);
2. Как происходит кроссплатформенная генерация ID(sequence, autoincrement, генераторы и т.п.);
3. Какие блокировки(оптимистические, пессимистические, гибрид? и как конкретно) используются. Другими словами как избегаете проблем с, например, фантомными чтениями, конкурентным доступом;
4. Имеются ли ограничения ссылочной целостности на уровне БД;
5. Существуют ли в Вашей системе долгоиграющие отчеты и каким образом решаются проблемы с блокировкой/устареванием данных, по которым они работают.


 
sniknik ©   (2013-07-30 14:42) [31]

> При этом проекты не ограничены узкими рамками одбс и ему подобных технологий, а юзают нативные фичи настолько полно, насколько это надо или насколько этого хочется.
mssql с "найтивной виндовой аутентификацией"/разделением прав "тянущихся" из винды, "открытые" рекордсеты для импорта из разных форматов, перекрестные между базами запросы, внешние "сношения" с миром типа выполнения shell комманд, почты в процедурах, полнотекстовый поиск и т.д.
а как это реализовано в access например (долго с ним работаю и часто не хватает возможностей mssql, часть перечисленного есть, но не все... научи)? а в базах mysql, fb ???

p.s. считаешь что ограничений нет, а самом деле работаешь на начальном уровне... не спорю, может там не нужно, но это не значит что "проекты не ограничены", ограничены, тем самым, задача/программа не требует "технологий".


 
разработчик   (2013-07-30 14:43) [32]

(а иногда и 10ти и более везет, а раз в пару лет случающиеся "косячки" считают за форс мажор, но в общем-то система работает...).

А если форсмажор не раз в пару лет, а раз в неделю, но не по поводу десяти вдруг влезших при непродуманном многопользовательском режиме, то это конечно же сразу меняет дело. Правда?
первое - ацтой и дилетантсво возомнивших, а второе - это по честному. Мы умны, но случается же.

Да?

Или у вас лично форсмажоры - раз в пятилетку?


 
разработчик   (2013-07-30 14:45) [33]

mssql с "найтивной виндовой аутентификацией"/разделением прав "тянущихся" из винды,

нет.
Хотя ничто не мешает.
Заменяй строку подключения и уговаривай админов нарезать права.
И будет под виндовой.
не будет?


 
разработчик   (2013-07-30 14:46) [34]

так проясните некоторые моменты Вашей сверхсистемы.
Например:


Сначала [26], а потом продолжим.


 
Кщд   (2013-07-30 14:50) [35]

>разработчик   (30.07.13 14:46) [34]
в первом посте в этой ветке ясно и чётко сказал: разработчик, пишущий одинаково хорошо под db2, firebird, oracle, ms sql, не существует
недостаточно прямолинейно?

если быть объективным, то лично мне такие, увы, не встречались
Вы - первый
таки теперь можно узнать секрет Вашего феномена, ответив на "Кщд   (30.07.13 14:41) [30]"?)


 
разработчик   (2013-07-30 14:52) [36]

p.s. считаешь что ограничений нет, а самом деле работаешь на начальном уровне..

Нет ограничений, накладываемых универсальными механизмами доступа.
Можно использовать сколь угодно специализированные библиотеки, сколь угодно узко заточенные под сколь угодно специфические фишки выбранного сервера.

Про этого рода ограничения и шла речь.
И при этом использование их не влечет за собой обычного в таких случаях лавинообразного роста подпорок в проекте.


 
разработчик   (2013-07-30 14:58) [37]

1 олтп
2 так и происходит. через сиквансы генераторы и автоинкремент.
4. естественно имеются (не понял почему вообще возник вопрос)
5. имеются. блокировок нет, так отчеты генерируются не в клиентской программе, и вообще передаются на клиента не в виде датасетов.


 
Кщд   (2013-07-30 15:14) [38]

>разработчик   (30.07.13 14:58) [37]
1) ок, но что с (3)?
2) кто и как генерирует код создания и генерации?
4) только PK, FK, UQ или что-то ещё? более платформо-зависимое?
5) отчеты строятся на данных, хранящихся в базе. на записях(таблицах) могут быть блокировки. такие проблемы в MS SQL, например, в 2000 обходятся dirty read. проблемы в Oracle, например, могут привести к snapshot too old. Как поступает Ваша система и известны ли Вам эти проблемы?

Далее:
6) В случае с Oracle, каким образом ведётся работа с курсорами: кто следит за их количеством, кто и как их закрывает?


 
Кщд   (2013-07-30 15:16) [39]

7) с какими уровнями изоляции работает Ваша система, кроме read committed или аналогов?


 
sniknik ©   (2013-07-30 15:16) [40]

> Или у вас лично форсмажоры - раз в пятилетку?
реже.
но вообще это было пояснение на пост Sergey Masloff   (30.07.13 13:18) [15] типа "ничего удивительного даже при явной безграмотности". не про меня лично. одни безграмотно хотят мерседес, хотя могут обойтись велосипедом, другие делают мопед думая что делают мерседес... чего удивляться если даже так работает?

> Хотя ничто не мешает.
мешает, к примеру в access нет процедур, в нормальном понятии. нет 6-го уровня транзакций, логика автоинкремента вынесена в объект, мыла/shell нет, ну и т.д. и собственно нет возможности "нарезать права" на то чего нет...


 
Кщд   (2013-07-30 15:19) [41]

8) применяется ли, например, партиционирование таблиц? Используются ли temporary, IOT таблицы?


 
Пит   (2013-07-30 15:21) [42]

а мне еще интересен вопрос как перенести бизнес-логику, реализованную на сервере БД на разные базы данных?

Уважаемый разработчик научился за 5 секунд транслировать package оракла в UDF firebird? А потом все это на T-SQL в MS SQL базе?

По-моему, это просто флуд. Крупную систему со сложной логикой не напишешь под один язык. Или в коде будет постоянно встречаться:

if DBProv = dbpOracle then ...
else if DBProv = dbpMSSQL then...

Это - не универсальность. Это просто разработка программы на более, чем одну БД. Ресурсы растут, а как показывает практика потенциальным пользователям не так критична поддержка мульти БД.

Сейчас почти всё корпоративное ПО пишут не от позиции клиента, а от позиции БД, источника данных, что логично.

Не супер-прога на Delphi, которая умеет коннектиться к Oracle, MS SQL, FB и пр.

А конкретная БД (например, Oracle) или сервер приложений (например, TomCat), к которому умеют коннктится толстый клиент в виде Delphi, C# и чего угодно, а также тонкий клиент в виде браузера, интеграция с аналитическими системами, каким-нибудь OLAP и так далее. Это просто очевиднейшая логика, источником данных является база, а все окружение вокруг неё всего лишь способ удобно обеспечить пользователю работу с этой БД.

Хотя и не всегда получается. Встречал настолько неграмотно написанное ПО, что при внедрении на гос. секторе заказчику в результате к основной программе поставили PL/SQL Developer, в котором операторы и проводили многие операции!! Он оказался удобнее для работы с БД, чем разрабатываемое ПО)))  Можно сказать вернули изначальный смысл языка SQL )


 
разработчик   (2013-07-30 15:25) [43]

и собственно нет возможности "нарезать права" на то чего нет...


Я-то здесь при чем тогда?

Конкретно в моем случае доменная модель прав не используется.
Меня спрашивают: как же нет ограничений, если вот можно для mssql использовать доменную.

Я говорю: нет проблем. меняем строку подключения, запасаемся мотивацией, и уламываем тамошних админов заморочиться изучением бизнес-процессов и последующей нарезкой прав.
Будет работать?
Теоретически будет, практически нет, так как никого вы не уломаете на нарезку прав и связанную с этим необходимость изучать бизнес-область.

на что мне возражают: а у акцесса вообще нету доменной модели.

Зашибись.

А а то, что версия на акцессе дается мной только тем, у кого все крутится на единственном ноуте и многопользовательский режим там нафик не нужен и не нужен ни шестой, ни шестьсот шестьдесят шестой уровень транзакций - это не важно.

Главное что я не могу пускать в прогу на акцессе по доменной учетке.


 
разработчик   (2013-07-30 15:33) [44]

Уважаемый разработчик научился за 5 секунд транслировать package оракла в UDF firebird? А потом все это на T-SQL в MS SQL базе?

А зачем мне это?
Хочешь я расскажу как конкретно рождалась версия на оракле?
Слушай:

1. Уже была версия на FB.
2. Берем редактор, пишем ддл для таблиц.
3. Создаем нужные сиквансы.
4. Тот код, что был внутри фб переносим на плскл.
5. Переопределяем 15-20 виртуальных служебных методов датамодуля.

Все.
Для бизнес логики ничего ровным счетом не поменялось.

Если в каком-то месте нужен был инсерт, вызывается абстрактный метод
InsertOneRecord(GetSQLinsertSQL,параметры,вставленный_ключ)

Если нужно было вызвать что-то хранимое из сервера
ExecProc(ProcName,Входные_параметры, Выходные_Параметры)

Ну и где здесь хоть какой-то сверх-матан и квантовая теория струн?
Все банально просто до примитива.


 
Inovet ©   (2013-07-30 15:33) [45]

> [43] разработчик   (30.07.13 15:25)
> Главное что я не могу пускать в прогу на акцессе по доменной учетке.

Говорят совсем не об этом.


 
разработчик   (2013-07-30 15:34) [46]

Или в коде будет постоянно встречаться:

if DBProv = dbpOracle then ...
else if DBProv = dbpMSSQL then...


Это пипец.

Просто поверь.
Нету там этой и подобной ереси.
Вообще нету.


 
Пит   (2013-07-30 15:34) [47]


> 8) применяется ли, например, партиционирование таблиц? Используются
> ли temporary, IOT таблицы?

что ты пристал к человеку? ))

Ты же прекрасно понимаешь, что программа, которая рассматривается - достаточно примитивно работает с БД. Скорее всего, в ней даже нету внутренней логики, чистое SQL-хранилище. Это же очевидно.
Есть разница работы между ora 9/10/11, а что тут говорить о разных вендарах?

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

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

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


 
Inovet ©   (2013-07-30 15:35) [48]

> [44] разработчик   (30.07.13 15:33)
> Все банально просто до примитива.

Вот об этом и говорят.


 
Кщд   (2013-07-30 15:37) [49]

>разработчик   (30.07.13 15:33) [44]
можно пример идентичного кода на PSQL и PL/SQL?
что-нибудь отличное от select * from rdb$database и select * from dual?


 
Пит   (2013-07-30 15:40) [50]


> 4. Тот код, что был внутри фб переносим на плскл.

как оказывается просто! Ты ведь знаешь, что в крупных системах на pl/sql может быть реализовано тысячи человеко часов затра. Тебе понадобиться столько же для переноса.

Ты так и говори - хранилища примитивные. Почти чисто SQL-ориентированные. Есть максимум десяток процедур (а не десятки тысяч как в некоторых крупных системах), которые можно и ручками взять перенести.

Нет особых нагрузок, чтобы мутить партицирование / шардирование.

При всех этих условиях - да, бд похожи до уровня возможности писать универсальные запросы.


 
Кщд   (2013-07-30 15:40) [51]

>Пит   (30.07.13 15:34) [47]
>Ты же прекрасно понимаешь, что программа, которая рассматривается - достаточно примитивно работает с БД.
я УВЕРЕН, что это так и есть
т.е. БД - это просто хранилище и никакой вендоро-зависимой оптимизацией там и не пахнет, но мы обсуждаем возможность существования гуру, одинаково хорошо работающего со стэком БД от современных производителей.


 
Кщд   (2013-07-30 15:41) [52]

>Кщд   (30.07.13 15:40) [51]
поправка: со всем стэком)


 
Пит   (2013-07-30 15:45) [53]

хотя есть и стандартные задачки. Насколько помню в свое время я сразу уперся, например, в то - как обеспечить лимитирование  возвращаемых записей?

Почти у любого ПО для работы с данными будет возможзность поиска среди множества записей. И фильтры, которые пользователь настраивает. Что делать, когда данных возвращается очень много (ну хотя бы более десяти тысяч строк)?

Операции лимитирования в разных БД работают по разному (синтаксис).

Постепенный фетчинг также сильно завязан на особенности БД / провайдера и тупо не всегда возможен.

Оборачивать запрос сначала в: select count(*) from (<искомый запрос>)? ))) Тоже решение имеет недостатки, в конце концов не везде поддерживаются вложенные запросы.

А задачка то примитивна, встречается сразу же. Интересно - как решена? )


 
разработчик   (2013-07-30 15:45) [54]

т.е. БД - это просто хранилище и никакой вендоро-зависимой оптимизацией там и не пахнет,

Согласен, Очень тяжело поверить в то, чего самому не удавалось сделать, хоть и хотелось.

Хорошо.
Давайте какой-нибудь конкретный пример в котором я по вашему мнению точно облажаюсь.
А я расскажу как это у меня работает.


 
Кщд   (2013-07-30 15:50) [55]

>разработчик   (30.07.13 15:45) [54]
>Давайте какой-нибудь конкретный пример в котором я по вашему мнению точно облажаюсь.

1. Кщд   (30.07.13 15:19) [41]
2. что поводу уровней изоляции?
3. что по поводу "Пит   (30.07.13 15:45) [53]", т.е. операций с limit?
4. какой тип блокировок(оптимистический/пессимистический) применяется при изменении данных?
5. Кщд   (30.07.13 15:37) [49]


 
Пит   (2013-07-30 15:50) [56]

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

Как универсально обрабатываются ошибки? Для всех ORA-XXX ошибок сделаны свои дублирующие коды ошибок, и всё это еще совместимо со всеми остальными БД?

И блокировки как тактично умолчены. Оракл -почти версионник / гибрид, MS SQL - блокировочник. У каждого свой стек понятий об уровне изоляций. Как это "обойдено"? )


 
разработчик   (2013-07-30 15:55) [57]

ну так будет пример-то? конкретный.

а то что написанное мной не должно работать - это я уже понял.


 
разработчик   (2013-07-30 15:58) [58]

4. какой тип блокировок(оптимистический/пессимистический) применяется при изменении данных?

А вот не пофик ли?

function ДайМнеВотЭтуЗаписьНаредактирование(ID,ЗаблокируйЕслиМожно = Да)

И в наследниках модуля данных если надо и если можно, блокируем.
Если не надо или нельзя, - не блокируем.

Достаточно?

Как именно?
Свойствами и методами используемой библиотеки доступа.


 
Юрий Зотов ©   (2013-07-30 15:58) [59]

> Кщд   (30.07.13 14:50) [35]

> разработчик, пишущий одинаково хорошо под db2, firebird, oracle, ms sql,
> не существует

Существует. Это я. И не один, видимо.

"Одинаково хорошо" означает "с одинаковым качеством". А я под любую БД как раз и пишу с одинаковым качеством - одинаково плохо.
:o)


 
разработчик   (2013-07-30 16:03) [60]

Что делать, когда данных возвращается очень много (ну хотя бы более десяти тысяч строк)?


Грид. Фильтрация по колонке. Пользовательская.
щас скажут что это отстой и нельзя десять тысяч строк в грид.

Все верно, капитаны.
И у меня есть пользовательская фильтрация в гриде
и нет десяти тысяч строк в нем же.


 
Кщд   (2013-07-30 16:04) [61]

>разработчик   (30.07.13 15:58) [58]
>А вот не пофик ли?
нет
каким образом блокируете на уровне БД?
каким образом обновляете на уровне БД?
пример кода?

пример хранимого код, напр., для Oracle дождемся?

как организовн paging из поста "Пит   (30.07.13 15:45) [53]"?


 
Кщд   (2013-07-30 16:06) [62]

>Юрий Зотов ©   (30.07.13 15:58) [59]
>А я под любую БД как раз и пишу с одинаковым качеством - одинаково плохо.
Вы скромничаете.)
но - таки - "одинаково хорошо" не означает "одинаково плохо".))


 
Кщд   (2013-07-30 16:09) [63]

>разработчик   (30.07.13 16:03) [60]
>И у меня есть пользовательская фильтрация в гриде
гос. софт?


 
разработчик   (2013-07-30 16:10) [64]

во первых пейджинг актуален для веба и у меня его нет.
по предметной это ближе всего к бухучету, но не бухучет.
то есть выборки ограничены датой/периодом дат или счетами.
пейджниг там сто лет не нужен.
Но если надо, я его прикручу. Называйте целевой сервер.

каким образом блокируете на уровне БД?
Обычно, если не требуется чего-то особенного, то выставляя свойства одак-квери.

пример хранимого код, напр., для Oracle дождемся?

В смысле умею ли я на нем писать вообще, или что-то конкретное?
Подойдет пакет вытягивания курсов ЦБ по шттп?
Или что-то другое надо?


 
разработчик   (2013-07-30 16:11) [65]

гос. софт?

А есть разница?

ЗЫ нет, не гос. софт.


 
Кщд   (2013-07-30 16:11) [66]

>разработчик   (30.07.13 16:10) [64]
>Подойдет пакет вытягивания курсов ЦБ по шттп?
блок кода на PL/SQL, работающий с данными


 
разработчик   (2013-07-30 16:13) [67]

блок кода на PL/SQL, работающий с данными

давайте конкретно.
а то вопрос ваш, словно я студент на экзамене.


 
Jeer ©   (2013-07-30 16:17) [68]

Пит   (30.07.13 11:57) [11]5

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

Не трынди, я такую систему сделал, делали ее и другие и вовсе не потому, чтобы доказать тебе, что это возможно - были другие весомые аргументы, как технические, так и нет.


 
Jeer ©   (2013-07-30 16:19) [69]

Юрий Зотов ©   (30.07.13 15:58) [59]

> разработчик, пишущий одинаково хорошо под db2, firebird, oracle, ms sql,
> не существует

>Существует. Это я. И не один, видимо.

>"Одинаково хорошо" означает "с одинаковым качеством". А я под любую БД >как раз и пишу с одинаковым качеством - одинаково плохо.
>:o)

Есть те, кто пишет удовлетворительно и этого достаточно для решения предложенных, а не выдуманных задач.


 
разработчик   (2013-07-30 16:20) [70]

были другие весомые аргументы, как технические, так и нет.

Вот именно.
Они ж поди думают, что написано для попонтоваться на делфимастере. Или чисто для спортивного интереса в проекте с полторами юзерами.

А причина сугубо практическая.
И у меня их две.


 
Пит   (2013-07-30 16:23) [71]


> Грид. Фильтрация по колонке. Пользовательская.

это понятно. Но ведь пользователь может задать такие критерии фильтрации, что у тебя вернется ахринеть сколько данных. То есть, лимитирования у тебя просто нету, все что вернул запрос, сконструированный по фильтрам пользователя - ты пихаешь в грид.


> а то вопрос ваш, словно я студент на экзамене.

я думаю от тебя просят некий код, который будет работать на PL/SQL и без изменений работать в FB. Такого кода очевидно считай нету.

Я же тебе говорю про то, что в системах иногда бывает десятки тысяч строк серверного кода, сотни тысяч и миллионы и так далее. Поэтому перенести на другую БД ты просто не сможешь легко. А если ты смог запросто - это означает, что серверного кода у тебя не более десятка процедур / функций.


 
Пит   (2013-07-30 16:26) [72]


> Не трынди

а я уже натрындел. Но ты, видимо, не читал всю ветку.
Ты почитай, если есть что возразить - возрази.

Я в каком-то посте говорил о том, что мульти БД сделать можно, но задача специфична... Короче, я уже это описал.


 
разработчик   (2013-07-30 16:35) [73]

я думаю от тебя просят некий код, который будет работать на PL/SQL и без изменений работать в FB.

Я думаю, что несмотря на простоту концепции и написанное здесь много раз  прямым текстом "устройство" никто так и не понял,
что нету у меня :

1. Универсального стороннего движка, куда бы был засунут универсальный код, работающий на всех серверах.

2. Универсального своего движка куда бы был засунут универсально-волшебный код, работающий на всех серверах.

Нету его.
Немае.  
Нихт презент.
дузнот икзист.

Как еще-то понятнее сказать?

Вот на пальцах:

Абстрактный модуль данных. В юзесе из баз только Db.
В нем 15-20 служебных абстракных методов.

Для каждого сервера в отдельном проекте созданы наследники этого модуля.
Они уже знают и про сервер и про одаки фибсы etc

И все что доступно  кщд когда он программирует свой оракул, и все что доступно тебе когда ты программируешь свой MySQL доступно там и мне.

А бизнец-модули оперируют только абстракным модулем данных.

И все.

И нету никаких волшебных кусков универсального sql кода, который работает везде одинаково.

Ферштейн наконец-то?

если ты смог запросто - это означает, что серверного кода у тебя не более десятка процедур / функций.


Привет ку-ку.
А если двадцать? То что тогда?
А если потребуется двести двадцать, то что изменится?


 
Пит   (2013-07-30 16:38) [74]

Jeer, собственно и Кщд не спорит с тем, что в простых случаях при работе с БД можно сделать универсально - мне кажется это тут все понимают.

Но вот автор утверждает (как я понял), что никаких ограничений из-за мульти БД в его проекте нету и он готов использовать любые специфичные для конкретной БД вещи при разработке, в общем что БД - неважна и легко сделать универсально.

Весь вопрос именно в том, что мульти поддержку можно сделать только для простого механизма работы с БД. Если идут реальные сложные вещи, если есть большой серверный код, если есть большие объемы данных (шардирование), то тут вообще без вариантов.. ну блин даже обсуждать не хочется. Кто считает что можно абстрагировать от БД - просто не работал с большими крупными системами, вот и все. Вот даже не хочется очевидные вещи доказывать.


 
разработчик   (2013-07-30 16:40) [75]

что в простых случаях при работе с БД можно сделать универсально

Что и требовалось доказать.
Два часа спорит, и о сих пор не понял, что универсальность там не используется.


 
картман ©   (2013-07-30 16:45) [76]


> Пит   (30.07.13 16:38) [74]


> Если идут реальные сложные вещи

можно какой-нть примерчик? - очень интересно


 
Пит   (2013-07-30 16:50) [77]


> что в простых случаях при работе с БД можно сделать универсально
>
> Что и требовалось доказать.

Об этом написано в моем первом посте [11]

> Ты сейчас расписался, что ничего сложного в хранилищах данных не делал.

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


 
разработчик   (2013-07-30 17:00) [78]

Там куча усилий уходит, чтобы заставить приемлемо работать хотя бы в целевой БД

Личный опыт? Сочуствую.
Я тоже встречал кучу случаев, когда тратится неимоверно большие усилия, задача решается, но ценой неподдерживаемого далее кода.
нереально разобраться даже автору спустя всего неделю.

В таких случаях я обычно все стирал, немного думал и писал прозрачный, понятный легко сопровождаемый код.

Бывает.


 
разработчик   (2013-07-30 17:03) [79]

если ничего сложного не делать - то можно, да.

Ну так давай наконец свой сложный пример.
Я тебя научу как его встроить в мою модель.
Будет работать точно так же как и у тебя.


 
Кщд   (2013-07-30 17:04) [80]

>Jeer ©   (30.07.13 16:19) [69]
>Есть те, кто пишет удовлетворительно и этого достаточно для решения предложенных, а не выдуманных задач.
с этим никто не спорил


 
Кщд   (2013-07-30 17:07) [81]

>разработчик   (30.07.13 17:00) [78]
>В таких случаях я обычно все стирал, немного думал и писал прозрачный, понятный легко сопровождаемый код.
пожалуйста, покажите Ваш код на PL/SQL, работающий с данными, а именно: выборки, изменения данных в таблицах, да хоть курсоры с записями)


 
и как это будет выглядеть   (2013-07-30 17:11) [82]

У нас больше 6 тыс. хранимых процедур в базе.
Как с помощью сабжа реализовать одновременную работу на MSSQL и Oracle, например? Легким движением руки переписать over 6 тыс. хранимок?


 
Jeer ©   (2013-07-30 17:11) [83]

разработчик   (30.07.13 16:03) [60]

>Что делать, когда данных возвращается очень много (ну хотя бы более десяти тысяч строк)?

>Грид. Фильтрация по колонке. Пользовательская.
>щас скажут что это отстой и нельзя десять тысяч строк в грид.

У меня сплошная "шахматка" на клиенте - RB-OLAP, знаете ли..

Бывает клиент вытягивает на 3..5 лет, 365 дней, 24 района или 200-500 показателей.
Ну надо ему так. Легко вылетаем под 100 тыщ


 
Юрий Зотов ©   (2013-07-30 17:12) [84]

Насколько я понял, это что-то вроде плагинной архитектуры. Каждый плагин заточен под свою БД, а их интерфейс с ядром унифицирован.

Таким образом, ядро работает через плагины и ничего не знает ни о каких БД, а чтобы подключить новую БД достаточно написать новый плагин, отнаследовав его от абстрактного предка и заместив 20 абстрактных методов.

Если это так, то почему бы и нет? Вполне реализуемо.


 
разработчик   (2013-07-30 17:14) [85]

for i in (select...) loop
null;
end loop;

Ах да! Как же это я так облажался.
Это же на каждой итерации имеем переключение контекста.
Все верно.
Надо юзать форол.

смысл вопроса-то в чем?
А как же это будет работать в фб?

Никак не будет.
Потому что в фб другой код.


 
разработчик   (2013-07-30 17:16) [86]

Насколько я понял, это что-то вроде плагинной архитектуры. Каждый плагин заточен под свою БД, а их интерфейс с ядром унифицирован.

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


 
разработчик   (2013-07-30 17:18) [87]

Бывает клиент вытягивает на 3..5 лет, 365 дней, 24 района или 200-500 показателей.
Ну надо ему так. Легко вылетаем под 100 тыщ


И в чем проблема?
Вытягиваете сто тыщ? Вытягиваете.
Надо оно? Видимо надо.

А раз надо то вытяну и я.


 
Jeer ©   (2013-07-30 17:22) [88]

>И в чем проблема?

Я не к Вам -я к тем, кто боится вытянуть на клиента больше 100 записей:)


 
Inovet ©   (2013-07-30 17:24) [89]

> [88] Jeer ©   (30.07.13 17:22)
> кто боится вытянуть на клиента больше 100 записей:)

Про грид говорили


 
Jeer ©   (2013-07-30 17:30) [90]

>Про грид говорили

Да, увы - у меня в гриде (не в DB) может быть свыше 100 тыщ


 
Пит   (2013-07-30 17:30) [91]


> Легко вылетаем под 100 тыщ

на клиентском гриде больше 100 тысяч записей? Мощно.


 
Jeer ©   (2013-07-30 17:32) [92]

Да, шахматка и необходимость очень быстро крутить 2D в пространстве 5-12 измерений.
OLAP, однако.


 
Пит   (2013-07-30 17:32) [93]


> Да, увы - у меня в гриде (не в DB) может быть свыше 100
> тыщ

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


 
Кщд   (2013-07-30 17:32) [94]

>разработчик   (30.07.13 17:14) [85]
можно реальный пример кода?
и на заметку: использование forall - это массовое связывание и не исключает возможность переключения контекста


for i in (select...) loop
null;
end loop;

Вам известно, к чему может привести подобная конструкция на часто меняющихся записях в таблицах из условия from?
Вам известны методы обхода проблемы?


 
Пит   (2013-07-30 17:33) [95]


> Да, шахматка и необходимость очень быстро крутить 2D в пространстве
> 5-12 измерений.
> OLAP, однако.

причем тут грид?

Ты грид с датасетом не перепутал? Хотя и для датасета это дофига.


 
Jeer ©   (2013-07-30 17:34) [96]

Реально ( по статистике ) - 2-5 тысяч информативных единиц, но могут засандалить и 100 тыш.


 
Пит   (2013-07-30 17:36) [97]


> Вам известно, к чему может привести подобная конструкция
> на часто меняющихся записях в таблицах из условия from?

ты уже давал ответ в этой теме ))

Слушайте, а почему при for in будет переключение контекста на каждой итерации?


 
Пит   (2013-07-30 17:38) [98]


> Реально ( по статистике ) - 2-5 тысяч информативных единиц,
>  но могут засандалить и 100 тыш.

если говорить про грид - то уже больше сотни записей для человека некомфортно, это говорит о плохом интерфейсе. Ну точнее, об интерфейсе далеко не идеальном, хотя и часто распространенным.


 
Jeer ©   (2013-07-30 17:38) [99]

>Просмотреть 100 тыщ записей невозможно.

Юзер берет на себя то, что посчитал нужным и далее, методом "половинного деления" доводит информационное состояние данных до нужного минимума.

Это "особая" технология спаривания реляционного движка на серваке и OLAP-движка на клиенте.


 
Jeer ©   (2013-07-30 17:41) [100]

Юзер может отдать эти 100 тыщ или меньше для скармливания SPSS или в Статистику, но для этого ему надо глобально окинуть взглядом поле.
В общем, не судите того и то, в чем вам не айс.


 
Пит   (2013-07-30 17:41) [101]


> Юзер берет на себя то, что посчитал нужным и далее, методом
> "половинного деления"

а так если известен принцип "деления", почему сразу не предоставить искомые данные после n"ой итерации деления?


 
Jeer ©   (2013-07-30 17:44) [102]

Принцип не известен - это аналитическая работа аналитика же, в стиле Data Mining.


 
Jeer ©   (2013-07-30 17:45) [103]

Аналитику в помощь не только грид, но и графики, диаграммы и он творит по ходу дела свое видение результирующего отчета с данными: отбраковка, интер-, экстраполяция, прогноз..


 
разработчик   (2013-07-30 17:47) [104]

Ну и в заключении этой длинной ветки напишу зачем это было сделано.

Исходная задача - многопользовательское клиент-серверное ПО.
Выбрана связка ФБ + АДО + оле-дб провайдер для ИБ.
Почему адо? Потому что оно все равно нужно было для операций импорта.
Решил сэкономить на юзез.

Написал, отладил, сделал первые инсталляции.

Спустя неделю на блобах, на ровном месте получаю баг "ошибка во время многошаговой операции, обратитесь в лигу сексуальных реформ"

Обратился. Разрабы провайдера пояснили что в провайдере предназначенном для делфийской версии адо это не лечится.

Времени копать нет, принято решение перейти на прямой доступ через фиб.

Но так как опыта с ними не было, возникла фобия что возникнет подобная проблема с фиб.

Поэтому архитектура была переделана так, чтобы сменить движок доступа можно было бескровно и быстро.

Получилось.

Затем внезапно оказалось, что оказывается сделать форк под другие сервера - проще простого. Так появились версии под пять серверов, к которым у меня были адекватные библиотеки доступа. Сначала чисто из спортивного интереса.

Затем в процессе внедрений появились клиенты которые говорят:

слушай, вот ты нам предлагаешь фб, в то время как у нас штатно используется оракл. Есть штатные админы, которые его холят и лелеют.
Зачем нам плодить зоопарк софта?

И действительно зачем?
С тех пор, когда появляется новый клиент, ему задается пара вопросов:
- мультиплеер нужен?
- нет, у меня все на моем ноуте.
- окей, вот вам версия на файлах акцесса.

- Нужен мультиплеер?
- Нужен!
- Промышленные сервера какие-нибудь уже есть?
- Есть MSSQL.
- Нате вам многопользвательскую версию на MSSQL

А если сервер меняется, то с версии для MSSQL легко перепрыгиваем на любую другую через экспорт в mdb и импорт в новый целевой сервер.
А мдб этот одновременно является рабочим вариантом для однопользовательской версии адо/акцесс

И все счастливы.


 
Пит   (2013-07-30 17:48) [105]

все таки мне кажется ты перепутал грид с датасетом.

Я могу понять потребность грузить 100 тысяч записей, чтобы быстро с ними работать в оперативной памяти.

Но выводить в грид 100 тысяч строк? Да одна полоса прокрутки станет нереально узкой и непозиционируемой. Что там можно проанилизировать среди такого числа данных? слабо верится.


 
Jeer ©   (2013-07-30 17:49) [106]

Ну и молодец - хорошее решение.


 
Jeer ©   (2013-07-30 17:53) [107]

>все таки мне кажется ты перепутал грид с датасетом.

Все, что юзер вытянул реляционно, становится локальным датасетом и с ним работает OLAP-движок, визуализируя в грид в который можно выложить весь локальный датасет или нет - это аналитику решать.

Технология рассчитана на сотни и тысячи юзеров, которым нужны тысячи, десятки тысяч из имеющихся миллионов записей на сервере с латентностью не более 5-6 сек.


 
Пит   (2013-07-30 18:05) [108]

люди, расскажите почему в for in каждую итерацию переключается контекст?


 
разработчик   (2013-07-30 18:14) [109]

потому что сам цикл это sql
а внутри него обычно код на плскл

и на каждой итерации сервер надрывается, переключаясь с контекста sql на контекст pl/sql


 
Inovet ©   (2013-07-30 18:40) [110]

> [90] Jeer ©   (30.07.13 17:30)
> Да, увы - у меня в гриде (не в DB) может быть свыше 100 тыщ

Именно в гриде отображаются 100 тыщ? Не для обработки, не в кубе каком?


 
Inovet ©   (2013-07-30 18:40) [111]

> [92] Jeer ©   (30.07.13 17:32)
> Да, шахматка и необходимость очень быстро крутить 2D в пространстве
> 5-12 измерений.
> OLAP, однако.

Ну так не грид же.


 
Пит   (2013-07-30 19:02) [112]


> и на каждой итерации сервер надрывается, переключаясь с
> контекста sql на контекст pl/sql

обманываете вы меня: http://www.oracle.com/technetwork/issue-archive/2012/12-sep/o52plsql-1709862.html

))


 
разработчик   (2013-07-30 20:33) [113]

ну так вы сначала определитесь, про что вы спрашивали.
про for i in (select)

или про форолл и булк.


 
Jeer ©   (2013-07-30 20:46) [114]

Inovet ©   (30.07.13 18:40) [111]
>Ну так не грид же.

Локальный Dataset из которого выплескивается в грид по выбору аналитика возможно все.

Т.е. технология такова:
- аналитиком делается предварительный выбор данных из реляционной СУБД и они уходят в локальный DS.
Аналитик их крутит как хочет, выбирая 2D из многомерного пространства, создает вычислимые сущности, анализирует графики, диаграммы - если нужно, делает подзапрос из БД.

Что может быть в начале? Да, 100500 записей.
Что остается в конце - аналитику решать.


 
Кщд   (2013-07-30 21:56) [115]

>Пит   (30.07.13 17:36) [97]
>Слушайте, а почему при for in будет переключение контекста на каждой итерации?
"не читайте советских газет" (с)
forall не альтернатива for t in (select...) loop null; end loop;
это альтернатива for t in (select...) loop DML_operation; end loop;
т.е. forall осуществляет массовое связывание(bulk binding), и потому context switching происходит всего лишь два раза: PL/SQL -> SQL -> PL/SQL

>ты уже давал ответ в этой теме ))
конечно
но мне интересен код, с помощью которого "разработчик" избегает/обрабатывает таких(ие) ситуаций(ии).


 
Кщд   (2013-07-30 22:01) [116]

>разработчик   (30.07.13 18:14) [109]
"цикл в sql" - браво, отсыпите?

>Jeer ©   (30.07.13 20:46) [114]
>Локальный Dataset из которого выплескивается в грид по выбору аналитика возможно все. Т.е. технология такова...
Вы свой BI написали?


 
Jeer ©   (2013-07-30 22:02) [117]

Практически - да.


 
Jeer ©   (2013-07-30 22:07) [118]

P.S.
Причем отвязанный от технологий надстроек или встроек MS, Oracle над/в их "могучие" СУБД.


 
Кщд   (2013-07-30 22:10) [119]

>Jeer ©   (30.07.13 22:02) [117]
интерес праздный: чем не устроили решения от корифеев - Oracle, MS, да - чёрт возьми - Pentaho?


 
Кщд   (2013-07-30 22:14) [120]

>Jeer ©   (30.07.13 22:07) [118]
так, все BI от этих производителей умеют работать с данными из разнородных источников
либо поясните, пожалуйста, что имеете в виду?


 
Jeer ©   (2013-07-30 22:16) [121]

>чем не устроили решения от корифеев

Стоимость, привязанность к *  и..чем я хуже?

Было время, возможности, обычная зарплата - сделал, работает 7 лет.
Кто хотел из "наших" предложить лучшее - не смогли по критерию "цена-эффективность".


 
Jeer ©   (2013-07-30 22:19) [122]

>с данными из разнородных источников

Это как раз и не главное.

Важно - создание инфраструктуры регионального масштаба, когда все источники могут и обязаны работать эффективно в части поставки информации и получать ее обратно с минимальными затратами для региона.


 
Юрий Зотов ©   (2013-07-30 23:14) [123]

А по сабжу (DB2) - БД как БД, ИМХО. Я с ней работаю уже лет 6, на AS400, в многопоточном режиме (это по поводу всяких там синхронизаций и блокировок) . Проблем, в общем-то, не было, но есть свои причуды (как, наверное, и у любой другой БД). Например, в документации сказано: не используйте функцию current_timestamp для ключевых полей, она не гарантирует уникальность, используйте для этого функцию create_unique. ОК, так и делаю. На девелоперском сервере все работает отлично, а на боевом вдруг получаю что-то вроде: Unknown identifier create_unique. Другая версия, видишь ли. Хотя на боевом версия более свежая, и про deprecated ничего не сказано (или я не нашел).


 
Jeer ©   (2013-07-30 23:21) [124]

По сабжу:
DB2 использовал на серваке Motorola в 1994 г. - станциями были обычные HP-386 персоналки в терминальном режиме.
Ось была - AIX.

Организация: филиал Сбербанка.

Работало на ять.


 
Юрий Зотов ©   (2013-07-30 23:23) [125]

А что понравилось - это, например, поддержка точек сохранения (SavePoint). Не знаю, есть ли они у других БД, но здесь работают без проблем. В частности, через них можно реализовать как бы вложенные транзакции (и не только), что бывает весьма удобно.


 
Jeer ©   (2013-07-30 23:26) [126]

Save Points, в том или ином виде есть у многих СУБД.


 
Inovet ©   (2013-07-31 06:19) [127]

> [121] Jeer ©   (30.07.13 22:16)
> сделал, работает 7 лет

Ты, вроде бы, говорил о заваршении работы года 4 назад. Или то было другое?


 
sniknik ©   (2013-07-31 08:23) [128]

> Что и требовалось доказать.
> Два часа спорит, и о сих пор не понял, что универсальность там не используется.
нет. доказать требовалось одинаково хорошее использование каждой... чего не возможно без "персонализации" и использовании особенностей, а вовсе не то что тебе в данном частном случае такого не нужно.
так можно доказывать что можно поддержать вообще все существующие базы, только потому, что в этой программе базы не нужны.

> разработчик   (30.07.13 17:47) [104]
цель спора в "погнуть пальцы"? не особо впечатляет, вернее "совсем не ...", еще одно подтверждение того о чем говорили, но ты предпочел не понять. работа с СУБД у тебя на примитивном уровне. хорошим уровнем и не пахнет. а говорили тебе () именно про него. про "поверхностное использование" никто и не спорил, сразу говорили что возможно.


 
разработчик   (2013-07-31 08:34) [129]

нет. доказать требовалось одинаково хорошее использование каждой... чего не возможно без "персонализации" и использовании особенностей,

Где там из моего описания следует, что я якобы не могу использовать персонализацию и особенности?

Давайте же наконец пример того, чего бы я не мог использовать.


 
Кщд   (2013-07-31 08:42) [130]

>разработчик   (31.07.13 08:34) [129]
то, что Вы не в курсе, что такое context switching, - уже понятно

пример любого кода на PL/SQL, работающего с данными в таблицах, осуществляющего какую-либо обработку, использующего какие-либо "особенности" Oracle.
дождёмся ли?


 
разработчик   (2013-07-31 08:58) [131]

Послушайте, Вы, опытный разработчик, знающий что такое переключение контекста.
Во первых про само переключение можете прочитать у фейерштейна-прибыла в книжке с муравьями на обложке.
Во вторых, зачем вам мой plsql код?

Засвербело и нетерпится показать, что я нихрена не понимаю?
Ну допустим.

Но дискуссия-то совсем не про то кто круче.

Был Пит, который сказал, что все реализации многоплатформенности - неработающий отстой.

Я показал, что не все.

Теперь в чем ваша проблема? Зачем вам мой код?
Проанализировать его и дать резюме что я лох?

Ну так поздравляю.
Вы только что узнали, что какой-то лох в одиночку за пару недель сделал такое, во что на умном форуме несколько умных дядек до сих пор въехать не могут.


 
Кщд   (2013-07-31 09:09) [132]

>разработчик   (31.07.13 08:58) [131]
>Во первых про само переключение можете прочитать у фейерштейна-прибыла в книжке с муравьями на обложке.
спасибо)

>Во вторых, зачем вам мой plsql код?
мы обсуждаем то, что написано в "sniknik ©   (31.07.13 08:23) [128]"

>Теперь в чем ваша проблема? Зачем вам мой код?
у меня проблем нет
Вы одинаково хорошо пишете под все базы?
если "да", то пример кода, который просил
если "нет", дискуссия окончена

>Вы только что узнали, что какой-то лох в одиночку за пару недель сделал такое, во что на умном форуме несколько умных дядек до сих пор въехать не могут.
"умные дядьки" на этом "умном форуме" описанные Вами системы лабают пачками, о чём Вам твердили на нескольких страницах


 
разработчик   (2013-07-31 09:15) [133]

мы обсуждаем то, что написано в "sniknik ©   (31.07.13 08:23) [128]"

Окей.
Поехали обсуждать.

Он там говорит, что у меня нет персонализации и особенностей.
Какие при этом ваши доказательства?

Он пишет на одак для оракл, я пишу оракловую часть на одаке.

Какие у него есть особенности и персонализация, которых не может быть у меня?

Сервер один и тот же. Библиотеки одни и те же.

Что говорите? У него не оракл и не одак?
Замечательно.
Я сменю и оракл и одак на то что у него и мы снова возвращаемся к белому бычку.

Чего такое будет доступно ему, чего не будет доступно мне.

Только конкретно и пальцем.


 
разработчик   (2013-07-31 09:17) [134]

"умные дядьки" на этом "умном форуме" описанные Вами системы лабают пачками, о чём Вам твердили на нескольких страницах

Да да.
Я уже в курсе.
Пит как-то выше рассказывал про ваши пачки.


 
разработчик   (2013-07-31 09:22) [135]

Вы одинаково хорошо пишете под все базы?
если "да", то пример кода, который просил
если "нет", дискуссия окончена


Сказано так, словно у вас в кармане уже лежит методика оценки, следуя которой вы мне аргументированно щас прямо тут расскажете что код на оракле  на два попугайских крылышка менее "одинаково хорош" чем код на фб.


 
Кщд   (2013-07-31 09:23) [136]

>разработчик   (31.07.13 09:15) [133]
кто "он"? что говорит?
код будет?

>Пит как-то выше рассказывал про ваши пачки.
не читатель?


 
разработчик   (2013-07-31 09:23) [137]

не читатель?

Вы - безусловно.


 
Кщд   (2013-07-31 09:24) [138]

>разработчик   (31.07.13 09:22) [135]
отставить домыслы и истерики: код в студию.


 
разработчик   (2013-07-31 09:25) [139]

код будет?


Сначала свою методику измерения одинаково_хорошести опубликуйте.
Ага.
Потом будет и код.


 
Кщд   (2013-07-31 09:33) [140]

>разработчик   (31.07.13 09:25) [139]
Вы пытаетесь доказать тезис о том, что одинаково хорошо владеете приемами разработки под разные СУБД.
однако, код, подтверждающий это, предоставлять отказываетесь)
что ж, без доказательств Ваши утверждения голословны
Вы, сударь, хвастун с беспричинно завышенным самомнением)


 
разработчик   (2013-07-31 09:37) [141]

да и вообще не вижу смысла дальше спорить лично с вами.
причина:

я утверждаю, что создать архитектуру при которой сменить библиотеку доступа к данным можно за два часа и при этом не тратить время на отладку бизнес-логики.
То есть предмет моего спора - архитектура.

А судя по вашим перманентным позывам поиметь код, предмет вашего спора - "какой-то лошара вдруг заявляет, что наверное он умнее меня"

Отсюда и навязчивая идея сравнения одинаково-хорошести.

Допустим даже что у меня нет одинаково-хорошести. Что из этого?

Я беру свою архитектуру, беру ораклиста и мссклщика восьмидесятого уровня, которые используют 100% возможностей своих серверов.

На выходе - приложение, которое максимально возможно хорошо работает и на оракле и максимально возможно хорошо на мсскл.

А от того, что они чем-то при этом отличаются вам польза.

Можете открыть свой холивар в новой ветке.

Тема:
Приложение Х следует писать только на У сервере, потому что на сервере Z оно будет чуть менее одинаково хорошим.


 
разработчик   (2013-07-31 09:40) [142]

Вы пытаетесь доказать тезис о том, что одинаково хорошо владеете приемами разработки под разные СУБД.

Выше в [141] все сказано.
Я снова все про вас угадал.

У вас банальный свербеж на тему кто круче.

Я второй день пытаюсь доказать, что у меня есть архитектура, позволяющая бескровно за два часа сменить сервер и библиотеку доступа.


 
Кщд   (2013-07-31 10:04) [143]

>разработчик   (31.07.13 09:37) [141]
>Допустим даже что у меня нет одинаково-хорошести. Что из этого?
так есть или нет?

>Отсюда и навязчивая идея сравнения одинаково-хорошести.
Вы "двинули" "глубокую" мысль про то, что одинаково хорошо умеете обращаться с разными СУБД.
ещё раз: если этого не было, то диалог закончен
всё остальное - сугубо Ваши домыслы

>Я беру свою архитектуру, беру ораклиста и мссклщика восьмидесятого уровня, которые используют 100% возможностей своих серверов.
да зачем Ваш самопал нужен, когда есть тот же хибер и серверы приложений)
стандартное промышленное решение, которое будет работать даже, например, с такой экзотикой, как h2 и nosql-движками, к которым вы утомитесь искать провайдеры под Delphi.))


 
Кщд   (2013-07-31 10:07) [144]

>разработчик   (31.07.13 09:40) [142]
>Я второй день пытаюсь доказать, что у меня есть архитектура, позволяющая бескровно за два часа сменить сервер и библиотеку доступа.
Вам второй день пытаются сказать, что Ваше "кулибинство" - это де-факто применяющийся повсеместно подход
один из
прямым текстом говорят


 
разработчик   (2013-07-31 10:14) [145]

"да чтоб так петь, десять лет учиться надо" /* волга-волга */

А чтобы так тупить, нужно лет двадцать учиться.

да зачем Ваш самопал нужен, когда есть тот же хибер и серверы приложений)

К тебе приходит ИЧП. Ему по договору для общения с тобой нужен твой софт.
Все свое хозяйство он держит на ноуте, подаренном жене на 8 марта.

И тут выходит такой КЩД, весь в доспехах и говорит.
Погоди чувак, я сейчас тебе наставлю серверов приложений на твой целерончик, добавлю фремворков шоб хибернейт хибернейтил и все будет зашибумба.  У меня вот лично все зашибумба.

теперь аналогичный тупой вопрос, но уже от меня к вам:

Да накой хрен ему здался весь ваш этот хлам, если его ноут хреновенько, но тянет его 1С и большего ему не надо?


 
Кщд   (2013-07-31 10:17) [146]

>разработчик   (31.07.13 10:14) [145]
Цитирую:
Вы "двинули" "глубокую" мысль про то, что одинаково хорошо умеете обращаться с разными СУБД.
ещё раз: если этого не было, то диалог закончен
всё остальное - сугубо Ваши домыслы


 
Кщд   (2013-07-31 10:19) [147]

>разработчик   (31.07.13 10:14) [145]
хамить, "тыкать" и переходить на личности не нужно)
ответьте на "Кщд   (31.07.13 10:17) [146]" и закроем тему)


 
разработчик   (2013-07-31 10:21) [148]

Если закончен, то чтож вы тут пыжитесь?

Сначала пыжились, пытаясь доказать, что  я неэффективно оракл юзаю через одак.
Затем вдруг внезапно начали навяливать мне хибернейт, забыв напрочь и про необходимость эффективности и кастомизации и прочих заклинаний.

зачем же так метаться?


 
разработчик   (2013-07-31 10:22) [149]

ответьте на "Кщд   (31.07.13 10:17) [146]" и закроем тему)

Давайте сначала доставайте свою методику измерения одинаково-хорошести.
Вечером деньги-утром стулья.

И закроем тему.


 
sniknik ©   (2013-07-31 10:26) [150]

> Я второй день пытаюсь доказать, что у меня есть архитектура, позволяющая бескровно за два часа сменить сервер и библиотеку доступа.
самопальный ODBC? нафига?

> Давайте же наконец пример того, чего бы я не мог использовать.
тебе давали, общими словами правда...,  ну ладно, конкретно, реальная задача (код не приведу, разработка ~2004-6года на предыдущей работе)

задача - организовать "смс" рассылку с сервера по определенным условиям - меняются данные в базе + появляется файл в папке, если там что-то не так оповещать на мыло. данные в базе меняют из бек офиса, файл выкладывает касса, собственно оповещение это рапорт об ошибке если суммы по смене не сошлись.
реализация - из "бек офиса" формируется job "по времени" + процедуры (то ли с мылом, то ли с shell-ом были проблемы если не в процедуре, не помню, вроде бы что-то даже писали во "внешних"), в скрипт напрямую вставляются "мыла", проверяемый путь (пути, касс может быть несколько), джоб запускается на выполнение и раз в пять/по желанию минут проверяет условия, и посылает при не совпадении репорт.

пожалуйста реализацию на access желательно (могу проверить). реализация "прямо в программе" не пойдет, должна быть централизация, сервер (1 репорт а не сто   ), у клиентов часто просто нет доступа к нужным ресурсам. вообще реализация "по другому" сразу не пойдет, т.к. спор не о том как это сделать вообще.


 
Кщд   (2013-07-31 10:49) [151]

>разработчик   (31.07.13 10:21) [148]
>Если закончен, то чтож вы тут пыжитесь?
читаем внимательно: закончен, если Вы признаёте, что не умеете хорошо писать, например, под Oracle(или FB, или MS SQL)
признаёте, заканчиваем)

>Сначала пыжились, пытаясь доказать, что  я неэффективно оракл юзаю через одак.
этого не было или процитируйте

>Затем вдруг внезапно начали навяливать мне хибернейт
не "навяливал" или цитата

>Давайте сначала доставайте свою методику измерения одинаково-хорошести.
приведите код, а "умные дядьки" с "умного форума" посмотрят, насколько он верен, эффективен и учитывает особенности СУБД

пока же, повторюсь, все Ваши утверждения голословны и не заслуживают доверия


 
Inovet ©   (2013-07-31 11:05) [152]

> [142] разработчик   (31.07.13 09:40)
> Я второй день пытаюсь доказать, что у меня есть архитектура,
> позволяющая бескровно за два часа сменить сервер и библиотеку
> доступа.

Нет. Всё началось с

> [1] разработчик   (29.07.13 06:41)
> с точки зрения разработчика должно быть по барабану какой
> сервер программировать.

Утверждают же, что серверы сильно разные и невозможно под каждый за 2 часа портировать базу и клиента, кроме примитивных случаев, где никакие особенности серверов и не используются. О возможности последнего никто и не спорил.


 
разработчик   (2013-07-31 11:17) [153]

пожалуйста реализацию на access желательно (могу проверить). реализация "прямо в программе" не пойдет, должна быть централизация, сервер

Ну если вы лично поставили для себя такую задачу, я ее решу.
Только сначала покажите мне где там сервер у акцесса.

пока же, повторюсь, все Ваши утверждения голословны и не заслуживают доверия
Не более чем ваши. Где кстати методика оценки одинаково-хорошести?
А то знаете ли каждый дурак хочет оказаться в беспроигрышной ситуации.
Вы типа мне ваш говонокод покажите, а я на основании мифической методики докажу что он неодинаково хорош.
Так что сначала методику в студию, затем получите код. Если методика окажется не фуфлом.

Утверждают же, что серверы сильно разные и невозможно под каждый за 2 часа портировать базу и клиента,

Эти два часа принципиальны?
Свою за два, вашу за две недели. Полегчало?
К тому же вашу лично не надо. Потому что она судя по всему работает дома в корпоративной среде, где никто сервера раз в неделю не меняет.


 
Inovet ©   (2013-07-31 11:21) [154]

> [153] разработчик   (31.07.13 11:17)
> Эти два часа принципиальны?
> Свою за два, вашу за две недели. Полегчало?

За 2 недели полностью переписать некую "вашу", не слишком ли самонадеянно?


 
Кщд   (2013-07-31 11:24) [155]

>разработчик   (31.07.13 11:17) [153]
можно узнать компанию, в которой Вы работаете?


 
разработчик   (2013-07-31 11:25) [156]

Еще один.
Кто сказал что полностью?

Мне надо отнаследоваться от датамодуля и переопределить 20 методов.
Плюс адаптировать ддл.


 
sniknik ©   (2013-07-31 11:26) [157]

> и невозможно под каждый за 2 часа портировать базу и клиента
+
иногда это не возможно в принципе, не важно за сколько времени. просто в одной субд нет возможностей другой, совсем, и вообще она не субд ;). но естественно подобные "тонкости" не интересуют человека который ставит знак равенства между mssql и access. но который при этом уверен, что оба "движка" хорошо знает, и использует.

> Ну если вы лично поставили для себя такую задачу, я ее решу.
> Только сначала покажите мне где там сервер у акцесса.
это у тебя "все едино" т.что ты и должен искать.

и кстати как ни странно, сервер (аналог) есть...  поищи по RDS DataControl DataFactory.
p.s. удачи.


 
разработчик   (2013-07-31 11:26) [158]

можно узнать компанию, в которой Вы работаете?


можно.
с какой целью интересуетесь?


 
Пит   (2013-07-31 11:29) [159]


> но мне интересен код, с помощью которого "разработчик" избегает/обрабатывает
> таких(ие) ситуаций(ии).

мне, кстати, тоже интересно. Как в коде можно предусмотреть такие ситуации?


> А что понравилось - это, например, поддержка точек сохранения
> (SavePoint)

в оракле точно также. В MS SQL есть вложенные транзакции.


 
разработчик   (2013-07-31 11:32) [160]

Как в коде можно предусмотреть такие ситуации?

А ты как их обходишь?
Или не обходишь?

Если нет, то почему это тебя волнует?
А если да, то почему ты думаешь что мой код не может обойти то что ты обошел?

Или ты до сих пор не понял, что речь о самом обычном коде, а не универсализированном?

Тогда и я и медицина здесь бессильны.
Два дня не понимать родную речь - это не лечится.


 
Пит   (2013-07-31 11:34) [161]

разработчик, ну ты все таки право слово жжошь.

Ты утверждал, что любую задачу можешь реализовать универсально, то есть без привязки к БД.
Ты три страницы допытывался, чтобы тебе дали такую задачу.

Ок, sniknik собрался с мыслями и естественно выложил тебе ловушку. Задачу, которая требует серверного решения и предложил решить её на access, где нет серверной части. Естественно, это и должно показывать, что не любую задачу можно выполнить на любой БД (как ты утверждал).

И в ответ ты говоришь - а на access нету серверной части, задача плохая!

Ну это же бред уже какой-то. Ты хочешь, чтобы тебе дали задачу, которую можно выполнить на любой SQL бд и при этом ты покажешь как её выполнить? ))

По-моему, есть абсолютные два тезиса:

1) есть такие задачи, выполнение которых можно реализовать, не опираясь на специфику БД, достаточно того же SQL-92
2) есть задачи, которые невозможно выполнить, опираясь только на некую абстрактную БД, которая умеет только SQL-92.


 
Пит   (2013-07-31 11:36) [162]

1) есть такие задачи, выполнение которых можно реализовать, не опираясь на специфику БД, достаточно того же SQL-92
2) есть задачи, которые невозможно выполнить, опираясь только на некую абстрактную БД, которая умеет только SQL-92.


При этом разговор ведется в таком русле:

- разработчик пытается доказать тезис 1)
- ему пытаются доказать тезис 2)

При этом оба тезиса верны и разговор бестолковый.


 
Кщд   (2013-07-31 11:40) [163]

>разработчик   (31.07.13 11:26) [158]
>с какой целью интересуетесь?
хочу знать, где работаете
из вопроса очевидно)

>Пит   (31.07.13 11:29) [159]
>в оракле точно также. В MS SQL есть вложенные транзакции.
именно вложенных(nested) транзакций в Oracle(увы или слава богу) нет


 
Кщд   (2013-07-31 11:40) [164]

>разработчик   (31.07.13 11:26) [158]
>с какой целью интересуетесь?
хочу знать, где работаете
из вопроса очевидно)

>Пит   (31.07.13 11:29) [159]
>в оракле точно также. В MS SQL есть вложенные транзакции.
именно вложенных(nested) транзакций в Oracle(увы или слава богу) нет


 
Пит   (2013-07-31 11:43) [165]


> именно вложенных(nested) транзакций в Oracle(увы или слава
> богу) нет

это ты сейчас подтвердил мои слова или опровергнул?

Ну да, я это и говорю. В оракле, как и в ДБ2 (описывал дядя Юра) - точки сохранения. В MS SQL есть вложенные транзакции.

В оракле собственно и оператора начала транзакции нету.


 
разработчик   (2013-07-31 11:44) [166]

хочу знать, где работаете

С какой целью хотите узнать.
Впрочем успокойтесь.
Я просто младший говнокодер в говнокомпании за мкадом.

Вашему тщеславию ничто не угрожает.


 
разработчик   (2013-07-31 11:47) [167]

И в ответ ты говоришь - а на access нету серверной части, задача плохая!


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

так что не ссы. перед такими детскими проблемами я не пасую.


 
Кщд   (2013-07-31 11:47) [168]

>Пит   (31.07.13 11:43) [165]
>это ты сейчас подтвердил мои слова или опровергнул?
опровергнул)
в Oracle нет nested transactions)

>В оракле собственно и оператора начала транзакции нету.
есть же)


 
Кщд   (2013-07-31 11:49) [169]

>разработчик   (31.07.13 11:44) [166]
так можно или нельзя?
если нельзя, то почему?((
вопрос прямой и без подтекста: можно узнать название компании, в которой Вы трудитесь?


 
разработчик   (2013-07-31 11:56) [170]

хорошо.
просто банк вас устроит?
или нужно название?

ну типа что бы после этого сказать, спасибо что сказали, а то бы я мог случайно оказаться клиентом такого говнобанка.


 
Ega23 ©   (2013-07-31 12:02) [171]

select max(id) + 1 from some_table

Здесь ошибка.
Если уж на то пошло, то
select isnull(max(id) + 1, 1) from
Про "безопасность" я молчу.


 
Inovet ©   (2013-07-31 12:13) [172]

> [170] разработчик   (31.07.13 11:56)
> просто банк вас устроит?

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


 
Inovet ©   (2013-07-31 12:19) [173]

> [171] Ega23 ©   (31.07.13 12:02)
> select isnull(max(id) + 1, 1) from
> Про "безопасность" я молчу.

На время запроса оассылаем всем другим пользователям сообщение с прсьбой выйти из программы, ставим какой-нибудь флажок, чтобы не заходили, как выйдут, делаем запрос. Блин, сложно получается - с флажком ещё возиться. Эх.


 
Кщд   (2013-07-31 12:20) [174]

>разработчик   (31.07.13 11:56) [170]
>или нужно название?
да

>а то бы я мог случайно оказаться клиентом такого говнобанка.
не домысливайте
обещаю, что ничего подобного не скажу))


 
Кщд   (2013-07-31 12:22) [175]

>Ega23 ©   (31.07.13 12:02) [171]
>Здесь ошибка.
дадад! согласен)


 
разработчик   (2013-07-31 13:02) [176]

Действительно, большего и не требуется. Но нельзя же рапростанять это утверждение на любые системы вообще.

Во первых про любые придумано вами, а не нами.
Если система живет внутри корпоративной инфраструктуры то ей подобные фокусы просто не нужны.

А во вторых что же помешает распространить это утверждение на другие системы?


 
разработчик   (2013-07-31 13:05) [177]

ну возможно немного расширится спецификация интерфейса-прокладки.
возможно даже процентов на 10-15.
и будет не 20 а 30 виртуальных методов.
и чего?


 
Кщд   (2013-07-31 13:17) [178]

>разработчик   (31.07.13 13:05) [177]
название?


 
Inovet ©   (2013-07-31 13:18) [179]

> [177] разработчик   (31.07.13 13:05)
> и чего?

Да ничего. Всё можно, только не за 2 часа и не за 2 недели, и возможно, криво. Вот поступила новая блажь - храним всё в текстовом файле. Нельзя? Можно. Тагда в чём проблема - храним и получаем кучу "бонусов" - клиент может открыть Блокнотом любой файл и поправить, удобно же. Всё, делаем прокладку.


 
Пит   (2013-07-31 13:25) [180]


> опровергнул)
> в Oracle нет nested transactions)

блин, по ходу в этой теме уже все только пишут, а читать не хотят)

Кщд, у нас интересный диалог:

Я: в оракле нету вложенных транзакций
Ты: не правда, в оракле нету вложенных транзакций

Я ж не просто так спросил. Прочитай переписку еще раз)


> >В оракле собственно и оператора начала транзакции нету.
>
> есть же)

и какой оператор начинают транзакцию в оракле?


 
разработчик   (2013-07-31 13:26) [181]

Да ничего. Всё можно, только не за 2 часа

У меня за два часа.
Возьмите свой несложный проект. Допустим даже без серверной логики.
Сможете поменять компоненты доступа на другие хотя бы за день?
Да так что бы не ожидать незапланированных сбоев в бизнес слое?

Я смог. За 2 (два) часа.
И при этом отладив всего 20 методов по три-пять строк каждый я уже точно знал, что это уже готовый релиз, а не альфа-бета.


 
Пит   (2013-07-31 13:30) [182]


> Если я буду настолько же туп

зря ты начинаешь хамить. Это тебя не красит. И в целом неэффективный способ ведения дискуссии.


> и заточусь на серверную отправку смс для акцесса

вот именно. Если ты знаешь, что работаешь точно с оракл - ты можешь заточиться на серверную логику. И отправлять СМС. И парсить XML на стороне оракла, возвращая только значение нужной ноды, допустим.

А если ты делаешь типа "универсальный" вариант, то тебя так нельзя, хотя на многих целевых БД так было бы можно. И ты будешь изобретать велосипеды.

Ты сейчас как тот человек, который пытается доказать, что все данные можно хранить всего лишь в одной таблице с тремя колонками.


 
Пит   (2013-07-31 13:31) [183]


> название?

я не понимаю чего ты к человеку привязался. Хочешь, чтобы он озвучил название "Сбербанк"? )

Если ты уж такой настойчивый, то логичнее было бы самому озвучить - где ты сам работаешь?


 
разработчик   (2013-07-31 13:34) [184]

И в целом неэффективный способ ведения дискуссии.


неэффективный способ ведения дискуссии - это вторые сутки тупить на тему недостатков "универсального" варианта. Причем когда раз десять уже было жирным текстом пояснено что нет никакого такого "универсального" варианта.

И таблицы с тремя колонками заменяющей всю БД тоже нет.

Впрочем зачем я распинаюсь в одиннадцатый раз.
не дойдет же.


 
Кщд   (2013-07-31 13:45) [185]

>Пит   (31.07.13 13:25) [180]
>Я ж не просто так спросил. Прочитай переписку еще раз)
о, да - моя вина)

>и какой оператор начинают транзакцию в оракле?
явно: set transaction

>Если ты уж такой настойчивый, то логичнее было бы самому озвучить - где ты сам работаешь?
логика - это импликация
факт -> следствие
где здесь логика?


 
Кщд   (2013-07-31 13:45) [186]

>разработчик   (31.07.13 13:34) [184]
название узнаем или нет?


 
Пит   (2013-07-31 13:47) [187]


> было жирным текстом пояснено что нет никакого такого "универсального"
> варианта.

да поняли давно уже, что у тебя специфичный код работы с каждой БД и в этом смысле нужно для новой ДБ дорабатывать программу.

Универсальность в том, что ты утверждаешь - можно сделать так, что подключение новой БД это пара часов времени.

И вот на предыдущую фразу смотрят люди, которые видят сотни / тысячи пакетов в своей БД, тысячи и десятки тысяч процедур. И вот им говорят, что есть некий подход, когда можно писать так, что переехать на любую другую БД, да хоть на access, можно за пару часов. Кроме смеха ничего не будет, потому что это вообще разные вещи.

С тем, что в простых случаях работы с БД можно сделать нечто независимое - НИКТО НЕ СПОРИТ! Тебе опять же десять раз это сказали. Но ты продолжаешь это доказывать.

Тебя обижает слово "простых"? Мол ты фигню пишешь? Но это и правда простая работа с БД.
А когда тебе приводят пример более менее сложной работы с БД - ты возмущаешься тем, что на access это сделать нельзя, как же так. Это какой то паноптикум.


 
Пит   (2013-07-31 13:54) [188]


> явно: set transaction

ну это философский вопрос. На мой взгляд транзакция начинается автоматически. А set transaction всего лишь устанавливает свойства транзакции. А можно и не устанавливать.

По сути, любой оператор начинает транзакцию, точно также set transaction начинает транзакцию)


> логика - это импликация
> факт -> следствие
> где здесь логика?

Логика в том, что ты точно также сейчас уходишь от ответа. И думаю хоть 10 раз тебя спросить "Так где же" ты каждый раз будешь уходить от ответа. И автор также уходит от ответа. Поэтому ты должен сам прекрасно понимать, почему он не озвучивает.


 
разработчик   (2013-07-31 13:58) [189]

И вот им говорят, что есть некий подход, когда можно писать так, что переехать на любую другую БД, да хоть на access, можно за пару часов. Кроме смеха ничего не будет, потому что это вообще разные вещи.

Ну естественно.
Они не планировали так делать - раз.
Начинали возможно вообще не они - это два.
Переписать это самоубийство, а главное это для корпоративного сектора вообще не надо - это три.

Я же изначально поставил задачу легкости смены движка.
И сколько там хранимок у меня в процессе появилось - роли совершенно не играет.

Потому что прослойка не имеет дела с бизнес-логикой вообще.
Она служебная.

создай и верни мне нечто, что выполнит запрос, результат которого можно вставить в грид.

установи значение параметра по имени такому-то для того нечта, которое ты для меня создал на предыдущем шаге.

запусти серверный код с таким-то именем и верни результаты в такой-то структуре.

и т.д.

А уж сколько там серверного кода вы успеете наваять - какая разница сколько его, если есть метод, который запустит на выполнение любой объект созданный вами.
Никакой разницы.


 
Кщд   (2013-07-31 14:15) [190]

>Пит   (31.07.13 13:54) [188]
>На мой взгляд транзакция начинается автоматически.
это так

но set transaction - явно:
http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/settransaction_statement.htm
цитирую: "The SET TRANSACTION statement begins a read-only or read-write transaction".
begins такой begins

>Логика в том, что ты точно также сейчас уходишь от ответа.
нет
автор на вопрос: можно ли узнать?
ответил: можно
как из этого следует то, что мне нужно назвать компанию, в которой трудоустроен?)

впрочем, это не секрет: ГК "ФИС"


 
анонимус   (2013-07-31 14:18) [191]


> С тем, что в простых случаях работы с БД можно сделать нечто
> независимое - НИКТО НЕ СПОРИТ!

1C 8.2 - это простой случай работы с БД?


 
Ega23 ©   (2013-07-31 14:24) [192]


> Сможете поменять компоненты доступа на другие хотя бы за день?


Да. А зачем?


 
разработчик   (2013-07-31 14:28) [193]

автор на вопрос: можно ли узнать?
ответил: можно


Сказано можно.
Но не сказано, что можно вам.

впрочем, это не секрет: ГК "ФИС"

Если это так важно и если это вас успокоит, то пусть будет фис.

Хотя я и в первый раз про этот фис слышу.


 
разработчик   (2013-07-31 14:30) [194]

Да. А зачем?

А затем что потребовалось.
А подробности выше.


 
sniknik ©   (2013-07-31 14:43) [195]

> Возьмите свой несложный проект. Допустим даже без серверной логики.
> Сможете поменять компоненты доступа на другие хотя бы за день?
ну, если не сложный, то есть у меня один... меняется за секунду, прямо в программе, без пере компиляции. база любая.
использую постоянно (и не только я), вот в данный момент я в ней работаю с информиксом. раньше/параллельно иногда с mssql и access, и т.д. вообще ограничений нет, если есть oledb/odbc провайдер данных значит с базой можно работать. при этом мне это НИЧЕГО не стоило, никаких доп модулей писать не пришлось, все чисто на стандартах ADO.

но это, в очередной 101 раз, примитив, работа с базой на начальном уровне, писал собственно чтобы разобраться с ADO.

и что это доказывает? кроме уже сказанного.


 
Кщд   (2013-07-31 14:49) [196]

>разработчик   (31.07.13 14:28) [193]
>Но не сказано, что можно вам.
вообще, не советую Вам хоть кому-нибудь разглашать здесь
после всего, что Вы наплели в этой ветке - это будет прямой репутационный ущерб вашей компании

>Если это так важно и если это вас успокоит, то пусть будет фис.
я отвечал не Вам
меня это не беспокоит


 
Пит   (2013-07-31 15:18) [197]


> И сколько там хранимок у меня в процессе появилось - роли
> совершенно не играет.

как это не влияет. Ведь для переноса на новую неизвестную БД нужно переписать весь функционал хранимок под новую БД. А если хранимок около десяти тысяч? Вот мы и приехали, что проект по факту непереносимый, такие системы только если с нуля писать.

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

Поэтому - в простом случае хватит и трех колонок в одной таблице. А в сложном - фигня получится.

Что простые проекты можно абстрагировать от БД - тебе несколько раз говорили и никто с этим не спорит.


 
Пит   (2013-07-31 15:23) [198]


> 1C 8.2 - это простой случай работы с БД?

а что, 1C можно легко заставить работать на любой БД? Ты за 2 часа берешься заставить работать 1C с движком sqlite?


> если есть oledb/odbc провайдер данных значит с базой можно
> работать. при этом мне это НИЧЕГО не стоило

хороший пример.
разработчик разработал свой велосипед - абстрагирование от БД. В Microsoft тоже не дураки, они сделали свою технологию абстрагирования от БД - ADO. И я подозреваю, что полнота абстрагирования там получше.
Но ни тот, ни другой случай не покатит в сложных случаях. Даже да, несмотря на то, что в подходе автора можно использовать спец. фичи БД и писать разный код для разных БД. Но все равно при возрастании сложности придется слишком многое поддерживать.

Поэтому все это работает только при достаточно простых базах.


 
Пит   (2013-07-31 15:45) [199]


> явно: set transaction

ну это игра словами.

С тем же успехом я могу сказать, что в оракле начинает транзакцию:

select * from dual


 
разработчик   (2013-07-31 18:13) [200]

если есть oledb/odbc провайдер данных значит с базой можно работать. при этом мне это НИЧЕГО не стоило,

Это вам стоило тех самых ограничений накладываемых адо и олепровайдерами.
Про которые мне тут третьи сутки рассказывают.

разработчик разработал свой велосипед - абстрагирование от БД.

Какой же ты непроходимый гений.
Я не абстрагировался от БД.


 
Пит   (2013-07-31 18:28) [201]


> Какой же ты непроходимый гений.

я такой)

Абстра&#769;кция (от лат. abstractio — отвлечение) — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.


 
разработчик   (2013-07-31 18:31) [202]

Ну если MySQLDac + MySQL это абстрагирование от MySQL
А одак + оракл это абстрагирование от оракла, то таки да.

Я офигенно абстрагировался от оракла, выбрав одак.
А выбрав фиб я очень глубоко абстрагировлся от FB

аминь.
перехожу на прямой импорт oci и gds.
ну чтобы чуть меньше абстрагироваться.


 
sniknik ©   (2013-07-31 18:34) [203]

> Это вам стоило тех самых ограничений накладываемых адо и олепровайдерами.
никаких ограничений, с чего бы? все, что можно (база позволяет) можно через нее делать. вот тот самый скрипт о котором писал выше первоначально я через нее и сделал... если бы позволял access то для него сделал бы. sql в конце концов везде простой текст.
ты делаешь выводы не видя программы, не зная ее функции.

> Я не абстрагировался от БД.
ты написал "много в одной" программ, каждая со своей базой. мы поняли.


 
разработчик   (2013-07-31 18:37) [204]

никаких ограничений,

допустим что нет. хотя это и не так.
есть там ограничения. причем двойные. одни в самом адо, другие в самом провайдере.
за подробностями на страницу провайдера в раздел кновн лимитайшенс.

Но допустим что их нет.

Тогда с чего вдруг они есть у меня, если я работаю вообще через прямой доступ ?


 
разработчик   (2013-07-31 18:44) [205]

ты делаешь выводы не видя программы, не зная ее функции.

Мы все делаем это.
Разница только в том, что я не спорю, что вам удалось что-то там побороть, а вы хором доказываете что либо у меня ограничения которых я не вижу, либо я вообще все нафантазировал.


 
Пит   (2013-07-31 19:08) [206]

разработчик, ты явно все нафантазировал


 
разработчик   (2013-07-31 19:11) [207]

а ты могёш так?
нафантазировать что-нибудь этакое, чтобы на два дня отвлечь внимание почтенной публики.
да так штоб аж до пены.

вот я смог.


 
Пит   (2013-07-31 19:14) [208]


> вот я смог.

это не ты смог, а я. Именно мой пост [11] стал двигателем горячего обсуждения. А так бы ничего не было.


 
разработчик   (2013-07-31 19:18) [209]

Ну я где-то в чем-то согласен, что и ты молодец.
Но в то же время я мог бы и забить или слиться после [11] и ветка не была бы такой длинной.
Поэтому мы оба молодцы.


 
Юрий Зотов ©   (2013-07-31 19:25) [210]

ИМХО, архитектура нова лишь тем, что в качестве специализированного звена выступает модуль Delphi.

Вспомним BDE - наверное, это была первая попытка создать универсальный способ доступа к разным БД? И TDataset не зря сделан абстрактным классом - предвидели разработчики VCL возможность портации. Пиши свой наследник под другую БД, вот и все (что и делали).

Естественно, если в БД использованы специфичные для сервера примочки, то портировать такую БД под другой сервер - это, конечно, не два часа. Заместить 20 методов по 5 строчек - не вопрос, но ведь это только клиентская часть, а с самой-то БД что делать?


 
Anatoly Podgoretsky ©   (2013-07-31 19:37) [211]

> Sergey Masloff  (30.07.2013 11:36:10)  [10]

Нормальный разработчик
пишет в любой базе как в dBase IV

"Sergey Masloff" <smaslov@ingos.ru> сообщил(а) в
новостях
следующее:1375043600.10@delphimaster.ru...
Sergey Masloff (30.07.2013 11:36) [10]
Кщд   (30.07.13 11:25) [9]
>одинаково хорошо пишете
под версионники и
блокировочники?
>виртуозно владеете
расширениями SQL любой СУБД?
>что ж, остаётся лишь
позавидовать Вам -
несуществующий
разработчик
Да ладно несуществующий.
На любом SQL можно писать как
будто это paradox/dbf
Только всегда ли это
хорошо?


 
Anatoly Podgoretsky ©   (2013-07-31 19:37) [212]

> Sergey Masloff  (30.07.2013 13:18:15)  [15]

работоспособные до тех
пор, пока с деньгами не
столкнутся. Masloff" <smaslov@ingos.ru> сообщил(а) в
новостях
следующее:1375043600.10@delphimaster.ru...
Sergey Masloff (30.07.2013 11:36) [10]
Кщд   (30.07.13 11:25) [9]
>одинаково хорошо пишете
под версионники и
блокировочники?
>виртуозно владеете
расширениями SQL любой СУБД?
>что ж, остаётся лишь
позавидовать Вам -
несуществующий
разработчик
Да ладно несуществующий.
На любом SQL можно писать как
будто это paradox/dbf
Только всегда ли это
хорошо?


 
Юрий Зотов ©   (2013-07-31 19:38) [213]

> Пиши свой наследник под другую БД

Кстати, довелось как-то. Ох, мороки не мало. Там не только TDataset, там до фига пришлось "перепортачивать".


 
разработчик   (2013-07-31 19:44) [214]

1. заменить ддл-скрипт таблиц. здесь find-replac"а по типам более чем достаточно.
2. подредактировать если надо ддл-скрипт для вьюх.
3. индексы. возможно но не факт тоже подправляем.
4. безусловно правим триггеры, предварительно заменив генераторы на сиквансы или ни на что не заменив, если есть автоинкремент.

переходим к процедурам.
что там они вообще могут делать?
в основном прием параметров и апдейты, возврат параметров.
хотя бывает возвращают курсоры.

с первой частью какие проблемы? никаких. все сервера умеют делать это.
с вас всего лишь адаптация синтаксиса.

а с курсорами все так печально?
где именно?
ну может быть в мускуле с акцессом. там да.
можно обойти? можно.
для вас это будет неразрешимой проблемой? не будет. для меня тоже.
я либо вместо вызова процедуры выполню просто запрос, либо то что дает мне курсор заменю на сериализованный нужным мне образом блоб.

что осталось? ничего не осталось.

а про два моих часа - я не голословно сказал.
был поставлен реальный эксперимент.
исходное положение - нет сервера и скриптов тоже нет.

в привод сд был вставлен дистрибутив сервера, и был включен секундомер.
после окончания портирования, когда уже можно было заворачивать билд в инносетап секундомер остановлен.

два часа.


 
Пит   (2013-07-31 19:55) [215]

а в оракле 12 появился автоинкримент кстати.


 
Юрий Зотов ©   (2013-07-31 20:03) [216]

> разработчик   (31.07.13 19:44) [214]

1. Пакеты. Тут о них уже говорилось.

2. Процедуры. Часто они бывают написаны не на чистом SQL, а на специализированном языке (PL/SQL etc). Машинному переводу вряд ли поддается (именно из-за особенностей сервера), а переписывать кучу кода вручную - это не 2 часа. Еще ведь и отладить надо.

3. И т.п. Не каждая примочка сервера имеет свой аналог в другом сервере. Тут придется мудрить. И если серверный код исчисляется мегабайтами (что в серьезных задачах случается), то мудрить придется не слабо.

3. Не сомневаюсь, что СВОЮ задачу Вы действительно решили за 2 часа. Но ведь это СВОЮ, а не ЛЮБУЮ.


 
Пит   (2013-07-31 21:20) [217]

каждые 2 страницы посты повторяются))


 
разработчик   (2013-07-31 21:25) [218]

каждые 2 страницы посты повторяются))
против цикличности вселенной не попрешь :)

PS "я устал, я ухожу"
PPS дальше пусть путин.


 
sniknik ©   (2013-07-31 21:35) [219]

разработчик   (31.07.13 19:44) [214]
чем то напоминает...
http://bash.im/quote/405167

> 3. Не сомневаюсь, что СВОЮ задачу Вы действительно решили за 2 часа.
а я вот с какого то момента даже в наличии программы у него сомневаюсь...
Китайская мудрость гласит: Ты сказал - я поверил, ты повторил - я засомневался, ты стал настаивать и я понял, что ты лжешь.

он именно "настаивает" причем на том в чем никто не сомневается... а вот говоря о реальных проблемах удивительно легкомысленные "шапкозакидательные" высказывания... такие бывают только у малознакомых с предметом людей, чаше у начальников, чисто смотрящих со стороны и не вникающих в "тонкости".
действительно, да чего там процедуры/...? синтаксис реплейсом поправить и всех делов... (сарказм)

> 1. 2. 3. 4.
5. вычисляемые поля
6. внешние ключи/каскадные удаления/изменения
7. констраинты
8. дефаултные значения
9. автоприведения типов
...
т.е. не очевидные, не имеющие синтаксиса в запросах, но тем не менее вполне реальные вещи. реплейс не поможет. ты о них забыл? или не знал? не хорошо в любом случае для "хорошо знающего, и использующего".


 
разработчик   (2013-07-31 21:42) [220]

синтаксис реплейсом поправить и всех делов... (сарказм)

create table stupid_sniknik_table(
field_one varchar2(4000)
);

create table stupid_sniknik_table(
field_one varchar(4000)
);

В виде исключения. Для особо деревянных.
Не способных варчар заменить на варчар2 реплейсом.

а что констрейнты?
а что дефолты?
а что ключи/каскадность и т.д.?

У тебя лично с этим проблемы?
У меня нет.
Прими искренние соболезнования мой вуден френд.


 
ReindeerMossEater   (2013-07-31 21:52) [221]

разработчик   (31.07.13 19:44) [214]
1. заменить ддл-скрипт таблиц. здесь find-replac"а по типам более чем достаточно.


Каким непроходимым дауном надо быть, чтобы не понять что речь идет только о таблицах, и только о типах данных полей.

Каким ослом надо быть, чтобы решить вдруг, что я и текст процедур меняю тем же файнд и реплейсом.

Здесь ни у кого биореактора свободного нету?
Арендую одно место для одного моего оппонента.


 
ReindeerMossEater   (2013-07-31 21:53) [222]

Да да. это был именно я.


 
Юрий Зотов ©   (2013-07-31 22:24) [223]

> ReindeerMossEater   (31.07.13 21:52) [221]

> Каким непроходимым дауном надо быть
> Каким ослом надо быть


Ругаться-то зачем? Аргументы кончились? Интересная ведь ветка, зачем же ее поганить?

> речь идет только о таблицах, и только о типах данных полей.

А остальное? Там же в БД еще куча всего может быть понапихана.

> чтобы решить вдруг, что я и текст процедур меняю
> тем же файнд и реплейсом.


А чем же Вы их меняете? Наверное, руками. Но не за 2 же часа?


 
разработчик   (2013-07-31 22:29) [224]

Зачем зачем ругаться.
Я же не спрашиваю зачем он мозг имеет но не пользуется им.
Может ему так проще.


 
разработчик   (2013-07-31 22:43) [225]

Свою за два.
Вашу не за два. Вашей это вообще не надо.
И вообще возможность смены сервера это бесплатный бонус был.
Бонус к возможности сменить за ДВА часа адо на фиб.
Но кто это помнит? Тот кто читает.
Тоесть никто.
О чем дальше будем тереть?
О том что в огороде вот генераторы а в киеве сиквансы?


 
Юрий Зотов ©   (2013-07-31 22:49) [226]

> разработчик

Нечто подобное довелось делать. Речь шла о выполнении команд, посылаемых серверу с терминалов сбора данных. Написал виндовую службу. Основной поток слушает порт. При подключении терминала запрашивает логин и пароль. Если все ОК, то создает отдельный поток для работы с этим терминалом и снова уходит в прослушку порта. Порожденный поток, получив команду от терминала, парсит ее и запускает соответствующую хранимку, передавая ей параметры из той же команды. Получив от хранимки ответ, отсылает его терминалу и ждет новой команды. Получив команду на завершение, дисконнектит юзера и умирает.

Примерно так, не касаясь деталей. Естественно, разбил задачу на модули. Один из модулей - работа с БД. Тоже полагал, что при переезде на другую БД достаточно лишь заменить этот модуль, сохранив его интерфейс (причем это действительно можно было сделать буквально за день).

Однако, все оказалось не так просто - именно из-за специфики хранимок и прочего серверного кода.


 
разработчик   (2013-07-31 23:30) [227]

Это бывает.
У вас не получилось.
Или получилось не совсем
У меня получилось.
Тоже бывает.


 
Юрий Зотов ©   (2013-07-31 23:42) [228]

> разработчик   (31.07.13 23:30) [227]

Почему не получилось? Все прекрасно получилось, работает без проблем. Но портация на другую БД оказалась сложнее, чем думалось поначалу. И у Вас (и у кого угодно другого) было бы абсолютно то же самое, если серверный код имеет немалый объем и ориентирован на специфику конкретного сервера.


 
Пит   (2013-07-31 23:48) [229]

интересно, сколько еще уважаемый Олень сможет разводить флуд на пустом месте.
По-моему, даже он не ожидал, что его не очень умный стёб так долго продержится, что даже он будет удивлен. Так то.


 
sniknik ©   (2013-08-01 01:36) [230]

> чтобы не понять что речь идет только о таблицах, и только о типах данных полей.
с чего это? вдруг раз, и только о таблицах и типах... а о всем остальном, неудобном тебе забыли...

но раз хочется, открываем справку аксеса например и смотрим пример создания таблиц, и возможно дойдет
> а что констрейнты?
> а что дефолты?
> а что ключи/каскадность и т.д.?
CREATE TABLE Клиенты (ИндексКлиента INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

CREATE TABLE Заказы (КодЗаказа INTEGER PRIMARY KEY, ИндексКлиента INTEGER, ПримечанияЗаказа NCHAR VARYING (255), CONSTRAINT ВнКлЗаказыИндексКлиента FOREIGN KEY (ИндексКлиента) REFERENCES Клиенты ON UPDATE CASCADE ON DELETE CASCADE

знакомые слова поискать, объяснять нужно? (опять сарказм)

кстати сделай "реплейс"  чтобы это на mssql сработало, не меняя "вдумчиво" (там чуток по другому, не просто слова поменять)...
пару десятков таких замен (особенно весело с вложенными джойнами)  и твои пару часов превращаются в пару недель.


 
asail ©   (2013-08-01 02:01) [231]


> разработчик   (31.07.13 19:44) [214]

> 4. безусловно правим триггеры, предварительно заменив генераторы
> на сиквансы или ни на что не заменив, если есть автоинкремент.

Триггеры не только для автоинкрементов могут использоваться. У нас (IB7.5) этих триггеров сотни. И многие весьма много кода содержат.
А еще у нас куча собственных UDF имеется. С ними что прикажете делать, ась? Или можно, перекрыв пару десятков виртуальных методов, заставить интербэйсовские UDF бежать на всяких там Ораклах? Лично я таким фокусам не обучен...

Я согласен, что в частном случае можно и за 2 часа, например, с ФБ на Оракл перепрыгнуть... А в некоторых, так вообще, только алиас в БДЕ подправить. Даже дельфю запускать не надо...
А в некоторых случаех, даже похожие СУБД фиг заменишь (например IB на FB)...


 
разработчик   (2013-08-01 08:37) [232]

Удалено модератором


 
разработчик   (2013-08-01 08:41) [233]

Удалено модератором


 
разработчик   (2013-08-01 08:44) [234]

Удалено модератором
Примечание: Кончай оскорблять участников


 
разработчик   (2013-08-01 08:51) [235]

Удалено модератором
Примечание: Произошло неп только это, а также возмущение модератор


 
Ega23 ©   (2013-08-01 09:20) [236]


> разработчик   (31.07.13 14:30) [194]
>
> Да. А зачем?
>
> А затем что потребовалось.
> А подробности выше.
>


Зая, чтобы поменять компоненты доступа, должны быть очень веские причины. Это раз. Компоненты доступа меняются два раза максимум за весь жизненный цикл продукта. Это два.
Когда переходили с BDE на ADO, поменял за день. Основной гемор - активно использовался TRxDataSet с его макросами.
Сейчас - не знаю, минут за 15 сменить можно. Только зачем?


 
Ega23 ©   (2013-08-01 09:22) [237]


> да так штоб аж до пены.


Ой, я вас умоляю, отправьте Розычу и Игорю по коньяку, чтобы они пару дней не заходили. И ТУзеру намекните, мол, не вытрут тему.
гОвны взбурлят через 15 минут стремительным домкратом.


 
разработчик   (2013-08-01 09:43) [238]

Зая, чтобы поменять компоненты доступа, должны быть очень веские причины.

Солдатик, вот тебе веская причина:

Ты успел к дедлайну.
Сделал первые инсталляции.
Обнаружился баг в провайдере.
Разрабы провайдера сказали что это не лечится.
Возможно они соврали, но времени у тебя нет.
Система уже запущена в боевую эксплуатацию.
И Адо было заменено на FIB

Достаточно веско?
Понятно зачем?


 
Ega23 ©   (2013-08-01 10:14) [239]


> И Адо было заменено на FIB
>
> Достаточно веско?
> Понятно зачем?


понятно, само-собой. Просто изначальный архитектор - дебил. Для IB-FB логично выглядят те же FIB+ или IB. Для MS-овских продуктов - ADO. И т.д.
Конечно можно и с FB через ADO работать. Но это нелогично.
И таки что за такой глюг в oledb, что ADO никак не может с FB работать?


 
sniknik ©   (2013-08-01 10:20) [240]

> что реплейсить надо типы данных
да что же ты все ограничиваешь и ограничиваешь... не дойдет до того, что только избранные буквы в комментариях меняются? а начинали то "наполеоновски".
ладно типы, пример из информикса (чтото подобное есть и в mssql, просто сейчас эта справка ближе)

CREATE DISTINCT TYPE mymoney AS NUMERIC(10, 2);
CREATE TABLE distinct_tab (mymoney_col mymoney);

объяснять?
тип как понимающие люди понимают может быть любой, вплоть до составных "рекордов" с описанием всех полей. ну и команды независимы, определение типа (как это обычно и делается) может быть вообще вне программы (на сервер или на базу делается)... оно типа на админах, они им "регулируют" нужные данные (бабушка надвое ... но тем не менее, максимум длинна строк без эксессов меняется).

ну вот тебе запрос на реплейс, который у тебя будет -
CREATE TABLE Test (AffshorType);

приведи пример для mssql-я / access, без фишек сервера (достать тип и "разложить" можно только ими)

или вот еще такой забавный тип - set(перечисление) ну будет он у тебя в явном виде в запросе, и что ты с ним сделаешь на не поддерживающем его сервере?

p.s. а еще обижается что его работу с базами назвали простой... она у тебя даже не простая походу, а примитивная. т.е. работы как таковой нет, есть база как хранилище простых данных, "плоских" таблиц. в этом случае даже непонятно чего у тебя 2 часа перевод занимает... должно бы простым переключением коннекта решаться.

> Достаточно веско?
> Понятно зачем?
логичнее было бы сменить провайдер. и быстрее и эффективнее.


 
sniknik ©   (2013-08-01 10:26) [241]

> что ADO никак не может с FB работать?
я работал... тут даже ветка была, спрашивал какие то особенности... IB 6.5 (желание заказчика), а изначально прога была под mssql и access, не сложная иначе бы не удалось совместить, но для перевода на что-то другое не ADO, оценили где-то в месяц времени, а "подшаманить" не стандартные места оставив ADO удалось в пару дней.


 
Ega23 ©   (2013-08-01 10:28) [242]

Ни одна СУБД не поддерживает скульный стандарт в полном объёме.
У одних inforation_schema отсутствует. У других - read uncommitted. У третьих сиквенсов нету. И т.д.
Хотя, вроде как, postgres вот всё по стандарту умеет. Впрочем, наверняка чего-то не умеет, вот стопудово.

Невозможен полный универсализм, даже сервер как просто тупое хранилище данных использовать. Ну а уж ежели серверная логика присутствует - всё, туши свет, сливай воду. А самая писечка - это когда в твоём приложении гетерогенные источники данных. Разом. :)


 
Ega23 ©   (2013-08-01 10:29) [243]


> а "подшаманить" не стандартные места оставив ADO удалось
> в пару дней.


Дык вот я и удивляюсь, что там такого этакого надо было навернуть, чтобы внезапно обнаружился глюк.


 
sniknik ©   (2013-08-01 11:04) [244]

> это когда в твоём приложении гетерогенные источники данных.
а как без них? основа. я практически с этого начал :)
типа
SELECT * INTO [Paradox 7.x;DATABASE=D:\].[TestTable#DB] FROM SourceTable
для access (связь с кассами, были такие, если кто помнит под doc-ом СуперМаг 4 называлось, обмен таблицами парадокс и/или битрив... (или битрив это другая касса/версия, не помню уже))

> что там такого этакого надо было навернуть, чтобы внезапно обнаружился глюк.
не думаю, что там реально был глюк... просто некоторых у людей "свербит" - не получилось сразу, значит все (начиная с винды) кривое, нужно поменять. с ADO это часто бывает, т.к. оно довольно сложное, многовариантная логика работы в зависимости от его настроек, а в "самобытных" зачастую только одна... хотя некоторые опосредованно тот же адо используют, настроив "под себя" (какие то компоненты тестировал, "сдак" кажется, встретился с таким поведением). и ведь пользуются спросом... компонент где просто настроили нужный вариант... ;(


 
разработчик   (2013-08-01 11:04) [245]

Удалено модератором


 
разработчик   (2013-08-01 11:07) [246]

Дык вот я и удивляюсь, что там такого этакого надо было навернуть, чтобы внезапно обнаружился глюк.

Удивляешься?
Фигово.
Кругозор узок или опыта мало.

банальный select * from dat_document where id = 666

есть блоб.

сегодня все нормально, а завтра на том же самом месте
"произошла ошибка во время многошаговой операции проверьте значения параметров бла бла бла....."


 
Ega23 ©   (2013-08-01 11:07) [247]


> Еще один умственно неторопливый пациент.


Зайчик, напиши универсальный механизм получения списка пользовательских таблиц для любой СУБД, поддерживающей SQL-ный интерфейс. Или ты - трепло. :)


 
разработчик   (2013-08-01 11:11) [248]

Напиши его сам, дятел деревянный.

Я его не писал.
Он мне не нужен.
Я не использую механизмы универсальности чтобы иметь возможность работать с разными БД.


 
Ega23 ©   (2013-08-01 11:13) [249]


> Я не использую механизмы универсальности чтобы иметь возможность
> работать с разными БД.


Потому, что их не существует.
Ну и тогда будь любезен, прокомментируй [245].


 
Пит   (2013-08-01 11:16) [250]

А мне интересно, почему многоуважаемый Олень так настойчиво пытается всех развести на агрессию.

С работы выгнали? Девушка бросила? Бухаешь третий день?


 
разработчик   (2013-08-01 11:23) [251]

Ну и тогда будь любезен, прокомментируй [245].

Комментирую.

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


 
Ega23 ©   (2013-08-01 11:29) [252]


> стопитсот раз было написано и переписано, что универсализм
> механизмов доступа не задействован и фишка совсем в другом,


Теперь переведи это на общечеловеческий язык.


 
разработчик   (2013-08-01 11:43) [253]

на человеческий это переводится так (диалог):

- у меня есть средство X чтобы работать с разными серверами БД
- ты дурак, средство Y не здесь не поможет.
- ты сам дурак, я использую не средство Y, я использую средство X


 
Ega23 ©   (2013-08-01 12:22) [254]

Удалено модератором
Примечание: Не стоит уподобляться Разработчику


 
разработчик   (2013-08-01 12:55) [255]

Удалено модератором


 
Ega23 ©   (2013-08-01 13:03) [256]

Удалено модератором
Примечание: Не заводись


 
разработчик   (2013-08-01 13:14) [257]

Удалено модератором


 
Пит   (2013-08-01 13:26) [258]

доктора по здоровью расстроили?

Не бывает такой депрессии просто так..


 
Ega23 ©   (2013-08-01 13:30) [259]

Очевидно человек расстроился невозможностью универсально выбрать структуру БД с абстрактного сервера.
Не расстраивайся, у тебя ещё немало различных разочарований в жизни. Махни рукой, выпей коньячку и шагай дальше, с гордо поднятой головой!


 
разработчик   (2013-08-01 14:13) [260]

Удалено модератором


 
Ega23 ©   (2013-08-01 14:18) [261]


> овощ пыжится быть кем-то

Дык прям с [1].


 
картман ©   (2013-08-01 14:27) [262]


> разработчик  

не посоветуешь надежную салфеточку для монитора, клавиатуры, стола, обоев, потолка, жены, детей и тещи?


 
разработчик   (2013-08-01 14:43) [263]

Удалено модератором
Примечание: На три дня, чтобы успокоился и подумал


 
Юрий Зотов ©   (2013-08-01 14:59) [264]

Какая высокоинтеллектуальная беседа! Душа наслаждается!


 
анонимус   (2013-08-01 15:04) [265]

Бамп годному треду


 
boriskb ©   (2013-08-01 15:19) [266]

А я почему то был уверен, что этим и кончится.
Жалко


 
разраб   (2013-08-01 16:13) [267]

Удалено модератором


 
Ega23 ©   (2013-08-01 16:15) [268]

Удалено модератором


 
имя   (2013-08-01 16:16) [269]

Удалено модератором


 
Kerk ©   (2013-08-01 17:00) [270]

Молодцы все. Все молодцы.


 
имя   (2013-08-01 17:39) [271]

Удалено модератором


 
Jeer ©   (2013-08-01 18:20) [272]

Удалено модератором



Страницы: 1 2 3 4 5 6 7 вся ветка

Форум: "Прочее";
Текущий архив: 2014.01.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.3 MB
Время: 0.01 c
1-1320150048
vlk32
2011-11-01 15:20
2014.01.19
delphi и обобщенное прораммирование


2-1363948120
ttt
2013-03-22 14:28
2014.01.19
Значения с плавающей точкой


15-1373539892
[ВладОшин]
2013-07-11 14:51
2014.01.19
нечеткий custom датасет


15-1375031178
Иксик
2013-07-28 21:06
2014.01.19
Илья Сегалович


4-1267675438
Алексей4105
2010-03-04 07:03
2014.01.19
Как узнать путь к процессу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский