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

Вниз

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

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

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

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

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

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


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


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

я такой)

Абстра́кция (от лат. 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 часа перевод занимает... должно бы простым переключением коннекта решаться.

> Достаточно веско?
> Понятно зачем?
логичнее было бы сменить провайдер. и быстрее и эффективнее.



Страницы: 1 2 3 4 5 6 7 вся ветка

Форум: "Прочее";
Текущий архив: 2014.01.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.08 MB
Время: 0.035 c
1-1320150048
vlk32
2011-11-01 15:20
2014.01.19
delphi и обобщенное прораммирование


15-1375302603
Юрий
2013-08-01 00:30
2014.01.19
С днем рождения ! 1 августа 2013 четверг


15-1375303030
KilkennyCat
2013-08-01 00:37
2014.01.19
Просьба. Сделать хорошо Virtual TreeView


15-1374760428
DevilDevil
2013-07-25 17:53
2014.01.19
Интересная задача. Остаток от деления умножением


15-1375037011
TUser
2013-07-28 22:43
2014.01.19
Внедорожник под управлением Windows





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский