|
|
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 Ну, моя любимая БД - это IBM DB2. Самый развитый SQL и осознание потребностей трехзвенок :) Oracle, похоже, по привычке считает, что все приложения - двухзвенные. все проще, в оракле pl/sql уже лет 20 развивается и одна конструкция pl/sql часто и густо заменяет десяток строк любого языка апп-сервера. а то, что фаны дб2 любят трехзвенки - не секрет. аналог pl/sql там только появился, а до этого код на сервере приходилось реализовывать дедовским способом типа чистого С или кабола. sql/pl в db2 практически никто не использует, оно и понятно, разбираться в новом языке, который имеет лишь базовые конструкции и тучу нюансов при переносе на другую платформу никому не хочется. действительно проще взять какой-нить хибер и ипать мозг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:02 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
baracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:04 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm Рекомендую в материалах APIS этот вопрос посмотреть. API C S конечно же имеется ввиду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. на юзеров права и навешиваются. На предыдущей работе были юзеры в таблице, и таблица с правами, а коннект под одним. По разному бывает. Сейчас, например, не нужно вставлять проверки кругом на право доступа к объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:07 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. У нас тоже То не я писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm Это я к тому, что если Вы знаете внутренности MRP, то наверняка помните, что он конечно большой, но состоит из цепочки таких примитивов. Рекомендую в материалах APIS этот вопрос посмотреть. Из моих настольных книг в 90-е - Ландватер. Этот учебник хорош тем, что не изобилует ненужной в данном вопросе математикой, а обучает тому же самому с точки зрения пошаговой логики, которая прекрасно ложится на реляционную модель. Переводы лучше не читать, путаница в терминах и половина материала покоцана. Э, с пошаговой логикой там просто. Но там есть множественность выбора примитивов на каждом шаге. И для разных сущностей разные набор этих примитвов. И для разных переделов. И все это нужно динамически менять и выбирать. И пользователи, увы, очень любят добавлять свои эвристики и доработки алгоритмов планирования - так что все равно приходится алгоритмику генерации планов (с оптимизациями) делать очень гибкой. Это все делается, конечно - но чистым DML не обойтись, приходится использовать хранимки, T-SQL и т.п. P.S. А еще есть кошмар скользящего среднего и оптимизации закупок с выбором окна расчета скольжения. В общем, на любом универсальном языке это бы писалось на порядок проще и работало бы за миллисекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:09 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 И пользователи, увы, очень любят добавлять свои эвристики и доработки алгоритмов планирования - так что все равно приходится алгоритмику генерации планов (с оптимизациями) делать очень гибкой. Это все делается, конечно - но чистым DML не обойтись, приходится использовать хранимки, T-SQL и т.п. т.е. здесь у нас трехзвенка, здесь чуток хранимок, а это мы рыбу заворачивали интересный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! все проще, в оракле pl/sql уже лет 20 развивается и одна конструкция pl/sql часто и густо заменяет десяток строк любого языка апп-сервера. а то, что фаны дб2 любят трехзвенки - не секрет. аналог pl/sql там только появился, а до этого код на сервере приходилось реализовывать дедовским способом типа чистого С или кабола. sql/pl в db2 практически никто не использует, оно и понятно, разбираться в новом языке, который имеет лишь базовые конструкции и тучу нюансов при переносе на другую платформу никому не хочется. действительно проще взять какой-нить хибер и ипать мозг. Ну, Yo!, это же не серьезно, сам же все знаешь. И что хранимки на DB2 писались (давно) на C, потом еще на пяти языках (включая какой-то PLSQL подобный), сейчас вообще реализовали оракловый PL/SQL (приделанный по просьбе мигрирующих с Оракла). Впрочем, идеология DB2, насколько я понимаю, изначально предполагала, что бизнес-логику пишут на подходящем языке, вставляя туда SQL-операторы. Может быть и вызывая этот код прямо в контексте сервера - это уж как кому надо :) Кстати, а чем PL/SQL мощнее какой-нибудь Java? Приведи пример. P.S. Хибернейт (как и прочие ORM) - это зло. По крайней мере при высокой нагрузке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.! т.е. здесь у нас трехзвенка, здесь чуток хранимок, а это мы рыбу заворачивали интересный подход. В том проекте, где я делал MRP - увы, никакой трехзвенки, обычный клиент-сервер. Это было уже лет шесть назад, что-ли. Еще MS SQL 2000... Пара сотен таблиц (только на один модуль), тысячи хранимок. Ностальгия, переходящая в кошмар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:18 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 Кстати, а чем PL/SQL мощнее какой-нибудь Java? Приведи пример. в большинстве случаев кода меньше. ну и всякие bulk collect и forall, потом синтаксис проще (не нужно создавать объекты типа sqlcommand (или как он там уже) и биндить переменные) , а просто писать sql в процедуре и все. Но многие вещи конечно удобнее сделать в яве или вообще нельзя в pl/sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:23 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. Интранет? Корпоративная система? Небольшое число пользователей? Просто у меня в последних проектах (что накладывает отпечаток, угу), число пользователей системы далеко за 100K... Там все равно авторизацию на уровне БД не сделать. Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:28 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). М.б. просто не умеете?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:31 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3barrabasbaracsЭ, а что, у вас каждый пользователь системы имеет отдельную учетную запись в БД? И авторизуется прямо в БД? У нас да, БД доверяет авторизации ОСи. Интранет? Корпоративная система? Небольшое число пользователей? Просто у меня в последних проектах (что накладывает отпечаток, угу), число пользователей системы далеко за 100K... Там все равно авторизацию на уровне БД не сделать. Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). ясно что не инет, Сайт - один юзер, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:32 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
barrabas в большинстве случаев кода меньше. ну и всякие bulk collect и forall, Ну, тут бы я поспорил, сильно зависит от языка и задачи. Например, наследование и лямбды позволяют написать очень компактные алгоритмы :) потом синтаксис проще (не нужно создавать объекты типа sqlcommand (или как он там уже) и биндить переменные) , а просто писать sql в процедуре и все. Тут конечно :) Хотя если отделить DAO от BL в коде, то особо сложности синтаксиса не видишь. Ну и если использовать всяческий DB2 embedded sql, то там запросы тоже пишутся прямо в коде и биндинг не нужен(а потом работает препроцессор). Правда, я таким не пользовался :) А вообще, у меня как-то в последнее время число запросов к БД (различных) все сокращается и сокращается. Даже если сложная логика, сложные данные, разнообразная обработка - удается обходиться очень компактным DAO layer. И вряд ли это следствие задач - задачи то довольно разные (правда, почти все с приличной нагрузкой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:39 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
pkarklinDPH3Впрочем, в моих корпоративных системах тоже регулярно нужны были гибкие права, всяческие ограничения на колонки и отдельные строки по хитрым алгоритмам, так что средствами БД это не реализовать (ну, может быть через Oracle Vault, но слишком он дорого стоит). М.б. просто не умеете?! О, а расскажите, как. Обычная задача - дерево объектов. Операции модификации (для простоты) затрагивает только один объект. Операции просмотра - поддеревья, не положенное видеть нельзя. Права пользователю выдаются на вершины, права наследуются и перекрываются. Права зависят от времени суток и дня недели (по времени пользователя, а не сервера - они в разных временных поясах, да и пояса эти разные). Расписание меняется достаточно часто (до двух раз в день - легко). Но при этом по конкретной команде конкретному пользователю на короткое время могут давать не положенные ему права :) Объектов - сравнительно мало, где-то сотня тысяч. Пользователей - пара десятков, совсем несерьезно. Права - фактически индивидуальны. Схема несколько упрощена (там еще некоторые права выдавались автоматом при особых состояниях системы, например, по рекомендации модуля управления рисками). БД - ну, например, Oracle 10.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3А еще есть кошмар скользящего среднего и оптимизации закупок с выбором окна расчета скольжения. В общем, на любом универсальном языке это бы писалось на порядок проще и работало бы за миллисекунды. работало бы, писалось бы... а в чем разница между 1с и 1мс при подобном планировании? Мы же не MES реального времени говорим. Конечно, некоторые фрагменты среднего слоя используют и тот же T-SQL, если требуется. например: старый MS SQL2000 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:47 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3 И что хранимки на DB2 писались (давно) на C, потом еще на пяти языках уже перетиралось тут не раз, на С писалось у всех, но все постепенно перешли на следующую ступень - на языки 4GL. и только дб2 пропустил революцию и все кропал по старинке, в терминах оракла это завется технологией препроцессоров, говорят в оракле вымершая в 80-х годах прошлого столетия. поняв, что на дедовских технологиях далеко не уедешь ибм выкатил sql/pl где-то лет 10 назад, но в то время как раз была мода 3-tier и подавляющее большинство действительно так его и завет "какой-то PLSQL подобный" ... DPH3 Впрочем, идеология DB2, насколько я понимаю, изначально предполагала, что бизнес-логику пишут на подходящем языке, вставляя туда SQL-операторы. Может быть и вызывая этот код прямо в контексте сервера - это уж как кому надо :) да не умеет дб2 ту же жаву в контексте сервера пускать, только как fenced. уже два раза обсасывали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 17:48 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Объектов - сравнительно мало, где-то сотня тысяч. Пользователей - пара десятков, совсем несерьезно. Это имеет принципиальное значение?! К примеру: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. DPH3Права пользователю выдаются на вершины, права наследуются и перекрываются. Права зависят от времени суток и дня недели (по времени пользователя, а не сервера - они в разных временных поясах, да и пояса эти разные). Расписание меняется достаточно часто (до двух раз в день - легко). Но при этом по конкретной команде конкретному пользователю на короткое время могут давать не положенные ему права :) И... Какие, собственно, у Вас трудности, реализовать ACL средставами реляционной СУБД?! DPH3БД - ну, например, Oracle 10.1 Ну, как Вы поняли, у меня все это на MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:05 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
iscrafm работало бы, писалось бы... а в чем разница между 1с и 1мс при подобном планировании? Мы же не MES реального времени говорим. Конечно, некоторые фрагменты среднего слоя используют и тот же T-SQL, если требуется. например: Ну, у меня построение цепочки планов для компании на год на основании прогноза занимало до двух часов. А уточнение прогноза закупок - да, в 10 секунд помещался, хотя и повозился. Кстати, то же на MS SQL 2000 :) Там основные проблемы - в том, что план закупок еще требовал накладывания ограничений (по объему склада, по зависимости цены закупки от объема, по выбору поставщика среди альтернативных, по учету особенностей данного поставщика (разные возможные графики, разный разрыв между заказом и поставкой, разные цены, разные скидки, разные приоритеты, разные кванты доставки). И все это оптимизировать по эвристикам или перебором. Ну и требовалось, например, приделать к этому игру в "что, если" (если мы сейчас закажем то-то по особой скидочной цене, то как изменится общий бюджет закупок по товарному направлению) - а тут уже требовалась производительность. А, еще и перемещения между складами филиалов. И еще прогноз потребления считался разнообразно (разные алгоритмы вычисления среднего (скользящие с разными окнами, меняющиеся окна, смена алгоритма расчета на лету). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:06 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Там основные проблемы - в том, что план закупок еще требовал накладывания ограничений (по объему склада, по зависимости цены закупки от объема, по выбору поставщика среди альтернативных, по учету особенностей данного поставщика (разные возможные графики, разный разрыв между заказом и поставкой, разные цены, разные скидки, разные приоритеты, разные кванты доставки). И все это оптимизировать по эвристикам или перебором. Ну и требовалось, например, приделать к этому игру в "что, если" (если мы сейчас закажем то-то по особой скидочной цене, то как изменится общий бюджет закупок по товарному направлению) - а тут уже требовалась производительность. А, еще и перемещения между складами филиалов. И еще прогноз потребления считался разнообразно (разные алгоритмы вычисления среднего (скользящие с разными окнами, меняющиеся окна, смена алгоритма расчета на лету). Вы кого тут хотите этим удивить?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:08 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
pkarklin И... Какие, собственно, у Вас трудности, реализовать ACL средствами реляционной СУБД?! Кодом на SQL/T-SQL - практически никаких (ну, с деревьями чуть помучаться, но делал и не раз). Средствами администрирования БД и выставлением грантов на хранимые процедуры - боюсь, что никак. Тут-то речь шла о том, что использование хранимых процедур позволяет упростить контроль прав доступа. Иногда (если можно просто отгрантовать роли на уровне администратора БД) - это так. Но в моей практике встроенных возможностей не хватает, приходится писать код для авторизации. А тут уже разницы между средним уровнем и T-SQL не наблюдается (по крайней мере, в пользу TSQL). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:12 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
pkarklin Вы кого тут хотите этим удивить?! Да никого :) Просто как-то сомневаюсь, что это удобнее и быстрее делать на T-SQL, нежели чем на java :) По крайней мере, мне - точно не удобнее.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:14 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Кодом на SQL/T-SQL - практически никаких (ну, с деревьями чуть помучаться, но делал и не раз). Все прекрасно работает на "голом" транзакте. DPH3Но в моей практике встроенных возможностей не хватает, приходится писать код для авторизации. Да, приходится, но я проектирую необходимую модель и пишу его на T-SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:15 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DPH3Просто как-то сомневаюсь , что это удобнее и быстрее делать на T-SQL, нежели чем на java :) По крайней мере, мне - точно не удобнее .... Вот. Золотые слова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:16 |
|
||
|
использование хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yo.!sql/pl в db2 практически никто не использует, оно и понятно, разбираться в новом языке, который имеет лишь базовые конструкции и тучу нюансов при переносе на другую платформу никому не хочется. действительно проще взять какой-нить хибер и ипать мозг.Ой! То есть меня, например, практически не существует? Категорически не согласен! Появился SQL PL в 7-й, кажется, версии, то есть он не намного моложе Java, к примеру. Или молодую Джаву тоже использовать не надо? ;) По поводу "тучи нюансов при переносе на другую платформу" хотелось бы подробнее - я как-то всегда считал PL SQL единым для DB2 LUW, т.е. для практически всех Oracle-совместимых платформ (ну, кроме "совсем уже устаревших"(c) мейнфреймов и iSeries). Yo.!да не умеет дб2 ту же жаву в контексте сервера пускать, только как fenced. уже два раза обсасывали.Ну да, теряем на переключении контекста. Зато и не лицензируем ресурсы, используемые Java. Кстати, где-то там же обсасывали, что PL/SQL тоже выполняется отдельной вирт. машиной, не зря же native-компиляцию для него придумали. Она, конечно, лучше "вписана" в СУБД, чем Java, но спасает ли это от переключения контекстов? Кстати, о "лишь базовых конструкциях" - в последнем DB2 9.7 SQL PL в части обработки данных в БД функционально ничем не хуже PL/SQL. А остальное, ИМХО, всяко лучше на Java писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2009, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36280699&tid=1552871]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 143ms |

| 0 / 0 |
