Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
В этом форму часто встречаются топики по поводу возможностей тех или иных серверов, сравнения этих возможностей, стонов "Хочу вот такую фичу" и злорадствований "У нас это есть, а у вас нету!". А не поговорить ли нам и возможностях, которые наоборот - есть, но не нужны, мешают и т.п.? Я работаю с MS SQL Server 2000. Мне мешают: 1. Журналирование DML (частично мешают). 2. Система безопасности (в теории может помешать, если мне взбредёт в голову перейти на 3-х звенку) 3. Она же - при выполнении exec (<sql>) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2004, 18:30 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
А сама СУБД не мешает? А то понатолкали, понимаешь, возможностей дурацких, да и место она на диске много занимает. Сотри-ка лучше эту гадскую СУБД и поставь-ка Quake или Tetris. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 06:44 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Да, если Вам мешает то, ради чего (в частности) СУБД создавались (система безопасности), то, возможно, стоит подумать о смене средств разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 07:29 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
авторЯ работаю с MS SQL Server 2000. Мне мешают: 1. Журналирование DML (частично мешают). 2. Система безопасности (в теории может помешать, если мне взбредёт в голову перейти на 3-х звенку) 3. Она же - при выполнении exec (<sql>) dbf спасет отца русской демократии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2004, 10:12 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
2All нет, СУБД мне не мешает, и dbf мен не спасёт. Давайте по пунктам. 1. Журналирование. Стоит простая задача: посчитать сальдо по лицевым счетам. Входные данные: Сальдо входящее, начисления, оплаты. Можно написать запрос вида Код: plaintext 1. 2. 3. 4. 5. 6. Мощность "Остатки" ~ 500000, "начисления" ~4500000 (за месяц), Оплата ~450000 (за месяц). Считать поэтому приходиться небольщими порциями, используя временные таблицы. поскольку вставка и удаление из временных таблиц логгируется - это происходит несколько медленнее, чем было бы без логгирования. Более того, существуют гораздо сложные расчеты, при вычислении которых нельзя обойтись простой выборкой, а необходимо использовать промежуточные результаты. Согласен, вполне возможно, что без журналирования можно было бы получить выигрышь "всего" 10-15%... но это тоже немало 2. Система безопасности. Предположим, у меня 3-х звенка: Сервер БД, сервер приложений, клиент. К серверу БД гарантировано ходит только Сервер приложений. Безопасность опять-таки обеспечивается средним слоем. Однако, при каждом обращении среднего слоя к СУБД происходит проверка прав и т.п., что, ессно, снижает общую производительность. Согласен, ненамного (возможно ненамного, без системы безопасности никто ведь не пробовал). 3. права при выполнении - у меня широко используются выборки с переменными фильтрами. В местном FAQ рекомендуют реализовывать их с использованием DSQL. Это значит, что пользователь должен иметь права на select на все интересщющи таблицы/view. Не так уж и важно это... но всё-таки хотелось бы вот так: Exce(<sql>) as <user> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 12:25 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
2locky Oracle: 1. alter table nologging ... 3. To enable code to run with Invoker rights, an AUTHID clause needs to be used before the IS or AS keyword in the routine header. The AUTHID clause tells Oracle whether the routine is to be run with the invoker rights (CURRENT_USER), or with the Owner rights (DEFINER). If you do not specify this clause, Oracle by default assumes it to be AUTHID DEFINER. а может все же "супер возможности" нужны ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 13:26 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Система безопасности всегда мешает, но надо ей учится пользоваться. И кроме того, в SQL Server есть такой пользователь как guest... Заведи его, дай ему права админа и с безопасностью будет полный конец... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 13:38 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
1. А в сторону OLAP смотреть не пробовали? А денормализовать (хотя бы остатки хранить) ? Если используете временные таблицы - попробуёте сделать их постоянными (тогда не будет логирования DML операций - их просто не будет). 2. Ну это просто смешно.. Поскольку сервер что-то там каждый раз проверяет - давайте вообще от безопасности откажемся.... А если в Вашу базу будет ходить не один клиент (аппликейшн-сервер), а несколько? В каждом систему безопасности городить? Так это дольше будет работать.. locky3. права при выполнении - у меня широко используются выборки с переменными фильтрами. В местном FAQ рекомендуют реализовывать их с использованием DSQL Необязательно. Набор фильтров хоть и велик, но конечен. Определите его и напишите выборку на каждый случай комбинации фильтров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 13:49 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
2Павел 1. В сторону OLAP? Смотрел. Только сводные данные по мощности равны 80% исходных. Остатки храним, а как-же. DML - data manipulation l (не путать с DDL - data definition), т.е. insert, update, delete.... у меня не используются temporary tables, только постоянные (правда, размещенные в tempdb) - процедуры имеют свойство обмениваться данными, так что... 2.А вот не будет у меня в базу ходить никто, кроме сервера приложений! Не надо говорить "А вдруг..." Если такое случится - ладно, включу. Но дайте возможность выключить! 3. Исходные данные: 26 аттрибутов, поиск ведется по комбинациям из 12-ти параметров (справочник лицевых счетов). Сколько комбинаций насчитаем? Да, кстати... Еще предустановленные фильтры, как же без них... А всего справочников 65, в среднем по 5-6 параметров. Сколько мне процедур написать? Вариантов? А производительность их какова будет, а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2004, 19:45 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
а может сервер по быстрее купить? не один а 8 процов и памяти не 512 М а несколько Gb и RAID10 вместо макстор в 5000 оборотов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 01:37 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
А вот не будет у меня в базу ходить никто, кроме сервера приложений! А Вася Пупкин поставит себе EM и ага... Не по злобе, просто из любопытства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 07:58 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Да, DDL-DML, конечно. Звиняйте, обдёрнулся. Перечитал Ваш пост с условиями задачи. Типичный ETL в урезанном виде. Проблема безусловно непростая, но отменять журналирование даже для промежуточных операций - большой оптимизм с Вашей стороны. Какая будет польза от несогласованных результатов промежуточных вычислений? Что с ними делать? Только выкинуть и начать всё заново. locky2.А вот не будет у меня в базу ходить никто, кроме сервера приложений! Не надо говорить "А вдруг..." Если такое случится - ладно, включу. Но дайте возможность выключить! Фигню говорите, дорогой товарищ. База данных является корпаративным ресурсом, обеспечивающим хранение, обработку и безопасность . Делать БД с прицелом только на одно приложение - глупо. Эти данные потом захотят использовать самыми неожиданными способами, если конечно догадаются.... locky3. Исходные данные: 26 аттрибутов, поиск ведется по комбинациям из 12-ти параметров (справочник лицевых счетов). Сколько комбинаций насчитаем? Да, кстати... Еще предустановленные фильтры, как же без них... А всего справочников 65, в среднем по 5-6 параметров. Сколько мне процедур написать? Вариантов? А производительность их какова будет, а? Нормальная будет производительность. Писал я отчёты для бухгалтерских систем, не напугаешь меня этим. На Вашем месте я бы провёл инвентаризацию и анализ часто выполняемых запросов. И исходя из этого моделировал отчётные формы. С фиксированным набором полей ввода для фильтрации/группировки и форматом вывода. А для чересчур привередливых пользователей - универсальная отчётная форма. Если такую вообще можно себе вообразить... Вам правильно советуют прикупить железо. То, что для достижения бОльшей производительности Вы хотите отказаться от самых существенных достоинств СУБД наводит на мысль, что либо Вы неправильно её используете, либо выжали всё, что возможно из имеющихся ресурсов. Второе вероятней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 09:20 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
2Lepsik Сервер - 2 камня, 2Gb памяти (max для MS SQL Server 2000 SE). Можно купить новый - но это дороже, причем, если мне не изменяет память, значительно. 2f_w_p А вот что Вася Пупкин сможет поставить и что не сможет поставит.... и будет ли у него доступ к подсети, в которой стоит SQL... это решает сисадмин, и я думаю, что он решит правильно. 2Павел. А с чего вы взяли, что результат будет несогласован? Исходя из соображений, что при расчете отчета обязательно произойдет ошибка? Ну, пока такого не было. А если такое случится... ну что, начнут заново. Кто Вам сказал, что база данных - корпоративный ресурс?? Что на этом сервере кроме одного приложения еще что-то будет крутится? В том случае, что я описывал - имеется ОДНО приложение, сильно нагружающее сервер БД. Ставить на этот же сервер что-либо еще - просто глупо. Тем более, что в данном случае сервер БД используется как надежное хранилище данных для конкретного приложения, и не более. Кстати, отчетные формы не моделируются мной :-). Есть утвержденный перечень отчетных форм, четко описанных... Их и надо реализовывать. А универсальная отчетная форма... ну, на досуге попробуйте придумать универсальную форму, позволяющую построить отчет по льготникам, начислениям, перерасчетам, оплатам, субсидиям, возмещениям, пеням (по всем возможным разрезам аналитики)... И, кстати, я нигде не писал, что в отчетах надо делать поиск и т.д. там не надо. Искать надо в справочниках. Вот там это должно быть быстро. По поводу DSQL - попробуйте мне доказать, что Код: plaintext 1. 2. 3. выполняется быстрее, чем Код: plaintext 1. А теперь тоже самое для связки 12 таблиц. Буду рад примерам. Железо прикуплю, обязательно. Деньги в студию! Нету? Я так и думал. И у меня нету. И у заказчика нету. Из ресурсов железа я еще не всё выжал, но надо же иметь какой-то запас. P.S. Кстати, обратите внимание: в исходном сообщении об отказе от системы безопасности было написано "В теории". Т.е. ПОКА мне это не надо, но я могу представить себе ситуацию, когда мне такое понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 11:25 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
В Oracle параметризованный запрос выполняется СУЩЕСТВЕННО быстрее своего аналога с литералами в том случае, если он ЧАСТО вызывается с РАЗНЫМИ параметрами. Если параметр ЧАСТО одинаков, лучше использовать литерал, так как это дает дополнительную информацию оптимизатору. Издержками на передачу параметров можно пренебречь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 11:48 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
права при выполнении - у меня широко используются выборки с переменными фильтрами. В местном FAQ рекомендуют реализовывать их с использованием DSQL. Это значит, что пользователь должен иметь права на select на все интересщющи таблицы/view. Не так уж и важно это... но всё-таки хотелось бы вот так: Exce(<sql>) as <user> Для сервера приложений вполне нормально, что он _сам_ генерит SQL запросы, т.е использование ХП не нужно (это - один из вариантов DSQL, кстати). Таким образом, никаких контекстов T-SQL для EXEC не будет. Насчет доступа к данным и распределения прав юзеров, так тут какое-то противоречие я вижу: -- система безопасности не нужна -- не хочу, чтобы пользователь имел права на select из всех таблиц. Если исходить из того, что система безопасности все-таки нужна, то можно вполне грамотно ею воспользоваться, а именно: -- Авторизацию пользователей проводить на уровне сервера приложений -- Сам сервер приложений подключить к БД с единственной учетной записью, созданной специально для него -- Для этой записи присвоить статус application role, что не позволит ее использовать вне сервера приложения ------------ Best regards, Jimmy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 12:01 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
2Jimmy Конечно, противоречие, если рассматривать эти 2 пожелания совместно. Я хочу чтобы можно было и отключить систему безопасности, и выполнять DSQL под указанными правами. Подключение сервера приложений по Application Role решительно ничего не меняет - права всё равно будут проверятся и на это будет тратится драгоценное время. 2Gluk. В MS SQL тоже, но только в том случае, если при разных значениях параметров генерируется один и тот же план запроса. Если же при разных значениях параметров могут быть сгенерированы разные оптимальные планы.... тут уж увы, велика вероятность, что предварительно скэшированный план не является оптимальным для данного случая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 12:37 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
кеширование спасает от hard parse, а не планов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 13:00 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Поэтому при наличии параметров не строится никаких предположений о их значениях. hard parse нагружает Oracle настолько сильно, что в общем случае это выгоднее чем каждый раз составлять выгодный план для заданного значения параметров. Я уже сказал, что иногда выгоднее оставить литерал, но это скорее исключения чем правило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 13:09 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Подключение сервера приложений по Application Role решительно ничего не меняет - права всё равно будут проверятся и на это будет тратится драгоценное время. ??????? Пояснить можно? Время чего и на что ? ------------ Best regards, Jimmy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 13:30 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
To Gluk (Kazan) Насколько я знаю MS SQL там всё точно так же. Использование параметров - хорошая (и правильная) практика. lockyКто Вам сказал, что база данных - корпоративный ресурс?? Ну если это не так, то нафига такая БД вообще нужна? Если это не БД, а хранилище данных для конкретного приложения, и не более - храните всё в реестре. Тут кстати скорее всего и кроется источник всех Ваших проблем - Вы неверно трактуете БД, неправильно её используете. Я, конечно, извиняюсь, Вы имеете право обидеться и обозвать меня всякими словами, но, при всём моём уважении к Вам, это скорее всего так. Взгляд на БД как на корпаративный ресурс поможет не только лучше выстроить бизнес-процессы, но и (при необходимости) выбить деньги под новое железо. Траст ми. lockyКстати, отчетные формы не моделируются мной :-). Есть утвержденный перечень отчетных форм, четко описанных... Их и надо реализовывать. Вот и замечательно! Вам же меньше работы (анализ требований уже выполнен хотя бы частично). Универсальная отчётная форма - безусловно абсурд, не стоит о ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 13:41 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Мешает SQL - снесите нафиг. авторПодключение сервера приложений по Application Role решительно ничего не меняет - права всё равно будут проверятся и на это будет тратится драгоценное время. С чего Вы взяли? авторА вот что Вася Пупкин сможет поставить и что не сможет поставит.... и будет ли у него доступ к подсети, в которой стоит SQL... это решает сисадмин, и я думаю, что он решит правильно. Полагаться на других - глупо. Если сисадмин ошибется и кто-то сделает кирдык данным(например лицо, имеющее доступ в подсеть, не обязательно это ошибка сисадмина) и крайним будет DBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 17:56 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
2Jimmy & Гавриленко С.А. Время чего и на что будет тратиться? Давайте попробуем поглядеть Код: plaintext 1. Упрощенно: 1. Проверяем, что у пользователя или его группы есть доступ к табличке SomeTable на select 2. Проверяем, что у пользователя или его группы нет запрета на select из SomeTable 3. Аналогично для каждой из столбцов таблицы SomeTable 4. Если все права есть - выбираем. Если мне память не изменяет (а может, если не прав - поправьте) разрешения храняться в sysprotects. Индексы есть? Нету? Будем сканить. Есть на что время потратить? С моей точки зрения, есть. Согласен, данная проверка происходит достаточно быстро. При единичном запросе. Усложним. Запросов стало N. Нет, N мало, пусть M. Умножаем время проверки X на количество запросов M - получаем Z секунд времени, потраченного на НЕНУЖНУЮ мне функциональность. 2Павел. Сама по себе БД - не ресурс, ресурс - это информация, предоставляемая моим приложением. Да, можно хранить всё в реестре :-) но, во первых, мало места в йём, во вторых медленно, в третьих - ненадежно... и т.д. Да, БД - хранилище, но всё-ж таки достаточно интеллектуальное. 2Гавриленко С.А. Я говорил, что SQL мешает? Никогда такого не было, да и не скажу этого в будущем. Полагаться на других... Дык ведь приходится... Полагаемся на производителя железа - RAID должен правильно считать контрольные суммы... На производителя софта - транзакции обладают свойствами ACID... Полагаемся на сисадмина - софт настроен правильно... полагаемся на охрану - серверная закрыта, опечатана, доступ в неё строго ограничен... Как же без этого? Самому всё делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2004, 20:49 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
lockyСама по себе БД - не ресурс, ресурс - это информация, предоставляемая моим приложением. Да, можно хранить всё в реестре :-) но, во первых, мало места в йём, во вторых медленно, в третьих - ненадежно... и т.д. Да, БД - хранилище, но всё-ж таки достаточно интеллектуальное. Почему непремено вашим приложением? А другие приложения, которые хотят пользовать эту информацию - должны ходить через ваше приложение или накапливть ту же информацию? Реестр - ненадёжно. Угу. Давайте теперь подумаем чем обеспечивается надёжность в СУБД? Правильно - именно тем, от чего Вы хотите отказаться. Двужфазная фиксация, журналирование и система безопасности. Вперёд - в реестр! Вы не там ищете ресурсы для увеличения производительности. Подумайте об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2004, 06:18 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
Уважаемый Locky. К сожалению, пока все ваши рассуждения на тему снижения производительности системы из-за (1) проверок безопасности и (2) журналирования не подкреплены цифрами. Все это напоминает разговор ни о чем. Разумеется, логика подсказывает, что эти факторы несколько замедляют работу (особенно журналирование). Однако насколько? Вы не думали, что возможно, сражаетесь с ветряными мельницами? Что эффект от полного устранения этих "мешающих" вам факторов будет хоть сколько-то заметен при вот таких-то и таких-то реальных условиях работы вашей системы. Опять-таки, гипотетической системы ( "может помешать, если мне взбредёт в голову" и т.п. ). А народ тут тратит время, спорит... Смотрится все это довольно забавно, но и печально, увы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2004, 06:24 |
|
||
|
О ненужных возможностях
|
|||
|---|---|---|---|
|
#18+
А вот что Вася Пупкин сможет поставить и что не сможет поставит.... и будет ли у него доступ к подсети, в которой стоит SQL... это решает сисадмин, и я думаю, что он решит правильно. Т.е. предполагается, что сервер БД и сервер приложений в разных подсетях? И что в подсети где стоит SQL сервер никаких пупкиных нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2004, 08:22 |
|
||
|
|

start [/forum/topic.php?fid=35&tid=1554142]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
19ms |
get forum data: |
2ms |
get page messages: |
127ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 477ms |

| 0 / 0 |
