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

Вниз

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

 
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]
>Есть те, кто пишет удовлетворительно и этого достаточно для решения предложенных, а не выдуманных задач.
с этим никто не спорил



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

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

Наверх





Память: 0.64 MB
Время: 0.012 c
2-1363937024
Вася
2013-03-22 11:23
2014.01.19
визуализация кода???


15-1374908638
Пит
2013-07-27 11:03
2014.01.19
Сумасшедший радиоуправляемый вертолет


1-1321104977
Yurikon
2011-11-12 17:36
2014.01.19
Генерация своих событий


1-1320674424
Vulko
2011-11-07 17:00
2014.01.19
Поделить отрезок на N неравных частей


15-1375013693
Дмитрий СС
2013-07-28 16:14
2014.01.19
Кран с электроприводом VS бистабильный клапан.





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