powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тонкий или толстый клиент
25 сообщений из 217, страница 6 из 9
Тонкий или толстый клиент
    #34636581
atv_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача зарплаты при соответствующем :) проектировании и реализации грубо тупо выполняется последовательным выполнением запросов (массовым запросам так вообще Бог велел на серве выполняться)
Изменения логики в большинстве своем реализуются без изменения клиентской части
Потому тащить расчеты на клиента смысла не вижу. Было бы познавательно послушать примеры необходимости в оном
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636618
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab Alex_Toms
При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.



В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4.
Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.В MSSQL всё так, как описал Alex_Toms. Если нужно чтобы план выполнения ХП при каждом запуске строился заново, то это можно указать дополнительной "галочкой".

mcureenab, ты бы хоть книжку какую прочитал бы, перед тем как тут выступать. Рекомендую начать с этого .
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636740
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ржунимагу

Наконец-то за последние 3 месяца появилось желание прийти на sql.ru, чтоюы посмеяться

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

И все же расскажи, что за трава - сорт необычный, контрабанда? :))

Продолжай, запасся чипсами, пивом и деффками

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636875
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К mcureenab Alex_Toms
При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.



В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4.
Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.В MSSQL всё так, как описал Alex_Toms. Если нужно чтобы план выполнения ХП при каждом запуске строился заново, то это можно указать дополнительной "галочкой".


Что-то мне кажется, что вы о разных вещах говорите.
Не знаю как в MSSQL, но в Oracle возвращение данных с помощью ХП - это два запроса вместо одного. Первый запрос - это собственно вызов ХП, второй - select, написанный внутри ХП. Ну так вот выполнение первого из этих запросов требует ровно тех-же действий, что и выполнение обычного select (правда чем у Alex_Toms различаются п.1 и п.2 я не понял). Ну а второй запрос (тот что внутри ХП), естественно, уже скомпилирован. А кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше.

Так неужели MSSQL получив строку с именем процедуры от клиента, не делает ее анализа? Хотя бы наличие такой процедуры он должен проверить? Или он сразу эту строку "выполняет"?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636925
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyА кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше.По моему да, точно не помню. У меня статистика как правило одинаковая. Для меня это не актуально.

Bogdanov AndreyТак неужели MSSQL получив строку с именем процедуры от клиента, не делает ее анализа? Хотя бы наличие такой процедуры он должен проверить? Или он сразу эту строку "выполняет"?Можно поставить "галочку", чтобы он её каждый раз перекомпилировал. По умолчанию она не стоит.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636929
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯМожно поставить "галочку", чтобы он её каждый раз перекомпилировал. По умолчанию она не стоит.Ну и вручную можно установить признак, чтобы при следующем запуске процедура перекомпилировалась.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637043
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atv_13Потому тащить расчеты на клиента смысла не вижу.
Смысл очень простой - разгрузить процессоры сервера БД.(алтернатива - добавлять процессоры, но тогда перестанет справляться ОС)
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637073
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TomsНа сколько я правильно помню, старый добрый Access запросы всё же выполнять не мог, их за него выполнял механизм Jet. А почему всё это работало полностью на клиенте. Всё очень просто, при инсталяции офиса, Jet автоматом садится. И при работе с ADO рекомендуют выбирать для работы с MDB именно Jet с ним выше скорость, и поэтому функции он может выполнить которые есть только в Access.Может старый аксес и не умел выполнять, но современный - вполне адекватно реагирует на SQL.

по поводу того, что Jet - это сервер. Это неверно.
Jet - это библиотека, которая подключается к программе.

Точно так же как в старые времена, когда не было windows - была куча оконных графических и не очень графических библиотек, используя которые програмист мог писать свой интерфейс.
Библиотеки эти работали непосредственно с видеокартами минуя всякие ОС.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637074
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>tygra ... Ржунимагу
А почему собственно?
SQL server строит выборку состоящую из последовательности нескольких таблиц и передаёт её серверу приложения, который преобразует её в формат DataSet. В DataSet имею возможность напрямую получить доступ к значению любого поля, любой строки, любой таблицы.
Т.е. вполне допустима проверка:
если (<поле k><строки j><таблицы i>) истина, то ...
Предполагается, что DataSet размещается в оперативной памяти СП.
Я не уверен, что в среде SQL сервера подобные операции будут идти быстрее, да и даеко не все работают с Oracle.

С уважением, Владимир.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637155
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевЯ не уверен, что в среде SQL сервера подобные операции будут идти быстрее, да и даеко не все работают с Oracle.Вот именно потому что, немногие работают с Ораклом - эти многие думают, что на клиенте подобные операции будут быстрее :)

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

PS: есть такая библиотечка в дельфях - EhLib. позволяет в гридах делать фильтрацию на клиенте с помощью языка условий, задаваемого пользователем.
Оч удобно!
но когда количество принимаемых данных стало большим - эти гриды стали просто захлебываться перед фильтрацией.
При добавлении фильтрации на сервере - все стало летать.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637163
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевПредполагается, что DataSet размещается в оперативной памяти СП. Я не уверен, что в среде SQL сервера подобные операции будут идти быстрееDataSet, это который из ADO.Net? А не настораживает, что там managed-среда? Проверка границ массивов и контроль типов и прочее... Вы серьёзно полагаете, что там будет работать быстрее?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637196
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyВот именно потому что, немногие работают с Ораклом - эти многие думают, что на клиенте подобные операции будут быстрееПапрашу не обобщать... :-)) MSSQL forever... :-))

