Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ORM vs PL/SQL, логика в БД или в приложении 
:(
    Опции темы
LSD
Дата 29.7.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  29.7.2011,  15:39 Найти цитируемый пост)
Ну это же твой наборос.

Взялся бросать - не говори что не дюж.

Набрасываю: в СУБД нельзя по человечески провести интеграционное и юнит тестирование, потому держать логику в СУБД ацтой smile 



Цитата(Zloxa @  29.7.2011,  15:39 Найти цитируемый пост)
Емнип в этой теме в качестве примера было упомянуто четыре примера прикладной логики. Проведение документа, валидация документа, валидация корректности номера банковской карты, кэширование запроса привелегий пользователя.

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

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 29.7.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



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

Это сообщение отредактировал(а) Zloxa - 29.7.2011, 14:55


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 29.7.2011, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  29.7.2011,  15:54 Найти цитируемый пост)
я не в состоянии оцнить те недостатки,  о которых ты говоришь, в виду не понимания преимуществ, о которых ты умалчиваешь

Зачем нужны юнит тесты, часть 1
Зачем нужны юнит тесты, часть 2


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 29.7.2011, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



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

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

Я совсем не понимаю, о чем ты говоришь, когда говоришь что тестировать возможности нет.

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

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


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
k0rvin
Дата 30.7.2011, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Zloxa @ 29.7.2011,  22:18)
Ну и немного скеписа. Любое юнит тестирование - плохое тестирование. Оно вскрывает только проблемы, предугадываемые разработчиком, а они представляют наименьший интерес.

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


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Zloxa
Дата 30.7.2011, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(k0rvin @  30.7.2011,  00:31 Найти цитируемый пост)
юнит-тесты пишет не разработчик модуля. 

Да, это выход. И такой подход одинаково применим как к прикадной логике на pl/sql, так и к логике на жаве.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Zloxa
Дата 30.7.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



полуоффтоп.

LSD, не можешь подсказать, платформа жавы реализует механизм отслеживания взаимных блокировок? Что-то, на вскидку, не могу припомнить упоминания о таком. Он, имхо, жизненно необходим когда разраб прикладной логики заберет на себя рализацию изоляции транзакций.

И еще. Поможет ли инструментарий юнит тестов, дать заключение о корректности поведения тестирования модуля в конкурентной среде?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 1.8.2011, 11:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  29.7.2011,  23:18 Найти цитируемый пост)
Я совсем не понимаю, о чем ты говоришь, когда говоришь что тестировать возможности нет.

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



Цитата(Zloxa @  29.7.2011,  23:18 Найти цитируемый пост)
Ну и немного скеписа. Любое юнит тестирование - плохое тестирование. Оно вскрывает только проблемы, предугадываемые разработчиком, а они представляют наименьший интерес. При тестировании как раз таки интересно то, что не поедусмотрел разработчик. Потому лучшее тестирование - тестирование, в котором разработчик не принимает участия.

И еще. Поможет ли инструментарий юнит тестов, дать заключение о корректности поведения тестирования модуля в конкурентной среде?

Ты не правильно понимаешь суть юнит тестирования. Юнит тестирование не отменяет интеграционного и user acceptance testing, а просто дополняет его. Юнит тест тестирует маленький функциональный компонент (например класс) в изолированной среде, на предмет выполнения этим компонентом формального контракта. Смысл юнит тестов, это раннее обнаружение отклонений поведения компонента от контракта. И поэтому юнит тесты обычно запускаются во время сборки проекта.

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




Цитата(Zloxa @  30.7.2011,  13:57 Найти цитируемый пост)
LSD, не можешь подсказать, платформа жавы реализует механизм отслеживания взаимных блокировок? Что-то, на вскидку, не могу припомнить упоминания о таком. Он, имхо, жизненно необходим когда разраб прикладной логики заберет на себя рализацию изоляции транзакций.

Я вообще не понимаю о чем ты smile Приведи пример.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 1.8.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  1.8.2011,  11:19 Найти цитируемый пост)
Я спрашивал как это реализуется, 

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

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

Цитата(LSD @  1.8.2011,  11:19 Найти цитируемый пост)
Я вообще не понимаю о чем ты  Приведи пример. 

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

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


Это сообщение отредактировал(а) Zloxa - 1.8.2011, 12:37


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 1.8.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  1.8.2011,  13:26 Найти цитируемый пост)
Самый простой пример взаимной блокировки - когда процесс1, удерживающий блокировку ресурса А пытается захватить ресурс Б, удерживаемый процессом 2, который в то же самое время пытается захватить ресурс А. 

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

Потоки JVM не убивает, но дедлоки детектит и можно программно их обнаружить (и прибить, если захочется).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 4.7.2013, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  17.11.2010,  14:13 Найти цитируемый пост)
3. Кэширование эффективно не сделаешь.

Цитата(LSD @  6.12.2010,  21:32 Найти цитируемый пост)
пример: есть система управления правами типа Oracle Entitlements Server, у нас есть юзер, права и роли. Чаще всего нам будет нужно для пользователя получить список его прав и проверить, есть ли у него право на некое действие/объект, так что кешировать связку человек-права вполне стоит. 


стыдно признаться, но про result_cashe узнал лишь недавно.

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

Мне кажется что эта фича аккурат для твоего примера.

Это сообщение отредактировал(а) Zloxa - 4.7.2013, 15:39


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
dobrolub
Дата 4.7.2013, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: нет
Всего: 16



При реализации навороченных исчислений на базе данных оракл или другой, лучшим выбором будет реализация с помощью встроенного в базу данных инструмента, такого как pl/sql или java в виде Stored Procedures. На оракл, хранимые процедуры можно писать и на Java. Производительность системы написанной с помощью хранимых процедур будет более высокой за счёт того, что код и данные будут на одной и той-же машине. Мне приходилось работать с системами где было необходимо реализовать вычисление различных коэффициентов и статистики на основе данных в таблицах. Перенос логики в PL/SQL в десятки раз ускорил операции. Когда код начали крутить на онлайновой системе, DBA не могли поверить, что расчёты стали выполнятся мгновенно. Исполнение кода процедур внутри процесса базы данных очень сильно ускоряет расчёты. И не важно на java написана процедура или на PL/SQL. 

Что-же касается ORM, то он хорош для CRUD операций с клиентских машин или веб-серверов. Делать системы сложных расчётов на ORM - это стрелять себе в ногу.
PM   Вверх
serger
Дата 5.7.2013, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



dobrolub, пардон, ко.  smile 


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
LSD
Дата 5.7.2013, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  4.7.2013,  16:39 Найти цитируемый пост)
Мне кажется что эта фича аккурат для твоего примера.

Я в основном говорил про im memory cache, не дисковый. Т.е. поднимаем сотню дешевы серверов которые в памяти держат данные и отдают по запросу.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 5.7.2013, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(LSD @  5.7.2013,  11:28 Найти цитируемый пост)
Я в основном говорил про im memory cache, не дисковый.

Это и есть инмемори.  В SGA инстанса.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0953 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.