модСмысл очень простой - разгрузить процессоры сервера БДДавайте вообще уберём процессор с сервера, оставим один HDD. :-))
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637276
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть не в тему, но все-таки.
Ни для кого не секрет, что SQL-ная версия 1С 7.7 реализована в виде толстого клиента, при этом мы имеем возможность создания и использования в ее интерфейсе запросов в самом SQL-сервере, т.е. как тонкого клиента.
так вот практика: время создания специфического отчета средствами самого клиента, а там были и расчеты и группировки и т.д., резко колебалась и естественно зависела от компьютера на котором он запускался, от минуты до 20 минут, после оформления его в виде вызываемой ХП, пользователь получал его в течении 20 секунд и при этом не было зависимости от компьютера пользователя, по крайней мере на глаз...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637390
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДавайте вообще уберём процессор с сервера, оставим один HDD. :-))
Который из 32-х ?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637406
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод Алексей КДавайте вообще уберём процессор с сервера, оставим один HDD. :-))
Который из 32-х ?Все.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637640
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К wrote:
> Давайте вообще уберём процессор с сервера, оставим один HDD. :-))
>
>
> Который из 32-х ?
>
> Все.
зачем? Ведь все данные и так уже локально скэшированы на клиента...
Причем у каждого клиента - своя, уникальная копия общих данных, не
имеющих ничего общего с данными других клиентов!
Долой уравниловку!
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637882
BillyKidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчёт расчёта зарплаты на клиенте хотел поделиться опытом эксплуатации одной системы.
Случай классический - толстый клиент и файл-серверная БД. Вся логика расчётов (а она несколько специфична для угледобывающей отрасли, поскольку количество видо начислений, удержаний гораздо больше среднего по другим отраслям) вшита в клиентское приложение.
Итак, расчёт зарплаты для 12000 сотрудников длится около 40 минут. Вышедшая новая версия продукта хранит данные на MSSQL, но на производительности это никак не сказывается (точнее, сказывается, но в худшую сторону), поскольку обработка данных по-прежнему на клиенте.
Конечно, возможно, что низкая производительность обусловлена кривыми руками разработчиков, но простейшие эксперименты с переносом расчётов на сервер в виде ХП, показывают увеличение производительности на порядок при той-же численности народа и сложности расчётов. При этом не производилась сколь-нибудь серьёзная оптимизация зпросов.
Вотъ.

------
Всех благ.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34637977
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>tygra ... Ржунимагу
А почему собственно?
SQL server строит выборку состоящую из последовательности нескольких таблиц и передаёт её серверу приложения, который преобразует её в формат DataSet. В DataSet имею возможность напрямую получить доступ к значению любого поля, любой строки, любой таблицы.
Т.е. вполне допустима проверка:
если (<поле k><строки j><таблицы i>) истина, то ...
Предполагается, что DataSet размещается в оперативной памяти СП.
Я не уверен, что в среде SQL сервера подобные операции будут идти быстрее, да и даеко не все работают с Oracle.
Я боюсь, что не понял смысла в этом. Смысла в делании чего-то там в СП с данными, для которых существует специально предназначенный для данных сервер БД.

Не понял, какие операции будут не быстрее - операции выборки данных? :))

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638188
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К модСмысл очень простой - разгрузить процессоры сервера БДДавайте вообще уберём процессор с сервера, оставим один HDD. :-))

Идея не нова, и более того, уже реализована. В частности нонфигурация, где БД назмещена в NAS, а СУБД на отдельном сервере. NAS обеспечивает доступ к данным на уровне файлов, СУБД, на уровне реляционных, объектных и т.п. отношений.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638207
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>tygra ...Смысла в делании чего-то там в СП с данными ...
Хочу заострить внимание коллег на тот факт, что не всегда! удобно реализовывать обработку данных выборки в среде сервера данных.
В свое время приводил ситуацию - выборка заказанная клиентом представляет собой таблицу из двух столбцов - x (значение переменной) и у (значение функции) за некоторый период. Выборку можно было передавать клиенту, но сеть плохая. Решено было осуществить сплайн интерполяцию (кубическую) и передавать клиенту только коэффициенты сплайна. Не думаю, что эту задачу надо (и можно ли) делать в среде SQL-сервера.
Выборка вполне может представлять собой данные для линейного программирования. Опять таки, реализовывать подобные задачи в ХР?
Считаю, что это должен делать СП. Он располагается в высокоскоростной сети с сервером данных, или вообще может быть запущен на компьютере сервера данных.
Клиентский же комп может быть удален на географическое расстояние от локальной сети сервера данных - качать туда большой объем данных вряд ли целесообразно по низкоскоростной ненадежной сети.
В задачах, что приходилось решать, требовался доступ к заданным полям таблиц выборки. Что Oracle умеет выполнять операции Fox-а типа Seek или Locate?

С уважением, Владимир.
------------------------------------
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638231
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey OrlovМожет быть не в тему, но все-таки.
Ни для кого не секрет, что SQL-ная версия 1С 7.7 реализована в виде толстого клиента, при этом мы имеем возможность создания и использования в ее интерфейсе запросов в самом SQL-сервере, т.е. как тонкого клиента.
так вот практика: время создания специфического отчета средствами самого клиента, а там были и расчеты и группировки и т.д., резко колебалась и естественно зависела от компьютера на котором он запускался, от минуты до 20 минут, после оформления его в виде вызываемой ХП, пользователь получал его в течении 20 секунд и при этом не было зависимости от компьютера пользователя, по крайней мере на глаз...

Ясен пень, что скорость завивит от оборудования. Серверы приложений и созданы, чтобы с одной стороны разгрузить СУБД, с другой стороны не нагружать клиента, ресурсы которого могут оказаться недостаточными для решения задачи.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638447
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyНе знаю как в MSSQL, но в Oracle возвращение данных с помощью ХП - это два запроса вместо одного. ...
Ну так вот выполнение первого из этих запросов требует ровно тех-же действий, что и выполнение обычного select (правда чем у Alex_Toms различаются п.1 и п.2 я не понял). Ну а второй запрос (тот что внутри ХП), естественно, уже скомпилирован. А кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше.

ХМ. Я не знаю, что вы понимаете под компиляцией SQL запроса, но во время компиляции ХП PL/SQL, происходит только проверка синтаксиса и семантики статического запроса (наличие и доступности таблиц и колонок) в объёме необходимом для создания соответствующего запросу p-кода, например структуры буфера для выборки строк. Исполнимый код SQL запроса не создаётся. На этапе выполнения текст запроса восстанавливается и в почти исходном виде отправляется в SQL машину для разбора, построения плана (т.е. исполнимого кода) и выполнения, т.е. по сути компилируется повторно, но уже полностью.

Среди разработчиков Oracle бытует миф, о магическом ускорении статических SQL запросов по сравнению с динамическими. Считается, что ускорение связано с некой компиляцией SQL запроса в ХП. Но, источник этого мифа не компилятор, а кэш курсоров PL/SQL, который позволяет исключить повторный разбор (parse) SQL запроса, если он выполнялся ранее. С тем же успехом программист может сам отслеживать часто используемые курсоры и не закрывать их без нужды. В добавок компилятор причёсывает SQL запросы, удаляя из них ненужные коментарии, и прочие пробельные символы, переименовывает переменные привязки, поднимает регистр идентификаторов, понижая вероятность жёсткого разбора из-за несущественных различий в тексте разных запросов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638523
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lockyзачем? Ведь все данные и так уже локально скэшированы на клиента...
Причем у каждого клиента - своя, уникальная копия общих данных, не
имеющих ничего общего с данными других клиентов!
Долой уравниловку!

С кэшем или без оного в общем случае каждая транзакция видит своё состояние БД отличное от других транзакций, ибо изоляцию транзакций никто не отменял. Только в БД открытой на чтение (или блокированной) все транзакции видят один и тот же образ данных.

В большинстве случаев обработка данных выполняется в буфере процесса, а затем результат сохраняется в БД. Естественно за время работы процесса данные в буфере могут устареть. В одних случаях это не критично, в других - критично, приходится использовать блокировки.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638694
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabИдея не нова, и более того, уже реализована. В частности нонфигурация, где БД назмещена в NAS, а СУБД на отдельном сервере. NAS обеспечивает доступ к данным на уровне файлов, СУБД, на уровне реляционных, объектных и т.п. отношений.Это особенности реализации дисковой подсистемы конкретного сервера БД, не более того. К "толщине" клиента или "нужности" сервера приложений с бизнес логикой на нём это не имеет никакого отношения.

ВМоисеевВ свое время приводил ситуацию - выборка заказанная клиентом представляет собой таблицу из двух столбцов - x (значение переменной) и у (значение функции) за некоторый период. Выборку можно было передавать клиенту, но сеть плохая. Решено было осуществить сплайн интерполяцию (кубическую) и передавать клиенту только коэффициенты сплайна. Не думаю, что эту задачу надо (и можно ли) делать в среде SQL-сервера.
Выборка вполне может представлять собой данные для линейного программирования. Опять таки, реализовывать подобные задачи в ХР?Даже если это и неудобно реализовывать на SQL (не факт, надо проверить), то может расширенную хранимую процедуру на C++/Java/C# к СУБД сбоку прикрутить проще?

ВМоисеевЧто Oracle умеет выполнять операции Fox-а типа Seek или Locate?T-SQL умеет гораздо больше, про PL/SQL даже заикаться боюсь, я его не знаю, но где-то слышал, что он умеет вообще всё...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638804
kilavi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД.
...
Рейтинг: 0 / 0
25 сообщений из 217, страница 6 из 9
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тонкий или толстый клиент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]