powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тонкий или толстый клиент
217 сообщений из 217, показаны все 9 страниц
Тонкий или толстый клиент
    #34604974
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в следующем: Есть некая задача, например расчет ЗП. Я пишу ее на MS SQL и С#. Так вот у кого есть какие соображения, какую архитектуру выбрать. Сейчас делаю тонкого клиента, т.е. максимум всех запросов оформлены ввиде хранимых процедур на сервере, есть вариант обратный, но он мне почему-то меньше нравиться. У кого какие предложения. Буду весьма признателен
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605068
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне он тоже мало нравится
Тема обсуждения не раскрыта
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605188
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО тонкий клиент рулит - снимаем нагрузку с рабочих станций, бизнес-правила сконцентрированы в одном месте и расположены близко к данным и, как следствие, при их исполнении нет бессмысленной пересылки информации между клиентом и сервером БД; отвязываем бизнес-правила от ЯП клиента - упрощается задача построения дополнительных GUI (WEB, Pocket). В минусах только то, что язык ХП СУБД сильно ориентирован на работу с массивами данных и не имеет никакого отношения к ООП (после C# или Паскаля кажется корявым).
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605364
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за приложение-то? Винформс али вебформс?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605666
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приложение винформс, а по поводу корявости T-SQL, ну так это решается в MS SQL 2005 по средствам
Assembly, пишу пока тонкий клиент
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605668
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у кого еще какие мысли
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605750
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочется гремучей смеси в виде тонкого клиента на винформс и логики не в БД, то только трехзвенка.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605874
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniВопрос в следующем: Есть некая задача, например расчет ЗП. Я пишу ее на MS SQL и С#. Так вот у кого есть какие соображения, какую архитектуру выбрать. Сейчас делаю тонкого клиента, т.е. максимум всех запросов оформлены ввиде хранимых процедур на сервере, есть вариант обратный, но он мне почему-то меньше нравиться. У кого какие предложения. Буду весьма признателен

Для расчёта ЗП тонкий клиент нафиг не нужен (разве что ваш бухгалтер предпочитает вести дела не в офисе, а в непринуждённой обстановке на природе или между прочим в интернет кафе), тем не менее грамотное распределение обязанностей между клиентом и сервером, а может быть и сервером приложений никто не отменял. Не исключено, что имеет смысл создать отдельный сервер для расчёта ЗП, чтобы не нагружать сервер выполнением хранимых процедур.
Короче, выбирай архитектуру приложения исходя из решаемой задачи, а не деталей реализации.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34605894
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем ясно, ну я решил писать пока тонкий клиент, а руководствовался исключительно простотой администрирования. В плане того, что если внутри процедуры меняется какой нибудь механизм, например происходит еще одна запись в таблицу (другую, например сервисную) то обновлять клиента не нужно и выгонять юзверей тоже.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34607912
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли какие-нибудь альтернативы написанию горы хранимых процедур на стандартные действия, типа вставка, удаление, обновление записей?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34608203
izoldov-roskiniЕсть ли какие-нибудь альтернативы написанию горы хранимых процедур на стандартные действия, типа вставка, удаление, обновление записей?
Есть. Написание "горы" "редактируемых" представлений (В Оракле = materialized view) и триггеров типа instead of (т.е. "вместо, взамен")... Вот только стоит ли это делать...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34608287
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniЕсть ли какие-нибудь альтернативы написанию горы хранимых процедур на стандартные действия, типа вставка, удаление, обновление записей?

Триггеры БД. Но лучше продумать структуру БД так, чтобы обновлять другие таблицы не было надобности. Исключением могут быть операции протоколирования изменений и т.п. однотипные системные действия. Тогда все триггеры можно будет сгенерить по шаблону.

Хранимые процедуры (ХП) для стандартных действий тоже можно сгенерить по шаблону, но в свете того, что многие компоненты доступа к данным умеют генерить SQL запросы на лету, я не вижу смысла в их создании.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34608348
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело все в том что хранимки подразумеваются не просто select * from Table, а там же еще будут обработки всяческие и генерация стандартных запросов не совсем подходит
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34608467
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniДело все в том что хранимки подразумеваются не просто select * from Table, а там же еще будут обработки всяческие и генерация стандартных запросов не совсем подходит

Отдели функции ввода-вывода первичных данных от их обработки. Пусть обработка выполняется фоновыми процессами, тогда разработка GUI станет возможной преимущественно на базе готовых компонентов и сложная обработка данных избавится от заморочек связанных с итерактивностью.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34609535
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabДля расчёта ЗП тонкий клиент нафиг не нужен (разве что ваш бухгалтер предпочитает вести дела не в офисе, а в непринуждённой обстановке на природе или между прочим в интернет кафе), тем не менее грамотное распределение обязанностей между клиентом и сервером, а может быть и сервером приложений никто не отменял. Не исключено, что имеет смысл создать отдельный сервер для расчёта ЗП, чтобы не нагружать сервер выполнением хранимых процедур.
Короче, выбирай архитектуру приложения исходя из решаемой задачи, а не деталей реализации.
А можно создать еще сервер для предрассчета ЗП, чтобы он снял нагрузку с сервера расчета ЗП - ефиг ему заниматься всякими подготовительными данными, типа скока часов проработали сотрудники и т.д., это все предрассчетный сервер пусть делает
авторТриггеры БД. Но лучше продумать структуру БД так, чтобы обновлять другие таблицы не было надобности. Исключением могут быть операции протоколирования изменений и т.п. однотипные системные действия. Тогда все триггеры можно будет сгенерить по шаблону.

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

2 izoldov-roskini
Пиши через хранимые процедуры и никого с экзотическими рассуждениями не слушай - думаешь все правильно. Так и надо делать, чтобы потом не иметь проблем с изменением бизнес-логики и т.д. Клиент - отдельно, бизнес-логика - отдельно, меняется и то и то независимо.


-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34609635
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так и делаю
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34610033
bpost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> поводу корявости T-SQL, ну так это решается в MS SQL 2005 по средствам
Assembly

особенно не надейся. обрати внимание на то, что в контексте SQL Server классов нет - есть структуры с сериализацией и хранением в XML (производительность и ссылки - проблема). (Ну не ООБД MS SQL Server - не ООБД :) ). в C# для MS SQL Server хорошо реализовывать то, что хорошо укладывается в реляционную тему: агрегаты, хранимки, UDF.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34614947
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra
В общем.... Аффтар, пеши исчо. Заодно дай название травы, от которой так прет.



SOA

PS. Каждому клиенту, по серверу.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34615019
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniДело все в том что хранимки подразумеваются не просто select * from Table, а там же еще будут обработки всяческие и генерация стандартных запросов не совсем подходит
Да какие на фиг обработки? Хранимки, триггера и т.д. - зло. СКЛ Сервера - зло. AS - зло.
Все это против честного программера. Корпоративные штучки для закабаления.
Бойкот всей этой гадости!
Не будем воровать! И на фиг они тады не нужны будут.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34615318
bpost (+1,5 beer)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2: Сахват Юсифов: шутки это хорошо конечно, но topic owner нужно Ваше мнение. Без шуток. В этом и смысл контеренции :)
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34619125
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь оргументированно объяснит как быть?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34619543
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskini wrote:
> Кто-нибудь оргументированно объяснит как быть?
"Тонкий" клиент, обработка/расчеты на серваке в виде T-SQL, а не CLR.
Аргументов - валом по форуму.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34620295
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniКто-нибудь оргументированно объяснит как быть?

Это тебе самому нужно провести анализ, потому что у каждого варианта есть свои ++ и --, которые в определённом контексте могут оказаться или критичными или несущественными.

Ты выбираешь между централизацованной и распределённой обработкой.

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

Тонкий клиент проще в плане администрирования, но для маленькой организации в одном офисе вопросы администрирования редко бывают существенными.

Безопасность для задачи расчёта ЗП является важным аспектом. Передача всех данных для расчёта на клиента (за пределы серверной комнаты) представляет угрозу, с другой стороны нужно учесть, что Web браузеры могут сохранять страницы в кэше на диске, так что данные могут стать доступными посторонним лицам.

Про производительность T-SQL ничего не скажу. Знаю что в Оракле PL/SQL машина работает довольно медленно, да библиотека типовых структур данных слабовата, так что сложные критичные по времени расчёты приходится реализовавыть на C++, а соответствующие компоненты разворачивать на специально выделенных серверах.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34620317
izoldov-roskini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно. Спасибо.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34622764
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
izoldov-roskiniВопрос в следующем: Есть некая задача, например расчет ЗП. Я пишу ее на MS SQL и С#. Так вот у кого есть какие соображения, какую архитектуру выбрать. Сейчас делаю тонкого клиента, т.е. максимум всех запросов оформлены ввиде хранимых процедур на сервере, есть вариант обратный, но он мне почему-то меньше нравиться. У кого какие предложения. Буду весьма признателен
И всё бы хорошо, но если логика на триггерах с ХП - сервер БД нагружается несвойственными для него вычислительными задачами. Из-за чего, если объём и сложность вычислительных задач велики, могут возникнуть проблемы в производительности и удобстве поддержки. Т.е. если в компании 100 человек и достаточно простая схема начисления з/п - это одна ситуация, а если 50'000 и з/п начисляется с учётом тысячи факторов и коэффициентов - другая.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34623263
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenИ всё бы хорошо, но если логика на триггерах с ХП - сервер БД нагружается несвойственными для него вычислительными задачами. Из-за чего, если объём и сложность вычислительных задач велики, могут возникнуть проблемы в производительности и удобстве поддержки. Т.е. если в компании 100 человек и достаточно простая схема начисления з/п - это одна ситуация, а если 50'000 и з/п начисляется с учётом тысячи факторов и коэффициентов - другая.По поводу несвойственных задач для сервера по вычислению... это я бы сильно поспорил.
В начислении ЗП редко используется мат.анализ.

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

Единственное существенное отличие сервера БД от рабочей станции - это язык программирования, на котором будет реализован алгоритм начисления.
Процедурные языки в отличии от языков БД они более скоростные в реализации алгоритмических задач.
Но для работы алгоритмов всеравно понадобятся данные с сервера БД.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34624246
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven сервер БД нагружается несвойственными для него вычислительными задачами - вы с файл-сервером случаем сервер БД не перепутали? потому как задача сервера БД и есть вычислять максимально всё что можно. На клиенте,как правило, реализуется интерфейс пользователя.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34624359
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych AlexTheRaven сервер БД нагружается несвойственными для него вычислительными задачами - вы с файл-сервером случаем сервер БД не перепутали? потому как задача сервера БД и есть вычислять максимально всё что можно. На клиенте,как правило, реализуется интерфейс пользователя.

Вычисления, это задача сервера приложений, клиента, и в лучшем случае выделенной службы. То что СУБД тоже умеет складывать и вычитать не делает её хорошим местом для реализации вычислительных алгоритмов и процедур как из соображений выразительных средств языка программирования хранимых процедур, так и с точки зрения масштабируемости решения. Кроме того вычислительные компоненты системы часто имеют самостоятельную ценность. Если их плотно завязать на конкретную СУБД, возможность их использования с другой СУБД будет под большим вопросом. Т.е. реализация компонента в отдельной службе улучшает переносимость системы и возможности интеграции с другими системами.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34624379
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely AlexTheRavenИ всё бы хорошо, но если логика на триггерах с ХП - сервер БД нагружается несвойственными для него вычислительными задачами. Из-за чего, если объём и сложность вычислительных задач велики, могут возникнуть проблемы в производительности и удобстве поддержки. Т.е. если в компании 100 человек и достаточно простая схема начисления з/п - это одна ситуация, а если 50'000 и з/п начисляется с учётом тысячи факторов и коэффициентов - другая.По поводу несвойственных задач для сервера по вычислению... это я бы сильно поспорил.
В начислении ЗП редко используется мат.анализ.

Зато используется сложная логика и многочисленные обращения к таблично заданным функциям.

BelyК тому же - если вычисление ЗП такое хитрое и зависит от тысячи факторов, то почему вы решили, что рабочая станция справится с этой задачей лучше чем более мощный сервер?
рабочая станция всеравно будет тянуть данные с сервера для принятия решения о начислении зарплаты.

Простите. Про рабочую сказали Вы. Для вычислений можно использовать не менее мощный компьютер, чем тот что используется для развёртывания СУБД. Более того, вычислительные задачи выдвигают несколько иные требования к оборудованию, чем СУБД. Например для вычислений обычно не нужны быстрые диски огромных объёмов с произволиным доступом.

BelyЕдинственное существенное отличие сервера БД от рабочей станции - это язык программирования, на котором будет реализован алгоритм начисления.

Язык программирования встроенный в СУБД точно также может поддерживаться внешней платформой. Например программы на PL/SQL может выполнять и СУБД Оракл и Forms. Возможно в скором времени хранимые процедуры и триггеры будут программироваться на Java, так что этот аспект вообще перестанет быть атуальным.

BelyПроцедурные языки в отличии от языков БД они более скоростные в реализации алгоритмических задач.
Но для работы алгоритмов всеравно понадобятся данные с сервера БД.

PL/SQL и C++ это процедурные, точнее алгоритмические языки. Их производительность определяется оптимизирующим компилятором и исполнительной машиной. А данные с сервера кэшируются в локальной памяти вычислительного модуля и далее БД понадобится только для того, чтобы сохранить результат вычислений. Во время работы такого модуля БД может быть вообще недоступной, что позволяет выполнять ремонт сервера БД без остановки других служб системы.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34624525
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
> того вычислительные компоненты системы часто имеют самостоятельную
> ценность. Если их плотно завязать на конкретную СУБД, возможность их
> использования с другой СУБД будет под большим вопросом. Т.е. реализация
> компонента в отдельной службе улучшает переносимость системы и
> возможности интеграции с другими системами.
Если некий компонент одинаково работает с разными СУБД - крайне велика
вероятность того, что со всеми СУБД он это делает одинаково плохо.
И ценность такого компонента для решения из конкретно этого топика -
стремится к нулю.

А "к примеру зарплата" - чудесным образом реализуется на T-SQL без
излишнего геммороя.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34624931
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
<...>Если некий компонент одинаково работает с разными СУБД - крайне велика
вероятность того, что со всеми СУБД он это делает одинаково плохо.
И ценность такого компонента для решения из конкретно этого топика -
стремится к нулю.
Согласен, "независимость от СУБД" зачастую неоправдана. С другой стороны - вот случится несчастье, свалится к Вам на голову начальник - ортодоксальный юниксоид, прикрывающийся блюдением лицензионной чистоты, что будете делать?

locky
А "к примеру зарплата" - чудесным образом реализуется на T-SQL без
излишнего геммороя.<...>
Размер геморроя зависит от индивидуальных знаний, навыков и предпочтений. С тем, что для коммерческой компании до неск. тысяч человек всё вполне реализуемо на T-SQL, не поспоришь. Но вот Вы взялись бы создавать и главное - потом поддерживать решение, обсчитывающее з/п средствами T-SQL для РЖД, или "хотя бы" для ВАЗа?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34625470
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афигеть!!!!!!!!!!!!!

Люди никогда не видели, как работает и считает зарплаты (или что-то другое) СУБД - особенно учитывая, что все данные табличные и хранятся в ней же???????????

Афигеть окончательно!!!!!!!!

2 mcureenab
Единственный ответ на высказывания выше - это бред, полнейший бред. Травой так не надо увлекаться, плохо кончается это все :)

2 izoldov-roskini
Я искренне тебе советую не слушать чушь, которую несет mcureenab. Как делал, так и делай, все на СУБД.

========
Я конечно все понимаю, но такого кошмара редко увидишь


-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34626192
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraАфигеть!!!!!!!!!!!!!

Люди никогда не видели, как работает и считает зарплаты (или что-то другое) СУБД - особенно учитывая, что все данные табличные и хранятся в ней же???????????

Афигеть окончательно!!!!!!!!
Вот именно, что от такой категоричности можно офигеть. Например расчет зарплаты... А если например не расчет зарплаты? А например в базе хранятся описания объектов и их нужно рендерить? Все зависит от отношения скорости передачи данных между клиентом и сервером и временем необходимым на вычисления на сервере, отношения общей вычислительной мощности клиентов и сервера и возможности распараллелить конкретные вычисления. И всё. Если важна скорость, то надо реализовывать так, как будет быстрее. А как будет быстрее - это уже сильно зависит от задачи и алгоритмов, применяемых для ее решения.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34626473
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркНапример расчет зарплаты... А если например не расчет зарплаты? А например в базе хранятся описания объектов и их нужно рендерить?А если не надо рендерить, то тогда что?
Всеравно AS выберем?

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

Локшин МаркА как будет быстрее - это уже сильно зависит от задачи и алгоритмов, применяемых для ее решения.А если и там и там приемлемо, то тогда как?
Расчет и начисление ЗП, задача вполне посильная для SQL серверов, IMHO.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34626571
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyВаш совет такой же категоричный. Сперва задача, оценка потоков, необходимой производительности, а потом уже все остальное.
И в чем же в моем совете категоричность? В том что нужно сперва подумать а не тупо кричать все вычисления на сервер?
Bely Локшин МаркА как будет быстрее - это уже сильно зависит от задачи и алгоритмов, применяемых для ее решения.
А если и там и там приемлемо, то тогда как?
То тогда нужно выбирать используя другие критерии - простота написания кода, поддержки, безопасность, масштабируемость и т.д.
BelyРасчет и начисление ЗП, задача вполне посильная для SQL серверов, IMHO.
И что Вы пытаетесь оспорить?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34626715
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркИ что Вы пытаетесь оспорить?Я хорошо понимаю реакцию Тигры.
Прочитав советы в этой теме можно сделать только один вывод - считать зарплату на SQL сервере - БЕСПЕРСПЕКТИВНЯК.

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

Если тебя послушать, то и реализация расчёта средствами СУБД тоже бред, ибо я в своих постах допускаю разные варианты реализации, и пытаюсь рассмотреть ++ и -- каждого из них. Я против расчёта средствами СУБД (имею опыт разработок на PL/SQL), поэтому предпочитаю рассматривать -- этого решения, но тут полно народу, который аргументированно высказывает и его ++. К сожалению, ты в их число не входишь.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34626965
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely Локшин МаркИ что Вы пытаетесь оспорить?Я хорошо понимаю реакцию Тигры.
Прочитав советы в этой теме можно сделать только один вывод - считать зарплату на SQL сервере - БЕСПЕРСПЕКТИВНЯК.

Вот только мужики-то некоторые не знают... и у них все путем тем неменее :)

"БЕСПЕРСПЕКТИВНЯК" - точно сказано. Сделать это побыстрому и что бы как то работало, можно средствами СУБД. Но перспектива развития такого решения, ИМХО, сомнительна. Дело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины.
Могу допустить, что в перспективе потребуется интегрировать модуль расчёта ЗП в информационную систему масштаба предприятия развёрнутую на AS. И что тогда? Это не приговор, а вопрос, как это сделать?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34627100
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabДело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины.Можно подумать БД не движутся к распределенным вычислениям.
Или нельзя сделать 1,3,5-серверов локальных бухгалтерий, которые будут у себя локально рассчитывать ЗП, а потом центральный сервер будет от них получать уже готовый результат.

Так что, "распределенные вычисления" и "реализация НЕ средствами сервера БД" - это не синонимы.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34627119
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely Локшин МаркИ что Вы пытаетесь оспорить?Я хорошо понимаю реакцию Тигры.
Прочитав советы в этой теме можно сделать только один вывод - считать зарплату на SQL сервере - БЕСПЕРСПЕКТИВНЯК.

Вот только мужики-то некоторые не знают... и у них все путем тем неменее :)

Тига прыгает не там и не туда. Лучше в "треп".
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34627177
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely mcureenabДело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины.Можно подумать БД не движутся к распределенным вычислениям.
Или нельзя сделать 1,3,5-серверов локальных бухгалтерий, которые будут у себя локально рассчитывать ЗП, а потом центральный сервер будет от них получать уже готовый результат.

Так что, "распределенные вычисления" и "реализация НЕ средствами сервера БД" - это не синонимы.

Ну в общем лично меня в основном бодают слабые выразительные средства PL/SQL и небольшая, по сравнению с универсальными языками программирования, библиотека, невысокая производительность (зато очень просто и надёжно, что часто является решающим фактором!). Нет автономной реализации PL/SQL машины, такой как например JVM. Опять же PL/SQL не решает все задачи, по любому приходится использовать универсальные ЯП (C++), т.е. вместо одного специалиста в C++, к проекту нужно привлекать ещё разработчика PL/SQL. В итоге, рано или поздно первую версию вычислительного модуля, разработанную на PL/SQL приходится переписывать на C++.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34627753
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mcureenab
Я так понимаю, что ты просто не умеешь работать с Ораклом да и вообще с любыми другими СУБД. Не умеешь использовать его так, чтобы он работал нормально, без проблем.

И причем тогда тут СУБД?

Если в расчете зарплаты тебе не хватило PL/SQL, я уж тогда не говорю о TSQL, то я помолчу по поводу уровня знаний - расскажи об этом кому другому, у кого расчеты зарплаты крутятся и на Оракле, и на MS, и на Sybase - наверное у них глюки, да?

Смешно.

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

mcureenabЕсли тебя послушать, то и реализация расчёта средствами СУБД тоже бред, ибо я в своих постах допускаю разные варианты реализации, и пытаюсь рассмотреть ++ и -- каждого из них. Я против расчёта средствами СУБД (имею опыт разработок на PL/SQL), поэтому предпочитаю рассматривать -- этого решения, но тут полно народу, который аргументированно высказывает и его ++. К сожалению, ты в их число не входишь.
Кстати, по поводу бреда - я говорил не о том, что апп-сервер - это бред, а о доводах, приведенных в нескольких постах. Могу повторить еще раз - это бред. Такие доводы только для маркетингового развода лохов.
Я не увидел там никаких плюсов и минусов СУБД. Чиста маркетинговое запудривание мозгов.

-------

Еще раз напомню - мы тут обсуждаем расчет зарплаты, а не обсчет сферического коня в вакууме.

------

mcureenab "БЕСПЕРСПЕКТИВНЯК" - точно сказано. Сделать это побыстрому и что бы как то работало, можно средствами СУБД.
Ну если ты не умеешь по-другому работать с СУБД, а только "чтобы как-то", то мы тут причем? :))

авторНо перспектива развития такого решения, ИМХО, сомнительна. Дело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины.
Это во сне приснилось чтоли? Назови хоть одну не маркетинговую причину. Или не "откатную" - чтобы побольше бабла загрести от большего количества систем и серверов.
авторМогу допустить, что в перспективе потребуется интегрировать модуль расчёта ЗП в информационную систему масштаба предприятия развёрнутую на AS. И что тогда? Это не приговор, а вопрос, как это сделать?
И что, какие проблемы? Или трава настолько глубоко проникла, что ты не можешь представить себе апп-сервер без расчетов? Апп-сервер, который только данные гоняет от клиента к серверу и обратно, не можешь этого представить? Тогда о чем говорить?
Я например могу представить такое - зачем-то втыкаем между клиентом и сервером 3-е звено, которое служит коммуникатором. Зарплату как и до этого считает сервер.

И эти люди говорят о моей категоричности

авторНу в общем лично меня в основном бодают слабые выразительные средства PL/SQL и небольшая, по сравнению с универсальными языками программирования, библиотека, невысокая производительность (зато очень просто и надёжно, что часто является решающим фактором!). Нет автономной реализации PL/SQL машины, такой как например JVM. Опять же PL/SQL не решает все задачи, по любому приходится использовать универсальные ЯП (C++), т.е. вместо одного специалиста в C++, к проекту нужно привлекать ещё разработчика PL/SQL. В итоге, рано или поздно первую версию вычислительного модуля, разработанную на PL/SQL приходится переписывать на C++.
Ну давай, расскажи, где тебе не хватило PL/SQL?
Зачем тебе PL/SQL-машина - что за бред вообще? Вот блин джава ....
И какие задачи не решает PL/SQL?

Или может просто не умеешь это все готовить? Ну тогда извини - купи поварскую книгу. :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34628147
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraЭто во сне приснилось чтоли? Назови хоть одну не маркетинговую причину. Или не "откатную" - чтобы побольше бабла загрести от большего количества систем и серверов.
Широкая филиальная сеть, зонирование ответственности между крупными подразделениями.
Здесь ты не прав.
Большим конторам нужны большие подходы и дело не только в откатах.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34628275
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов
Тига прыгает не там и не туда. Лучше в "треп".
:) у него просто меню на постранички вмещается, поэтому и состав продуктов не такой большой. Хватает одной СУБД, в чем собственно он постоянно пытается всех убедить.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34628432
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely tygraЭто во сне приснилось чтоли? Назови хоть одну не маркетинговую причину. Или не "откатную" - чтобы побольше бабла загрести от большего количества систем и серверов.
Широкая филиальная сеть, зонирование ответственности между крупными подразделениями.
Здесь ты не прав.
Большим конторам нужны большие подходы и дело не только в откатах.
Ну это по-разному решается, можно удаленно заходить и работать, можно репликацию.
Вопрос то вообще-то не в этом.
Вопрос в том, кто должен считать
Для филиальной сети можно использовать апп-сервер, но как коммуникатор между клиентом и сервером. И отнюдь он не должен что-то там считать внутри себя типа зарплаты или пени :)
Это сравнение мягкого с теплым :)

iscrafm Сахават Юсифов
Тига прыгает не там и не туда. Лучше в "треп".
:) у него просто меню на постранички вмещается, поэтому и состав продуктов не такой большой. Хватает одной СУБД, в чем собственно он постоянно пытается всех убедить.
Заметьте, я здесь ни за какую конкретно СУБД не ратовал - мне обычно вообще пофиг последние год-два, на чем хотите, на том делайте, вырос из того возраста :)

А вот про "Тига прыгает не там и не туда" я если честно не понял - чего это? :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34628465
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraДля филиальной сети можно использовать апп-сервер, но как коммуникатор между клиентом и сервером. И отнюдь он не должен что-то там считать внутри себя типа зарплаты или пени :)ты просил пример, когда нужна многозвенная технология не по маркетинговым причинам, а по необходимости.

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

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

Да и потом - я к чему намекаю про "где считать". К тому, что "где считать" никак не относится к распределенности системы. И распределенность системы не есть "где считать" :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629013
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraНу давай, расскажи, где тебе не хватило PL/SQL?

Да задачка плёвая. С расчётом З/П в районах крайнего севера ни в какое сравнение не идёт. Всего то инкрементная выгрузка записей во внешнюю систему.
Сейчас вугружается около сотни записей в секунду. В перспективе нужно увеличить производительность на порядок. Если не переносить PL/SQL ный код на новую платформу, придётся выложить несколько сотен k$ за новый сервер БД, который, если сказать прямо, тут нафиг бы не задался, если разместить процессы выгрузки на blade сервере ценою ~ 10k$ и по мере надобности добавлять серверы, не заморачиваясь крупными капиталовложениями на покупку оборудования и лицензии на системный софт, затратами на перенос БД на новую платформу и обучение персонала. Но увы...

Кроме того, сейчас основная работа возложена на один SQL запрос, который, если каких то данных не хватает, просто скипает записи, так что хрен найдёшь, куда и почему они делись. Другое дело, реализовать соединение таблиц в программе на C++, пусть чуть менее эффективно, зато с полной диагностикой ошибок в данных и т.д. Нет гарантии, что во время работы задачи кто то другой не схавает ресурсы сервера и вместо положенных 10мин, выгрузка не будет идти 15мин. или вообще упадёт, что недопустимо. На отдельной железке процессы выполняются более предсказуемо. Наконец программа на универсальном языке программирования может сразу создавать файл в нужном формате и в нужном месте, а на PL/SQL удаётся только подготовить данные, которые потом всё равно приходится конвертировать в нужный формат программой на C++.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629055
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа, ты с кем сейчас разговаривал?



-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629079
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra Папа, ты с кем сейчас разговаривал?



-- Tygra's --
Мои фотогалереи тут и тут

Ах, да! Извиняйте, Вы уже вышли из ЭТОГО возраста...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629189
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно! :)
Из такого:
[quot автор]Кроме того, сейчас основная работа возложена на один SQL запрос, который, если каких то данных не хватает, просто скипает записи, так что хрен найдёшь, куда и почему они делись[/ quot]
я давно уже вырос

Тяпница :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629231
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabСейчас вугружается около сотни записей в секунду. В перспективе нужно увеличить производительность на порядок.Что-то это слабо тянет на AS.
Типичное миграционное приложение, которых можно настругать с десяток.
Ну задача у него своеобразная... только это не AS.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629259
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вообще непонятно, откуда выгружается и куда.

По-мойму нас разводят :))

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629459
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely mcureenabСейчас вугружается около сотни записей в секунду. В перспективе нужно увеличить производительность на порядок.Что-то это слабо тянет на AS.
Типичное миграционное приложение, которых можно настругать с десяток.
Ну задача у него своеобразная... только это не AS.

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

Из БД в файл определённого формата.

Задача совершенно нехитрая, есть GUI, хранимая процедура на PL/SQL и модуль на C++, который работает в режиме сервиса Windows. Зачем так много?
1. Затем что PL/SQL не умеет делать GUI и не умеет делать требуемые файлы.
2. Затем что GUI работает на ПК оператора, а модуль на C++ на отдельном сервере, чтобы оператор не остановил его.

Спрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629513
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?Дествительно, незачем.
Но с такими рассуждениями можно легко докатиться до выводов "Зачем нужна БД, если все можно хранить в текстовом файле"
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34629708
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely mcureenabСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?Дествительно, незачем.
Но с такими рассуждениями можно легко докатиться до выводов "Зачем нужна БД, если все можно хранить в текстовом файле"

Так если можно, то почему бы не хранить в текстовом файле?

Видимо, нужно взвесть стоимость разработки и сопровождения собственного менеджера данных и покупки промышленной СУБД. Учесть перспективы развития системы, требования к её открытости, производительности, устойчивости к сбоям и т.д. и т.п.

Что касается моей задачи, PL/SQL модуль просится быть переписаным на C++, но этот модуль уже есть, он протестирован и работает, бюджет на переписывание начальство не даёт, вот и пользуемся тем что имеем.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34631227
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?
Отвечается - зачем какой-то с++, если есть pl/sql, на котором можно сделать чего надо. И уж в крайних случаях - если например данные бд превращать в формат pdf, можно делать не с помощью pl\sql, а с помощью того, чего это умеет делать.

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

Жаль, что уже не вылечить. :) Трава сидит глубоко.

В общем, облом, пример не соответствует теме топика.


-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34631464
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>mcureenab
> ... Из БД в файл определённого формата.
.....
>tygra
> ... Но только приведенный пример никак не относится ни к распределенным вычислениям, тем более вообще никак к многозвенкам.

Это, батенька, почему-же? Сервер данных построил выборку в своем формате (последовательность строк, например). В общем случае эта последовательность должна быть предварительно обработана и сериализована для передачи клиенту (клиент не в локальной сети и библиотека SQLClient на его компе не установлена) и представлена в виде файла (на диске) или MemoryStream (в памяти). Потом неплохо бы результирующую сериализацию сжать (Zip-ом например), всетаки 1:10, а то и поболее. Да и шифрование применить иногда не мешает.
И это все должен делать сервер данных? А почему не сервер приложений? А если второе, то вот и многозвенка и распределенные вычисления.

С уважением, Владимир.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34631476
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Тонкий" клиент был задуман с целью экономии на стоимости клиентской машины, минимум памяти, без винта и т.д., а также для медленных сетей и прочее. Вобщем тратимся на сервер, а экономим на рабочих станциях. По жизни железо становится всё шустрее и дешевле. На данный момент достаточно дешёвый комп на самом деле машина всё же очень шустрая и не использовать эти ресурсы просто не разумно. Тем более если клиенты находятся в офисе с локалкой как минимум 100MB. Поэтому логично сервак всёже максимум разгрузить.
Я реализовал расчёт зарплаты на предприятии без дубликатов данных и сответсвенно без триггеров. Все необходимые расчёты на каждый лицевой счёт производится хранимой процедурой. В неё более сотни запросов, на считывание, обновление у добавление данных. Процедура оптимизирована и вызывается после каждого изменения данных. При необходимости из приложения можно на произвести расчёт всех сотрудников. За 40 сек. производится расчёт на 4000 чел. В мае полностью переписал приложение, заменил доступ через BDE на ADO и часть нагрузки перенёс на рабочии станции, тем самым рагрузил сервак.

Удачи.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34632306
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra авторСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?
Отвечается - зачем какой-то с++, если есть pl/sql, на котором можно сделать чего надо. И уж в крайних случаях - если например данные бд превращать в формат pdf, можно делать не с помощью pl\sql, а с помощью того, чего это умеет делать.

Прикол в том, что "это самое" (программа на C++), может сделать то что нужно, в том числе и то, что написано на PL/SQL. Так зачем PL/SQL и необходимость развёртывания ХП в СУБД? Короче, не выдумывай сырые частные решения не зная общей задачи.

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

Наличие вдух взаимодействующих узлов, это уже распределённые вычисления. Про многозвенку в примере вообще речи не шло. Тут взаимодействуют GUI клиент, СУБД и спциализированный сервер, который создаёт файлы и отправляет их по указанному адресу.

ИМХО, серверы приложений в настоящее время являются отличной масштабируемой платформой для развёртывания задач любой сложности. Специфические требования приложений реального времени или желание сэкономить на оборудовании заставляют разрабытывать внешние модули.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34632361
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven wrote:
> <...>Если некий компонент одинаково работает с разными СУБД - крайне велика
> вероятность того, что со всеми СУБД он это делает одинаково плохо.
> И ценность такого компонента для решения из конкретно этого топика -
> стремится к нулю.
>
>
> Согласен, "независимость от СУБД" зачастую неоправдана. С другой стороны
> - вот случится несчастье, свалится к Вам на голову начальник -
> ортодоксальный юниксоид, прикрывающийся блюдением лицензионной чистоты,
> что будете делать?
Посчитаю ему стоимость перехода с MS SQL на Oracle - пусть захлебнётся
слюной от жадности.

>
> locky
>
> А "к примеру зарплата" - чудесным образом реализуется на T-SQL без
> излишнего геммороя.<...>
>
>
> Размер геморроя зависит от индивидуальных знаний, навыков и
> предпочтений. С тем, что для коммерческой компании до неск. тысяч
> человек всё вполне реализуемо на T-SQL, не поспоришь. Но вот Вы взялись
> бы создавать и главное - потом поддерживать решение, обсчитывающее з/п
> средствами T-SQL для РЖД, или "хотя бы" для ВАЗа?
Не знаю - не мой профиль. Но на менее крупных - можно было бы.
Проводим декомпозицию... и далее по тексту :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34633081
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Траваааааа................ :))

Больше слов нет :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34633727
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenНо вот Вы взялись бы создавать и главное - потом поддерживать решение, обсчитывающее з/п средствами T-SQL для РЖД, или "хотя бы" для ВАЗа?Мы вот взялись. MSSQL2k + Win клиент. Никаких больше звеньев нет. Все расчёты и логика на TSQL. Расчёт рабочего времени + ещё куча характеристик нарастающим итогом каждые сутки в конце прошлого месяца на "подшефном" сервере занял 1 минуту 41 секунду. И таких серверов порядка сотни. Расчёт был произведён по 1880 работникам. В начале месяца он выполняется где-то секунд за 30. Система работает в режиме 24х7. Что мы делаем не так?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34633913
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
MSSQL2k + Win клиент. Никаких больше звеньев нет. Все расчёты и логика на TSQL


И у меня такой вариант работает с 2000г., структура получилась удачная, за 7 лет реализовывались все мыслемые и не мысленные требования законодателей.
Полный расчёт всех начислений, в том числе налогов различной аналитической информации происходит после каждого изменения вводимых данных. Всё это происходит быстро, на скорость работы операторов не сказывается.
Ограничений на численность персонала не вижу, всё зависит от сервака.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634136
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К<...>Расчёт был произведён по 1880 работникам. В начале месяца он выполняется где-то секунд за 30. Система работает в режиме 24х7. Что мы делаем не так?Да я и не спорю, что Вы всё делаете правильно. Просто пост лучше читать целиком :) . А в нём написано: AlexTheRaven<...>С тем, что для коммерческой компании до неск. тысяч человек всё вполне реализуемо на T-SQL, не поспоришь.<...>
----------------------
Алексей К<...>И таких серверов порядка сотни.<...>
Несколько непонятно:
- в Вашей организации порядка 200'000 тыс сотрудников, и Вы грамотно распараллелили расчёты по 100 серверам?
- 100 серверов считает з/п для 1880 сотрудников?
- Ваши сервера стоят в 100 организациях по неск. тыс. сотрудников в каждой?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634144
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Toms<...>Ограничений на численность персонала не вижу, всё зависит от сервака.
А сейчас для какого количества сотрудников рассчитывается, если не секрет, конечно?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634164
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И мне интересно, а зачем разбивать на "небольшие" части всех сотрудников, есть какие то ограничения на расчёт в одном месте?
Скорее всего мне кажется, что организация разбита на филиалы.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634178
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven
См. чуть выше в этом топике...


Повторюсь:За 40 сек. производится расчёт на 4000 чел....
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634419
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenНесколько непонятно:
- в Вашей организации порядка 200'000 тыс сотрудников, и Вы грамотно распараллелили расчёты по 100 серверам?
- 100 серверов считает з/п для 1880 сотрудников?
- Ваши сервера стоят в 100 организациях по неск. тыс. сотрудников в каждой?Сотрудники распределены по более чем 200-м линейным предприятиям, территориально расположенным по всей России. В каждом линейном предприятии стоит сервер линейного уровня (или один на несколько, территориально расположенных рядом, всё зависит от каналов связи). Есть ещё сервера регионального уровня, они используются для обмена данными между линейными предприятиями (транзакционная репликация) и с них передаются данные в другие оперативные системы и в ОЛАП. Сейчас ведутся работы по созданию центрального сервера в Москве для "глобальной" отчётности. Это я всё упрощённо описал, на самом деле там всё гораздо сложнее. Но вопрос не в этом. Вопрос в другом. Накой писать обработку данных на C++ (C#, Java), когда это можно на порядок проще и эффективнее реализовать в SQL?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634536
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenС тем, что для коммерческой компании до неск. тысяч человек всё вполне реализуемо на T-SQL, не поспоришьА что, если будет больше, то нереализуемо?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634661
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Накой писать обработку данных на C++ (C#, Java), когда это можно на порядок проще и эффективнее реализовать в SQL?

Пробовал я такой вариант, правда не в зарплате.
Приложение было на C++ Builder, считывал данные с сервака, обрабатывал из на клиенте, а потом обновлял на серваке. Сделал всё это в хранимой процедуре, скорость работы значительно возросла, и система стала просто летать по сравнению с первым вариантом. Да и от конфигурации рабочей станции скорость перестала зависеть. А при распределённых системах могут быть ещё проблемы с каналами, и в этом случае обработку оптимально всё же делать в ХП на серваке.
Хотя в каждом деле всегда есть золотая середина.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34634694
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если вдруг аналитика станет сильно влиять на работу оперативной системы, всегда можно "сбоку" прикрутить ОЛАП, и пусть вся аналитика крутится там.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635150
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Toms
Пробовал я такой вариант, правда не в зарплате.
Приложение было на C++ Builder, считывал данные с сервака, обрабатывал из на клиенте, а потом обновлял на серваке. Сделал всё это в хранимой процедуре, скорость работы значительно возросла, и система стала просто летать по сравнению с первым вариантом.

Распределённые вычисления принципиально отличаются от локальных. Возможно, в данном случае система не учитывала сетевые задержки. Если программа на C++ изначально была основана на принципах локальных вычислений, то неудивительно, что её перенос на сервер позволил увеличить скорость вычислений.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635321
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К AlexTheRavenНесколько непонятно:
- в Вашей организации порядка 200'000 тыс сотрудников, и Вы грамотно распараллелили расчёты по 100 серверам?
- 100 серверов считает з/п для 1880 сотрудников?
- Ваши сервера стоят в 100 организациях по неск. тыс. сотрудников в каждой?Сотрудники распределены по более чем 200-м линейным предприятиям, территориально расположенным по всей России. В каждом линейном предприятии стоит сервер линейного уровня (или один на несколько, территориально расположенных рядом, всё зависит от каналов связи). Есть ещё сервера регионального уровня, они используются для обмена данными между линейными предприятиями (транзакционная репликация) и с них передаются данные в другие оперативные системы и в ОЛАП. Сейчас ведутся работы по созданию центрального сервера в Москве для "глобальной" отчётности. Это я всё упрощённо описал, на самом деле там всё гораздо сложнее. Но вопрос не в этом. Вопрос в другом. Накой писать обработку данных на C++ (C#, Java), когда это можно на порядок проще и эффективнее реализовать в SQL?

Согласен, только на чистом SQL и ХП обработку данных реализовать невозможно. SQL запросы должен кто то толкать и забирать результат и предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с многими ограничениями, т.е. непременно нужен некий клиент БД. А раз есть клиент, то частенько есть возможность разместить расчёты на нём, а не в СУБД. Клиент в данном случае не обязательно GUI компонент или AS. Это может быть некий сервис, например менеджер расчёта зарплаты.

Пример с распределённой системой не показательный. Понятное дело, если раскидать нагрузку по сотне СУБД, то задача будет работать быстро. В данном случае распределённые вычисления необходимы по причине распределённости самого предприятия. Но ведь никому не придёт в голову устанавливать в спортзале сотню серверов СУБД, только для расчёта зарплаты на несколько тысяч сотрудников или чего нибудь подобного. Только на закупку лицензии СУБД на 100 CPU уйдёт куча бабок.

Нужно понимать, что СУБД включает в себя SQL машину, которая решает основную задачу - управление данными на диске, и PL/SQL машину или т.п., которая осуществляет процедурные вычисления (триггеры и ХП). Когда мы покупаем лицензию на СУБД, то платим за оба компонента. Но если мы имеем дефицит только вычислительных ресурсов, при том что SQL машина не догружена, покупка дополнительного узла СУБД или обновление оборудования только ради развёртывания дополнительных расчётов на ХП будет выглядеть несколько странно.

PS. Расчёт ЗП сложен на этапе разработки и внедрения, тогда как на этапе выполнения современный микрокомпьютер справится с расчётом ЗП для тысяч сотрудников в более чем приемлемые сроки. Поэтому здесь нужно ориентироваться на удобство работы с исходником. C++ или Java для этого слишком сложные языки, поэтому естественным выбором может стать PL/SQL и т.п. + GUI на базе framework системы и генератор отчётов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635377
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
> Согласен, только на чистом SQL и ХП обработку данных реализовать
> невозможно. SQL запросы должен кто то толкать и забирать результат и
> предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с
> многими ограничениями,
можно с этого места - поподробнее? А то ниасилил.

>т.е. непременно нужен некий клиент БД.
QA - подойдет как клиент?
или SQL*Plus?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635455
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabСогласен, только на чистом SQL и ХП обработку данных реализовать невозможно. SQL запросы должен кто то толкать и забирать результат и предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с многими ограничениями, т.е. непременно нужен некий клиент БД. А раз есть клиент, то частенько есть возможность разместить расчёты на нём, а не в СУБД. Клиент в данном случае не обязательно GUI компонент или AS. Это может быть некий сервис, например менеджер расчёта зарплаты.1. ХП может вызываться из JOB-а и записывать данные в таблицу.
Начислили ЗП и записали кому и за что начислили.
А клиент (бухгалтер) посмотрит уже ПОТОМ, когда у него время будет.

2. Сервис - это совсем не трехзвенка.
Это некий модуль сбоку, очень похожий на клиентское приложение, у которого украли пользователя и GUI.

3. Сервис, так же как и ХП, никому ничего не показывает.
Так что аргумент "SQL запросы кто то толкать и забирать результат и предоставлять его пользователю " - не катит.
Сервис это не сможет сделать так же как и ХП.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635556
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelyСервис это не сможет сделать так же как и ХП.
сервис делает то, на что запрограммирован. Скажут ПОКАЗЫВАЙ - покажет.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635630
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabПример с распределённой системой не показательный. Понятное дело, если раскидать нагрузку по сотне СУБД, то задача будет работать быстроЭто вынужденная мера, было бы возможно, сделали бы всё на одном сервере. Вопрос не в этом. Было утверждение, что при количестве человек более нескольких тысяч, производить расчёт их харатеристик (заработная плата, наработка часов и т. п.) с помощью SQL становится затруднительно. Это не так. Я привел время расчёта для ~2000 работников - ~1:30. Умножаем на 2, получаем ~ 3 минуты. Цифра вполне приемлемая, даже если её умножить на 10. Сервер там обычный - 2 х Xeon 2.4 ГГц 2 ГБ ОЗУ, ну или что-то вроде того, точно его характеристики не помню. Да и с чего бы тот же алгоритм, реализованный на C++ стал бы работать заметно быстрее? За счёт того, что мы напишем Index Seek лучше чем "мудрецы", разработавшие MSSQL? Сомнительно.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635631
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm BelyСервис это не сможет сделать так же как и ХП.сервис делает то, на что запрограммирован. Скажут ПОКАЗЫВАЙ - покажет.Кому и что? Гуссары, молчать
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635701
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely mcureenabСогласен, только на чистом SQL и ХП обработку данных реализовать невозможно. SQL запросы должен кто то толкать и забирать результат и предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с многими ограничениями, т.е. непременно нужен некий клиент БД. А раз есть клиент, то частенько есть возможность разместить расчёты на нём, а не в СУБД. Клиент в данном случае не обязательно GUI компонент или AS. Это может быть некий сервис, например менеджер расчёта зарплаты.1. ХП может вызываться из JOB-а и записывать данные в таблицу.
Начислили ЗП и записали кому и за что начислили.
А клиент (бухгалтер) посмотрит уже ПОТОМ, когда у него время будет.

2. Сервис - это совсем не трехзвенка.
Это некий модуль сбоку, очень похожий на клиентское приложение, у которого украли пользователя и GUI.

3. Сервис, так же как и ХП, никому ничего не показывает.
Так что аргумент "SQL запросы кто то толкать и забирать результат и предоставлять его пользователю " - не катит.
Сервис это не сможет сделать так же как и ХП.

Всё правильно.

По 1. Чтобы что то посмотреть бухгалтер должен иметь GUI к таблице или получить результат в виде бумажного отчёта. Лично я не видел ХП, которые что то печатают на принтере.

По 2. Сервис это часть трёхзвенки (СУБД, AS это наборы сервисов), но не обызательно трёхзвенка. Cервис может быть прицеплен к системе сбоку или сзади.

По 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635725
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
По 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов.
ну почему же. В контракте сервиса есть его Тип. А это может быть:
Presentation Process
Business
Data
Integration
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635779
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab, ты все же предпринимаешь попытки оправдать свое незнание PL/SQL в частности и СУБД вообще? Зачем? Это очень .... плохо получается :)

Кстати, попутно еще выясняется твоя проблема с пониманием распределенных вычислений, систем, многозвенок и т.д. Каша какя-то. Уже и не смешно.

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635786
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К mcureenabПример с распределённой системой не показательный. Понятное дело, если раскидать нагрузку по сотне СУБД, то задача будет работать быстроЭто вынужденная мера, было бы возможно, сделали бы всё на одном сервере. Вопрос не в этом. Было утверждение, что при количестве человек более нескольких тысяч, производить расчёт их харатеристик (заработная плата, наработка часов и т. п.) с помощью SQL становится затруднительно. Это не так. Я привел время расчёта для ~2000 работников - ~1:30. Умножаем на 2, получаем ~ 3 минуты. Цифра вполне приемлемая, даже если её умножить на 10. Сервер там обычный - 2 х Xeon 2.4 ГГц 2 ГБ ОЗУ, ну или что-то вроде того, точно его характеристики не помню. Да и с чего бы тот же алгоритм, реализованный на C++ стал бы работать заметно быстрее? За счёт того, что мы напишем Index Seek лучше чем "мудрецы", разработавшие MSSQL? Сомнительно.

Я уже сказал, что в runtime расчёт ЗП сам по себе на современных серверах даже начального уровня в настоящее время не является узким местом. Проблема проявится, когда на сервере БД будут одновременно запущены многие процессы, так что время реакции СУБД начнёт плавать в очень широких пределах создавая проблемы пользователям. Если ЗП расчитывается 1 час, это не проблема. Если в течении 1.5 минут сервер не обслуживает запросы пользователей, это проблема.

Сам по себе C++ не гарантирует увеличение производительности, но он позволяет при сопоставимой скорости получить значительно более богатую функциональность, чем даёт чистый SQL. Да в общем вопрос не в языке, а в виртуальной машине. Java тоже работает не супер быстро, но JVM есть везде, тогда как нормальная PL/SQL машина втроена в СУБД и отдельно не работает.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635813
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabПо 1. Чтобы что то посмотреть бухгалтер должен иметь GUI к таблице или получить результат в виде бумажного отчёта. Лично я не видел ХП, которые что то печатают на принтере.нет ничего невозможного - точно так же как и сервис заставить показывать :)
Если вы не поняли о чем я - поясню еще раз.
ХП (так же как и сервис) - ведут расчет независимо от клиентских приложений.
Собственно, клиентского приложения может вообще не быть как такового.
На расчет ЗП - это никак не влияет.

mcureenabПо 2. Сервис это часть трёхзвенки (СУБД, AS это наборы сервисов), но не обызательно трёхзвенка. Cервис может быть прицеплен к системе сбоку или сзади. Вы занимаетесь словоблудством - библиотека (DLL или .so или еще как) - тоже является частью различных программ и систем.
Но это совершенно ни о чем не говорит - к каким классам относятся программы, состоящие из библиотек.

mcureenabПо 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов.Странненький у вас GUI, однако.
В таком случае - управление RAID-контроллером тоже можно назвать ГУЕм.
Там и лампочка есть, по которой человек может что-то попытаться понять.
А если постараться, то скрипом хардов можно морзянку передавать.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635829
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygramcureenab, ты все же предпринимаешь попытки оправдать свое незнание PL/SQL в частности и СУБД вообще? Зачем? Это очень .... плохо получается :)

Кстати, попутно еще выясняется твоя проблема с пониманием распределенных вычислений, систем, многозвенок и т.д. Каша какя-то. Уже и не смешно.



Моё незнание PL/SQL в частности и СУБД вообще приносит мне и моим заказчикам неплохие деньги. Может быть я чтото неправильно делаю?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635839
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так мы же не заказчики
Можно найти лохов, вешать им лапшу на уши и раскручивать постоянно на бабки - не спорю, можно, но это умение другого плана :))

А тут не лохи, не заказчики, нас маркетинговыми лозунгами не возьмешь :)

ЗЫ Интересно, а заказчики не считали, сколько экономии было бы, откажись они от распределенных вычислений и перейди на обычный к-с? ;)))

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635848
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely mcureenabПо 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов.Странненький у вас GUI, однако.
В таком случае - управление RAID-контроллером тоже можно назвать ГУЕм.
Там и лампочка есть, по которой человек может что-то попытаться понять.
А если постараться, то скрипом хардов можно морзянку передавать.

Уговорил. Лампочки на HD, это не GUI. А морянка, это уже мультимедия!

Однако... Если установить 2млн хардов с лампочками в матрицу, то вполне реально получить HD изображение со звуком!
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635901
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraТак мы же не заказчики
Можно найти лохов, вешать им лапшу на уши и раскручивать постоянно на бабки - не спорю, можно, но это умение другого плана :))

А тут не лохи, не заказчики, нас маркетинговыми лозунгами не возьмешь :)

ЗЫ Интересно, а заказчики не считали, сколько экономии было бы, откажись они от распределенных вычислений и перейди на обычный к-с? ;)))

Так я с тебя бабок и не требую.

к-с, это частный случай распределённой системы.

Заказчики могут считать, что угодно, только СУБД не решает их задачи реального времени (на ней зарплата расчитывается ), и по любому им нужен выделенный сервер, который изолирует оконечное оборудование от СУБД, и обеспечит необходимое время отклика.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34635938
во дает
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot tygra]Траваааааа................ :))

Больше слов нет :)

а tygra, по-моему, уже давно на героине...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636067
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabЯ уже сказал, что в runtime расчёт ЗП сам по себе на современных серверах даже начального уровня в настоящее время не является узким местом. Проблема проявится, когда на сервере БД будут одновременно запущены многие процессы, так что время реакции СУБД начнёт плавать в очень широких пределах создавая проблемы пользователям. Если ЗП расчитывается 1 час, это не проблема. Если в течении 1.5 минут сервер не обслуживает запросы пользователей, это проблема.И из-за чего "расчёт зарплаты" должен тормозить работу других пользователей? Исходные данные для расчёта меняться не должны. Значит блокировок не будет. Если оперативки хватит (а её по-хорошему должно хватать), то очереди к диску тоже не будет. Процессора 2, значит все ресурсы расчёт на себя не возьмёт (ну если не распараллелится конечно, но тут всё должно быть продумано). А сейчас вообще уже четырёхядерные процессоры пошли. Если нам не критично время выполнения расчёта, то там можно искуственных пауз навставлять, чтобы другим процессам на сервере больше процесорного времени досталось. Конечно, всё будет несколько медленнее, но такого, что сервер вдруг перестанет отвечать на запросы пользователей случиться не должно. Вариантов решения много, всё зависит от конкретной задачи. И никакой C++, C#, Java и т. п. тут не нужны.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636115
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
> По 1. Чтобы что то посмотреть бухгалтер должен иметь GUI к таблице или
> получить результат в виде бумажного отчёта. Лично я не видел ХП, которые
> что то печатают на принтере.
Т.е. из-за того, что ХП не умеют печатать на принтере (кстати - почему
не умеют? очень даже) - вы делаете вывод - надо производить расчеты на
клиенте? Зобавно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636126
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabСам по себе C++ не гарантирует увеличение производительности, но он позволяет при сопоставимой скорости получить значительно более богатую функциональность, чем даёт чистый SQL .Например? Какую обработку данных, хранящихся в таблицах в БД, удобнее писать на С++ чем на SQL? Уж не рассчёт-ли выполненной работы сотрудниками, выраженной во времени, деньгах или других единицах? Ню, ню... :-))
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636130
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К mcureenabЯ уже сказал, что в runtime расчёт ЗП сам по себе на современных серверах даже начального уровня в настоящее время не является узким местом. Проблема проявится, когда на сервере БД будут одновременно запущены многие процессы, так что время реакции СУБД начнёт плавать в очень широких пределах создавая проблемы пользователям. Если ЗП расчитывается 1 час, это не проблема. Если в течении 1.5 минут сервер не обслуживает запросы пользователей, это проблема.И из-за чего "расчёт зарплаты" должен тормозить работу других пользователей? Исходные данные для расчёта меняться не должны. Значит блокировок не будет. Если оперативки хватит (а её по-хорошему должно хватать), то очереди к диску тоже не будет. Процессора 2, значит все ресурсы расчёт на себя не возьмёт (ну если не распараллелится конечно, но тут всё должно быть продумано). А сейчас вообще уже четырёхядерные процессоры пошли. Если нам не критично время выполнения расчёта, то там можно искуственных пауз навставлять, чтобы другим процессам на сервере больше процесорного времени досталось. Конечно, всё будет несколько медленнее, но такого, что сервер вдруг перестанет отвечать на запросы пользователей случиться не должно. Вариантов решения много, всё зависит от конкретной задачи. И никакой C++, C#, Java и т. п. тут не нужны.

Всё что ты сказал даёт понять, что сервер нагружен очень слабо. В системе с большим числом пользователей это не так. Или ты думаешь, что количество подключений к СУБД равно числу процесссоров на сервере?

2 процессора? 4 процессора? Это в два, четыре раза больше стоимость лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас развели на покупку оборудования и СУБД в значительно большем объёме чем это требуется. При таком подходе, почти все задачи (даже генерацию html страниц) можно решать на СУБД без проблем.

Собственно для посчитать и сохранить ЗП C++ не нужен. Но чтобы распечать отчёты, хоть и не C++, но нужна какая то внешняя программа, хотя бы Web browser.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636143
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
> 2 процессора? 4 процессора? Это в два, четыре раза больше стоимость
> лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас
А точно "в два, четыре раза больше" - ничего не путаем, не?

> это требуется. При таком подходе, почти все задачи (даже генерацию html
> страниц) можно решать на СУБД без проблем.
Оракл, кста, этим благополучно занимается - см HTP/HTF/OWA*.

> Собственно для посчитать и сохранить ЗП C++ не нужен. Но чтобы распечать
> отчёты, хоть и не C++, но нужна какая то внешняя программа, хотя бы Web
> browser.
Ок. Поелику IE умеет печатать отчеты - пусть он считает зряплату?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636179
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabВсё что ты сказал даёт понять, что сервер нагружен очень слабо. В системе с большим числом пользователей это не так.Ну не знаю. Всё относительно конечно, но подключений 200 - 500 днём стабильно держится. Сколько ночью - не знаю, ни разу не ночевал на работе... :-))
mcureenab2 процессора? 4 процессора? Это в два, четыре раза больше стоимость лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас развели на покупку оборудования и СУБД в значительно большем объёме чем это требуется. Чё-то я не понял, кто кого разводил? Мы заказчиков, или они нас? О чём вы... Ещё неизвестно во сколько обойдётся для заказчика "расчёт зарплаты" на С++. Разработка, отладка, опытное внедрение и т. п. И ещё не факт что в итоге всё получится и будет хорошо работать. Вон, соседний топик про 1С просто усыпан "лестными" отзывами о качестве продукта.
mcureenabСобственно для посчитать и сохранить ЗП C++ не нужен.Я перестал понимать, о чём идёт дискуссия. Уточните пожалуйста Вашу точку зрения. А то, судя по этому посту, мы с вами придерживаемся одинаковой позиции по данному вопросу. :-))
mcureenabНо чтобы распечать отчёты, хоть и не C++, но нужна какая то внешняя программа, хотя бы Web browser.Полностью с вами согласен.
lockyОк. Поелику IE умеет печатать отчеты - пусть он считает зряплату?Ага, на java-script, самое то... :-))
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636187
Sergey Tokarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, поправьте меня, если я ошибаюсь, но в примере с той же зарплатой.
Для того, чтобы рассчитать ее на клиенте, необходимо как минимум вытянуть данные с сервера.

Причем, вытянуть нужно не "готовые" данные, которые процедура может выдавать, к примеру, для печати отчета, а вытянуть нужно "сырые" данные, обработать их, и загнать их назад. Объем таких данных ОЧЕНЬ большой, иначе с чего бы был медленный расчет на СУБД?

Из этого следует, как минимум
1. Затраты времени на таскание данных туда-сюда
2. Затраты памяти на хранение данных, пока мегабыстрая клиентская программа будет их обрабатывать.
3. Геморрой с программированием клиентской части, в которой нужно будет реализовывать часть, пусть и небольшую, функциональности СУБД. Тот же индексный поиск, например.

Не факт, совсем, что совокупные затраты времени на все вышеперечисленное окупят выигрыш в скорости рассчетов.

Мое ИМХО - СУБД - это приложение для обработки данных, и поэтому обработку данных нужно делать именно на ней. За редкими исключениями.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636207
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Tokarev3. Геморрой с программированием клиентской части, в которой нужно будет реализовывать часть, пусть и небольшую, функциональности СУБД. Тот же индексный поиск, например.И плюс время на построение этих локальных индексов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636216
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
Распределённые вычисления принципиально отличаются от локальных. Возможно, в данном случае система не учитывала сетевые задержки. Если программа на C++ изначально была основана на принципах локальных вычислений, то неудивительно, что её перенос на сервер позволил увеличить скорость вычислений.

В данном ответе, о распределённых вычислениях я не упоминал. Я привёл примеры с ХП и без неё.

mcureenab
Согласен, только на чистом SQL и ХП обработку данных реализовать невозможно.

Ещё как можно, основная обработка у меня именно так и делается, проверено на практике.
В задаче для расчёта зарплаты, основные расчёты можно свести к определённому изолированному набору вычислений, допустим для одного лицевого счёта, всё это можно заложить в ХП. Дело в том, что при этом производятся периодически считывание данных необходимых для расчётов и быстрее всего это будет, когда данные находятся на одном сервере. А при распределённых вычислениях выигрыш будет заметен, тогда когда процесс вычисления можно разбить на несколько частей. В при расчёте зарплаты можно легко обойтись без этого.
А "толкают" все эти ХП, конечно операторы с помощью клиентских приложений.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636219
laleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из опыта:
Delphi 5, 6, 7.
MSSQL 2000, 2005
Доступ к данным сервера - ADO.

1. Первична архитектура БД. Создавать структуру, ограничения целостности - пока не подключать, отлаживать архитектуру - потом подключать ограничения целостности. Триггеры - дело вкуса, считаю излишним, расход ресурсов.
2. Доступ к данным черех хранимые процедуры. Обязательно параметризовать. Данные с сервера - на клиенте минимизировать. Зачем тащить курсоры на клиента > 50 строк?
3. Хранимыми процедурами обеспечить ввод, корректировку, удаление.
4. Лучше сделать несколько ХП вместо одной.
5. В теле программы - ни одного SQL запроса (для фильтрации курсора - можно.)
6. Поскольку зарплата - конфиденциальная вещь - делать на нее отдельную БД со свом доступом.
Обшие справочники можно размещать в отдельной БД.
7. Не злоупотреблять применением деревоподобных компонентов.
8. Мне роднее GRID, чем ComboBox и т.п.
9. Считать пересборку проекта - лишней процедурой. Лезть в программу по каждому чиху - а для чего SQL Server?

Много конечно еще чего, но это известная теория СУРБД.
С уважением и удачи!
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636232
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
laleks
6. Поскольку зарплата - конфиденциальная вещь - делать на нее отдельную БД со свом доступом.
Обшие справочники можно размещать в отдельной БД.

Всё это в лёгкую делается с помощью видов. Я у себя так и реализовал.

Алексей К
Я привел время расчёта для ~2000 работников - ~1:30. Умножаем на 2, получаем ~ 3 минуты.

Совсем запутался в арифметике. Для уточнения, сколько же времени у вас требуется на полный расчёт для одного сотрудника?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636254
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TomsСовсем запутался в арифметике. Для уточнения, сколько же времени у вас требуется на полный расчёт для одного сотрудника?Ну если 2000 сотрудников обсчитываются где-то 1.5 ... 2 минуты, то один - "мгновенно". Лицевой счёт сотрудника с различными расчётами нарастающим итогом с начала месяца по первичным данным открывается где-то секунды за полторы. Хочу отметить, что у меня не совсем зарплата. У меня расчёт рабочего времени, времени отвлечений и ряда специфичных для нашей предметной области характеристик сотрудника. С другой стороны, если я правильно понимаю принцип расчёта заработной платы, то это практически тоже самое.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636297
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К mcureenab2 процессора? 4 процессора? Это в два, четыре раза больше стоимость лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас развели на покупку оборудования и СУБД в значительно большем объёме чем это требуется. Чё-то я не понял, кто кого разводил? Мы заказчиков, или они нас? О чём вы... Ещё неизвестно во сколько обойдётся для заказчика "расчёт зарплаты" на С++. Разработка, отладка, опытное внедрение и т. п. И ещё не факт что в итоге всё получится и будет хорошо работать. Вон, соседний топик про 1С просто усыпан "лестными" отзывами о качестве продукта.


Про это я писал. C++ слишком сложный язык для описания алгоритма расчёта зарплаты, а это скорее самый важный критерий. Дело не в C++, а в возможности вынести процесс расчёта на отдельный от СУБД узел. Как бы ХП выдернуть из СУБД и пустить в свободное плавание довольно сложно.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636305
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Ну если 2000 сотрудников обсчитываются где-то 1.5 ... 2 минуты, то один - "мгновенно". Лицевой счёт сотрудника с различными расчётами нарастающим итогом с начала месяца по первичным данным открывается где-то секунды за полторы.

Так это нормально, это и есть работа в режиме реального времени. Это когда после ввода данных, бухгалтер видит результаты расчёта и сразу проверяет правильно ли произведён расчёт и если ОК, то можно смело переходить к следующему л/с.
С такой скоростью работы системы нам удалось свести количество ошибок фактически к нулю, при этом каждый бухгалтер ведёт 600-700 чел, а на время болезни или отпуска одной, ещё больше.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636317
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
C++ слишком сложный язык для описания алгоритма расчёта зарплаты, а это скорее самый важный критерий.

Нормальный язык, для такой задачи не сложнее других, у меня клиентские части написаны на C++ Builder. И я ни сколько не жалею, что выбрал этот язык прграммирования. Все расчёты как я уже отмечал сводятся к простым простым арифметическим действиям. А вот придумать как реализовать эту задачу и как всё это разбить на сравнительно простые куски, вот это действительно не просто.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636320
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
laleks
2. Доступ к данным черех хранимые процедуры. Обязательно параметризовать. Данные с сервера - на клиенте минимизировать. Зачем тащить курсоры на клиента > 50 строк?
3. Хранимыми процедурами обеспечить ввод, корректировку, удаление.
4. Лучше сделать несколько ХП вместо одной.


2, 3. ХМ. А чем select, insert, update, delete не устраивает? Тем более что компоненты доступа к БД, эти запросы самостоятельно создают. И триггеры никто не отменял. А >50 строк, так это может быть так пользователю надо. Другое дело, если пользователю много строк не надо, то нефиг их тянуть все.
4. Может быть для чего то и лучше. Только не надо забывать, что для вызова ХП или DML, на клиенте и сервере нужно открыть курсор, разобрать запрос, выполнить его, по ходу открывая рекурсивные курсоры и запросы. Если все DML операции вызывать через ХП, то СУБД потребуется чуть не вдвое больше памяти для хранения курсоров и дополнительное время для их компиляции.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636324
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabПро это я писал. C++ слишком сложный язык для описания алгоритма расчёта зарплаты, а это скорее самый важный критерий. Дело не в C++, а в возможности вынести процесс расчёта на отдельный от СУБД узел. Как бы ХП выдернуть из СУБД и пустить в свободное плавание довольно сложно.Зачем что-то куда-то выносить, если и без "выноса" всё отлично работает. Ну если так сильно хочется вынести аналитику отдельно - поставьте рядом ещё одну СУБД и назовите её OLAP .
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636332
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab2, 3. ХМ. А чем select, insert, update, delete не устраивает? Тем более что компоненты доступа к БД, эти запросы самостоятельно создают. И триггеры никто не отменял. А >50 строк, так это может быть так пользователю надо. Другое дело, если пользователю много строк не надо, то нефиг их тянуть все.
4. Может быть для чего то и лучше. Только не надо забывать, что для вызова ХП или DML, на клиенте и сервере нужно открыть курсор, разобрать запрос, выполнить его, по ходу открывая рекурсивные курсоры и запросы. Если все DML операции вызывать через ХП, то СУБД потребуется чуть не вдвое больше памяти для хранения курсоров и дополнительное время для их компиляции.Бес коментариеф....
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636338
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TokarevМое ИМХО - СУБД - это приложение для обработки данных, и поэтому обработку данных нужно делать именно на ней. За редкими исключениями.

Если бы СУБД была предназначена для обработки данных, её бы назвали Система Обработки Данных (СОД). Одако СУБД назвали Системой Управления Базой Данных. Думаю, это не случайно. База Данных, это вполне конкретные файлы на диске, а не вообще всякоразные сведения, которые можно как то обработать. Управление, это тоже не совсем Обработка. ИМХО, управление не порождает новых данных, но размешает их в БД (в файлах на диске) или извлекает их оттуда наилучшим образом. Обработка скорее связана с преобразованием одних данных в другие, т.е. всякоразные вычисления, кодирование, шифрование, сжатие и распаковка. Обработка вообще может быть не связана с БД.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636361
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alex_Toms
Да действительно, бывает полезно сразу после ввода данных отобразить оператору какие-нибудь расчётные характеристики, основанные на вновь введённых данных, чтобы он смог оценить правильность вода.

2 mcureenab
Ну так чё там с OLAP, как идея? Или не понравилась?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636363
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabЕсли бы СУБД была предназначена для обработки данных, её бы назвали Система Обработки Данных (СОД). Одако СУБД назвали Системой Управления Базой Данных.Вас послушать, так любому запросу сложнее "SELECT * FROM tbl" не место в базе.
Ведь это уже будет обработка данных, а не управлением данных.

Группировка, аналитика и джоины - всех на клиента!
Не барское это дело данные обрабатывать...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636365
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
2, 3. ХМ. А чем select, insert, update, delete не устраивает? Тем более что компоненты доступа к БД, эти запросы самостоятельно создают. И триггеры никто не отменял. А >50 строк, так это может быть так пользователю надо. Другое дело, если пользователю много строк не надо, то нефиг их тянуть все.

При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.

Систему необходимо проектировать так, чтобы не было дублирования данных при этом можно обойтись и без триггеров. Я например вообще обошёлся без них. Меньше тормозов в работе.

А сколько строк тянуть на клиента? Конечно лишего не надо, тут даже и спорить нет большёй необходимости. Хотя если делать курсор на сервере и тащить только 5 записей например из полученных 500, то остальные останутся на сервере и будут отнимать его ресурсы (временное пространство не резиновое). И поэтому иногда выгоднее всё же их утащить на клиента и там делать многократный перебор этих значений.
В ADO напрмер, можно реализовать курсор как на сервере так и на клиенте, всё зависит от каждого конкретного случая...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636377
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
Автор, пиши еще...
Плакал весь день, не переставая....
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636378
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Да действительно, бывает полезно сразу после ввода данных отобразить оператору какие-нибудь расчётные характеристики, основанные на вновь введённых данных, чтобы он смог оценить правильность ввода.

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

Bely
Группировка, аналитика и джоины - всех на клиента!
Не барское это дело данные обрабатывать...

Вот это я не понял, как будет всё это клиент делать? Он ведь абсолютно не владеет языком запросов!
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636379
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
>База Данных, это вполне конкретные
> файлы на диске, а не вообще всякоразные сведения, которые можно как то
А если у мена рав-партишн - то это уже не СУБД?
а если мне надо просуммировать столбец в табличке - это обработка
данных? Кто это должен делать - сервер или клиент?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636393
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Toms Bely
Группировка, аналитика и джоины - всех на клиента!
Не барское это дело данные обрабатывать...
Вот это я не понял, как будет всё это клиент делать? Он ведь абсолютно не владеет языком запросов!Языком запросов владеет программист, а сервер и клиент выполняет инструкции

По поводу того, что клиент не умеет выполнять SQL запросы - тоже не верно.
Вспомните, хотя бы, старый добрый Access.
Запросы выполняет, работает полностью на клиенте.

Дело в том, что большинство запросов проще выполнить там же где лежат данные, чем передавать данные в отдельную программу.
Именно это и делает СУБД.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636416
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
Языком запросов владеет программист, а сервер и клиент выполняет инструкции

По поводу того, что клиент не умеет выполнять SQL запросы - тоже не верно.
Вспомните, хотя бы, старый добрый Access.
Запросы выполняет, работает полностью на клиенте.

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

Ещё раз повторюсь, SQL запросы выполняет всё же SQL сервер, а не как не клиент ... А программист просто знает как работают запросы.

На сколько я правильно помню, старый добрый Access запросы всё же выполнять не мог, их за него выполнял механизм Jet. А почему всё это работало полностью на клиенте. Всё очень просто, при инсталяции офиса, Jet автоматом садится. И при работе с ADO рекомендуют выбирать для работы с MDB именно Jet с ним выше скорость, и поэтому функции он может выполнить которые есть только в Access.

Ну а по третьему пункту, в общем именно за это я "агитирую", с поправкой: не проще выполнить там же где лежат данные, а обработка происходит быстрее...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636451
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Toms
При получении запросов select, insert, update, delete сервак:
1: сначала призводит синтаксический разбор текста
2: затем компилирует
3: производит оптимизацию плана запроса
4: и только после этого выполняет сам запрос.
При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный.



В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4.
Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636460
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
B MSSQL так же...
С Oracle много схожего, хотя у каждой БД есть свои изюминки, которой нет у другой.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636461
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
mcureenab wrote:
>База Данных, это вполне конкретные
> файлы на диске, а не вообще всякоразные сведения, которые можно как то
А если у мена рав-партишн - то это уже не СУБД?

Файл на диске, это область памяти. Работаем мы с этой областью через файловую систему или как с raw устройством файл остаётся файлом.

lockyа если мне надо просуммировать столбец в табличке - это обработка
данных?

Да.

lockyКто это должен делать - сервер или клиент?

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


Alex_TomsВот это я не понял, как будет всё это клиент делать? Он ведь абсолютно не владеет языком запросов!

Хех. Что, без SQL уже посчитать ничего не умеем? SQL запрос в конечном итоге сводится к выполнению определённого алгоритма, который при желании можно запрограммировать на алгоритмическом языке. Совсем не обязательно загружать массив чисел в БД, чтобы посчитать сумму его элементов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636478
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
Хех. Что, без SQL уже посчитать ничего не умеем? SQL запрос в конечном итоге сводится к выполнению определённого алгоритма, который при желании можно запрограммировать на алгоритмическом языке. Совсем не обязательно загружать массив чисел в БД, чтобы посчитать сумму его элементов.

И без SQL посчитать умеем, и даже лучше чем он, например при сложных научных расчётах...
Вообще то БД это в первую очередь хранилище данных. Будут данные, будет что обрабатывать...
Наибольшая скорость работы SQL серверов заточена как раз на выполнение запросов, к примеру с помощью серверных курсоров, суммирование будет гораздо медленней чем простой select.
А если массив чисел находится на клиенте, то это не наш случай. Дебаты идут по вопросу, качать данные с сервака на клиента и например там суммировать, или суммировать на сервере...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636481
serjio-k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже всегда считал, что СУБД - чОрное зло! Ну а так и сам я злой и подлый, служу ему с большим удовольствием ;)

Если же быть серьезным, вынос вычислений на отдельный сервер - не самая плохая идея. Виртуальная машина PL/SQL действительно медленная. С одной стороны лучше втюхать заказчику SunFire 15K с бизнес-логикой на PL/SQL, вместо двух 890-х (один - сервер БД, второй - сервер приложений). Но что вы будете говориь заказчику, когда самый топовый сервер (SunFire 25K или HP SuperDom) начнет не справляться с вычислениями (про RAC молчим, эта технология подходит далеко не для всех задач)? Правильно - вы ничего не будете говорить, а таки будете выносить бизнес логику в С/C++ приложение.

А зарплату надо считать в 1С :) Это была провокация.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636493
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serjio-k
Если же быть серьезным, вынос вычислений на отдельный сервер - не самая плохая идея. Виртуальная машина PL/SQL действительно медленная...

А зарплату надо считать в 1С :) Это была провокация.

Ситуацию когда процесс вычислений на HP SuperDom с PL/SQL, выносили на отдельный сервер с C/C++ я встречал. И при этом получали заметный выигрыш в скорости. Но это очень редкий случай.

А про то, что зарплату надо считать в 1С : Это не провокация.
Пусть поделятся опытом кто на предприятии численностью в тысячи человек, внедрил расчёт зарплаты на 1С, как скорость работы, на каком железе, ну очень интересно...
На сколько я в курсе например "Камин", рекомендуют до 1000 человек, а реально до 500.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636494
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_TomsДебаты идут по вопросу, качать данные с сервака на клиента и например там суммировать, или суммировать на сервере...

Что тут дебаты разводить. Тупая задача, тупое решение. Гораздо интереснее, когда нам нужно и агрегаты поиметь и детализацию. Ещё интереснее, когда клиент часть данных уже имеет в локальном кэше и вообще работает с СУБД только через локальный кэш и про SQL никакого понятия не имеет.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34636508
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab
Что тут дебаты разводить. Тупая задача, тупое решение.

Прежде чем задачу называть тупой, неплохо бы её самому решить и поделиться своим опытом.
А тупое решение может быть у любой задачи, гораздо сложнее найти хорошее решение!

mcureenab
Гораздо интереснее, когда нам нужно и агрегаты поиметь и детализацию...

В это не понял? Как раз с этим то проблем и нет.

mcureenab
Ещё интереснее, когда клиент часть данных уже имеет в локальном кэше и вообще работает с СУБД только через локальный кэш и про SQL никакого понятия не имеет.

Ну а в локальном кэше данные то откуда возьмутся как не из БД, да и этой части данных может не хватить, значит их туда всё же необходимо закачать? Да можно их обработать и на клиенте.
Повторяюсь: что выгоднее, качать данные с сервака на клиента и например там суммировать, или суммировать на сервере...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #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
Тонкий или толстый клиент
    #34638949
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kilaviхе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД.
Что, и причины даже приводят??? :))

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34638988
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевРешено было осуществить сплайн интерполяцию (кубическую) и передавать клиенту только коэффициенты сплайна. Не думаю, что эту задачу надо (и можно ли) делать в среде SQL-сервера. Это вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639023
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab wrote:
> В большинстве случаев обработка данных выполняется в буфере процесса, а
> затем результат сохраняется в БД. Естественно за время работы процесса
> данные в буфере могут устареть. В одних случаях это не критично, в
> других - критично, приходится использовать блокировки.
А можно - поподробнее о синхронизации локальных кешей клиентов с "общими
данными сервера", а также о наложении клиентами "блокировок" куда-либо?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639174
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra kilaviхе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД.
Что, и причины даже приводят??? :))

-- Tygra's --
Мои фотогалереи тут и тут Да вроде ничего особенного . Обычный бред на почве плохих знаний СУБД.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639332
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭто вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать.
предлагаю учредить сообщество разработчиков 3D игр на SQL.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639333
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm Алексей КЭто вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать.
предлагаю учредить сообщество разработчиков 3D игр на SQL.

И чтобы без курсоров! Ибо с курсорами- неспортивно!
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639338
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К ничего особенного. Обычный бред на почве плохих знаний СУБД.
обычный бред на почве плохих знаний многозвенных систем. Легче стало? Пора связываться с Соловьевым и организовывать "К барьеру"
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639342
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm Алексей КЭто вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать.
предлагаю учредить сообщество разработчиков 3D игр на SQL.Нивапрос, как только DirectX под MSSQL выйдет, так сразу. :-))
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639349
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо из меня делать "врага государства". Я не против сервера приложений в принципе как такового. Я за то, что бы не делать его там, где его можно не делать.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639357
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab[quot Bogdanov Andrey]Не знаю как в MSSQL, но в Oracle возвращение данных с помощью ХП - это два запроса вместо одного. ...
Ну так вот выполнение первого из этих запросов требует ровно тех-же действий, что и выполнение обычного select (правда чем у Alex_Toms различаются п.1 и п.2 я не понял). Ну а второй запрос (тот что внутри ХП), естественно, уже скомпилирован. А кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше.

ХМ. Я не знаю, что вы понимаете под компиляцией SQL запроса, но во время компиляции ХП PL/SQL, происходит только проверка синтаксиса и семантики статического запроса[quot]

А почему вы этот вопрос мне задаете? Читайте внимательнее.
О компиляции запросов упоминал Alex_Toms пытаясь доказать экономию ресурсов сервера при работе через ХП. Вот ему вопрос и адресуйте. Я же как раз, напротив, возражал ему, утверждая, что при работе черех ХП работы для сервера только больше. И, возражая, старался придерживаться используемых оппонентом терминов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639361
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНе надо из меня делать "врага государства". Я не против сервера приложений в принципе как такового. Я за то, что бы не делать его там, где его можно не делать.
сорри, даже не думал об этом.
У меня другой подход, перефразируя Вас: Я за то, чтобы не делать на нем то, что можно сделать эффективней на уровне СУБД . Но я даже не представляю как без него можно обходится в том зоопарке систем, приложений, протоколов, форматов и т.п. которые, по крайней мере у нас на проектах. Но запихивать логику в хранимые процедуры СУБД не брезгуем, даже уважаем. Одно другому не мешает. :)
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639371
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 iscrafm

Тут главное чтобы без фанатизма :-))
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639374
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К2 iscrafm

Тут главное чтобы без фанатизма :-))
почему-то любая подобная тема превращается в противостояние. Как будто кого-то заставляют делать два или три звена. такая уж традиция.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639375
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, утро вечера мудренее, у нас уже ночь, спать пойду... :-))
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639383
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К2 iscrafm

Тут главное чтобы без фанатизма :-))

По теории распределённые приложения создаются для повышения производительности системы, но ИМХО, чаще принимая решение разместить вычисления в СУБД, AS или ещё где то разработчики руководствуются совсем другими соображениями. Обычно это доводы: так быстрее и проще сделать. В частности плохой метод, который бомбит СУБД SQL запросам будет лучше работать в СУБД, чем удалённо, но ведь от этого он не станет хорошим методом.

Что то мне подсказывает, что рано или поздно в каждой развивающейся системе должен появиться сервер приложений, хотя бы совсем специализированный. Может вендор платформы заставит это сделать, может потребуются средства, которые СУБД не поддерживаются, может ориентированные на данные проектировщики вымрут и проще будет найти объектно ориентированного проектировщика, и т.д. ...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639556
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А возможно дело и в другом. Любую систему делают конкретные люди , с вполне конкретными знаниями. Удобство трёхзвёнки, простота двухзвёнки и изящность FoxPro субъективны :) . Человека, успешно применившего одну из архитектур, не переубедить. А если архитектура оказалась неудачной - проще сослаться на реализацию, ведь с ней в этом случае проблем тоже предостаточно. Отсюда и holy wars.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639565
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если человек применял разные архитектурные решения для разных систем, в зависимости от их назначения? Что-то не вяжется. :)
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639568
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmа если человек применял разные архитектурные решения для разных систем, в зависимости от их назначения? Что-то не вяжется. :)
Скольких людей, имеющих опыт более чем однократного осознанного перехода между архитектурами "логика в основном на сервере БД" и "логика в основном на сервере бизнес-логики", Вы знаете?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639603
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кmcureenab, ты бы хоть книжку какую прочитал бы, перед тем как тут выступать. Рекомендую начать с этого .

В статье речь идёт о клиенте-front end приложении, которое решает задачи презентации данных пользователю системы. Естественно по сравнению с таким клиентом СУБД выполняет самую большую часть работы - находит, фильтрует, агрегирует даные. Дальнейшим развитием этой ахитектуры является многозвенная архитектура. В задаче расчёта ЗП, и пакетных вычислений вообще (своего рода back office) взаимодействие с пользователем не требуется. Так что ссылка нерелевантна теме.

Пакетная обработка данных как правило использует значительную чать сведений, хранящихся в БД. Ну и отлично! Будем считать в СУБД. Но, запросы к БД выполняются не так быстро как хотелось бы, да и реляционное представление не удобно. Ok. Решаем эту проблему. Кэшируем данные, заодно преобразуем их в структуры, более подходящие для расчётов. Ключи разрешим в указатели, организуем объекты в коллекции с быстрым и удобным доступом, и т.д.. И вот мы уже видим, что после начальной загрузки кэша БД нам уже не нужна. А тут ещё пользователи со своими запросами и ХП то и дело отнимают ресурсы CPU. Так ну её в баню, эту СУБД. Перемещаем процесс обработки на отдельный узел, благо, скорость ЛВС уже Gbit'ами измеряется. Ну в общем и всё. Мы получили распределённое масштабируемое решение.
Обращаю внимание, что это не многозвенное решение. Это больше похоже на back office. Т.е. внешний сервис лежит не между клиентом и СУБД, а находится за СУБД, с точки зрения пользователя. Такие решения я видел в системах, где СУБД не подедерживала не только ХП, но даже SQL. Такие решения используются в системах реального времени. И т.д.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639646
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabНо, запросы к БД выполняются не так быстро как хотелось бы
Одна из причин, почему ненужно выносить вычисления из БД. Не нужно слать в БД милионы маленьких запросов. Нужно или посылать их одной пачкой, или скрыть цикл внутри хранимой процедуры. А ещё лучше, вместо цикла выполнить всё в рамках одного или нескольких select-ов. Т. е. цикл обработки перенесётся в select. Тогда всё просто "летать" будет. Ну тут опять же без фанатизма, надо разумно всё оценить, и выбрать наиболее подходящее решение.

mcureenabда и реляционное представление не удобноПочему?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639648
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mcureenab

И почему вы постоянно игнорируете мои мысли про OLAP? 2 или 3 раза уже писал про него.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639732
kilavi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tygra kilaviхе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД.
Что, и причины даже приводят??? :))

-- Tygra's --
Мои фотогалереи тут и тут
причины?
1. легкость масштабирования
2. на ОО языке, проще создавать большие системы
3. управление исходниками, для managed языков есть прекрасные средства рефакторинга и удобные IDE среды(у нас система из 3000 хранимок - это просто Ж)
4. безболезненная смена СУБД
5. увеличение скорости разработки приложения

если есть желание можно и еще нарыть, можно Фаулера почитать. Да и хорошо спроектированную программу написанную на языке высокого уровня, с четкой структурой классов на порядок легче понять, кроме этого хорошо спроектированную программу на порядок легче оптимизировать, таким образом, если вдруг и где возникнуть затыки, никто не мешает перенести этот момент в БД. Лично для меня священной войны здесь нет, все зависит от конкретного проекта, но уклон в сторону сервера приложений со временем все равно неизбежен имхо. Да и вообще лично у меня нет желания заниматься процедурным программированием, когда есть ООП. Сейчас начинаем новый большой проект, чистая база, с какой радостью натравлю туда ОРМ, и буду работать с объектами.

зы здесь голосование по поводу места хранения бизнес логики
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639777
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне всегда был любопытен один из аспектов многозвенной(>2) архитектуры, когда необходимость сервера приложений оправдывают необходимостью повышения производительности и/или масштабирования. В связи с чем возникает несколько вопросов: как много адептов таких решений, ну хотя бы, слышали о теории массового обслуживания ? И способны действительно, на языке формул, а не на словах, доказать, что их решение оправдано ? В том числе способны просчитать и доказать выигрыш, в частности, по соотношению цена/производительность. И что они вполне способны написать такой сервер (приложений), который не будет уступать решениям от именитых производителей, которые могут себе позволить не только кодописателей, но и серьезных теоретиков ? Особенно впечатляет настойчивость, с которой доморощенный сервер приложений норовят взгромоздить поверх других, промышленных, серверов, в частности СУБД.
Что характерно, писать, как правило, они порываются чуть ли не в одиночку, что само по себе является, IMHO, пугающей тенденцией. Меня лично настораживает эта иллюзия легкости и всемогущества, это ведь не убогий чат из набора компонент за час на коленке состряпать...

P.S. Вот такие вот размышления вслух.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639788
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kilaviзы здесь голосование по поводу места хранения бизнес логикиВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639865
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven iscrafmа если человек применял разные архитектурные решения для разных систем, в зависимости от их назначения? Что-то не вяжется. :)
Скольких людей, имеющих опыт более чем однократного осознанного перехода между архитектурами "логика в основном на сервере БД" и "логика в основном на сервере бизнес-логики", Вы знаете?
да есть немного знакомых :) Ладно, допустим я. Делал системы практически на всех платформах (кроме Mac'a жаль), СУБД и в разных архитектурах. Искру проектировал как многозвенку очень даже осознано, как Вы говорите.
Скорее сиутация как раз в обратном. Те кто не имел опыта законченного и отработанного решения многозвенной системы ведут с подобной архитектурой "войну". Сравнить не с чем.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639877
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA
P.S. Вот такие вот размышления вслух.
хорошее настроение на весь день обеспечено.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639894
kilavi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA kilaviзы здесь голосование по поводу места хранения бизнес логикиВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?

если я где-то упомянул, что развитие, в частности - технологий, определяется голосованием, то прошу прощения, но перечитав свои два с половиной поста, я этого не увидел. Я, всего лишь, привел мнение сообщества РСДН, и приписывать мне чужие мысли не надо :). Еще раз - для меня здесь нет священной войны.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639911
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kilaviЕще раз - для меня здесь нет священной войны.Замечательно. Искренне рад за Вас, но тогда совершенно не понимаю смысла ссылки на это голосование. Поясните ?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639927
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmобычный бред на почве плохих знаний многозвенных систем
Верно. Напомню, с моей точки зрения большинство коллег пишет вообще "однозвенные" системы - сколько бы они ни считали сами, но закладывают одно "основное" звено и одно-два-три сугубо технических, уровня "драйвера клавиатуры". А дальше - кто-то хорошо знает, допустим, J2EE и пользуется БД как записной книжкой, кто-то хорошо знает БД и не понимает, зачем портить ее дурной мордой.

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

Соответственно, многозвенка все больше отползает в область решений "над MySQL". В конце концов, подозреваю, платформы "СУБД" и "серверов приложений" просто сольются.

kilavi3. управление исходниками, для managed языков есть прекрасные средства рефакторинга и удобные IDE среды(у нас система из 3000 хранимок - это просто Ж)
Используйте пакеты и забудьте про 3000 хранимок. Да и все остальные аргументы - из серии "не думал, но читал".
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639934
kilavi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всегда полезно рассмотреть ситуацию с разных сторон, понять причины, почему люди предпочитают тот или иной вариант, вынести для себя что-то ценное, а не просто идти по проторенной дорожке не обращая внимания ни на что. В данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34639946
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerкто-то хорошо знает БД и не понимает, зачем портить ее дурной мордой.
ничего страшного. понимание приходит от задач, с которыми приходится сталкиваться.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640000
atv_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мод atv_13Потому тащить расчеты на клиента смысла не вижу.
Смысл очень простой - разгрузить процессоры сервера БД.(алтернатива - добавлять процессоры, но тогда перестанет справляться ОС)В конкретно упоминаемой задаче "Расчет з/п" сам расчет есть куча массовых запросов выполняемых, в основном, в строго определенном порядке, логика же расчетов занимает на порядки меньшее время.
Конечно все это можно распараллелить разбив десятки тысяч людей на менее крупные объемы (+ некоторую часть расчетов), но при той же задаче расчета з/п результат расчетов все равно будет сохраняться можно сказать практически такими же запросами, какими бы они сохранялись будучи рассчитанными на серве.
Потому выигрыш в разгрузке процов ИМХО копеечный
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640358
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я чтобы поддержать разговор чиста :)

kilaviпричины?
1. легкость масштабирования
2. на ОО языке, проще создавать большие системы
3. управление исходниками, для managed языков есть прекрасные средства рефакторинга и удобные IDE среды(у нас система из 3000 хранимок - это просто Ж)
4. безболезненная смена СУБД
5. увеличение скорости разработки приложения

1. Масштабирование количеством серверов достигается при любом способе - хоть многозвенка, хоть субд, тупое увеличение количества железа
2. Системы какого типа? Клиентские приложения - да. Работа с данными - это с чего на оо лучше работать с таблицами? ;)
3. Для клиентских приложений - да. Какую супер-систему нужно, чтобы писать ХП - не пойму. Причем тут кол-во ХП - вы сразу все правите в одном сеансе? Или сразу все на экран хотите вывести? ;)
4. Миф - никто ни разу не делал этого, более того, система не использует все тонкости СУБД, а потому заранее тормознее и неуклюжее, причем намного.
5. Каким образом? Добавляя дополнительное звено, скорость только уменьшается

В общем, эти вопросы давно разобраны в паре тдлинных топиков и серьезных доказательств по ним многозвенщики не смогли привести.

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

kilaviЛично для меня священной войны здесь нет, все зависит от конкретного проекта, но уклон в сторону сервера приложений со временем все равно неизбежен имхо. Да и вообще лично у меня нет желания заниматься процедурным программированием, когда есть ООП. Сейчас начинаем новый большой проект, чистая база, с какой радостью натравлю туда ОРМ, и буду работать с объектами.
Ну и в чем смысл объектов?
Может просто - как и показали те топики - знаний в СУБД не хватает? Тогда конечно - разбираться в селектах/апдейтах/plsql/tsql ни к чему современному программисту, лучше перенести все данные на клиента и там с помощью паскаля или с++ делать свою СУБД Но зато какие понты - не какая-то там к-с, а "распределенная многозвенная система с возможностью масштабирования и т.д. и т.п.", заказчеки аж писчат, когда узнают название, правда потом воют, но это уже другая история. :)

===========

Я собственно тоже не против многозвенок, распределенных систем и т.д.
Я против пихания их везде, где ни попадя, причем обычно с откровенной безграмотностью заявляя о недостатках к-с и субд и о "крутости" многозвенки.

ЗЫ Интересно, а что же такого нельзя сделать на PL/SQL? Я думал, что уж теперь то на нем можно делать все, что угодно (учитывая то, что было раньше), особенно по сравнению с TSQL. В Оракл внутрь СУБД воткнули по-моему все, что только бывает. Или это страшная тайна? :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640508
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Спасибо за пояснение. У Вас лично есть свое объяснение этому факту ? И, если "да", то не хотите его озвучить ?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640524
serjio-k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, чудо-трава уже отпустила. Позавчера было смешно. Сегодня нет, увы :(

Об одном только прошу, как ДБА: проектирование структуры данных доверяйте людям, которые умеют это делать. А дальше хоть 33-х звенку стройте с 77-уровневым кешем.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640576
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraЯ чтобы поддержать разговор чиста :)
5. Каким образом? Добавляя дополнительное звено, скорость только уменьшается

Давайте экперимент. Мне нужно на клиенте показать новую форму, которая работает с другой СУБД. Для этого мне достаточно на СП подключить базу, допустим через ADO и создать форму в которой указать, что она работает с этой базой. Остальное все разрулит сервер приложений. Нажму кнопку ОК и клиент увидит рабочую форму. Занимает минуту времени. А у Вас?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640600
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. забыл уточнить. в показанном списке не все SQL серверы. XML, CSV, Excel.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640723
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навеяло...
Вот по поводу масштабирования - т.е., по сути, распределенных вычислений. Очевидно, что разрабатывать такие системы нисколько не проще, а наоборот - гораздо сложнее чем в случае нераспределенных вычислений (достаточно почитать любую литературу по распределенным вычислениям). Вот на том же примере с зарплатой. Когда бы это было выгодно? Когда у нас есть сервер с высокопроизводительным дисковым массивом, который может поднять столько данных, что процессоры сервера не успеют их обработать. Далее, у нас должна быть высокоскоростная сеть чтобы эти данные передавать на внешние узлы для обработки. У нас должно быть достаточно внешних узлов, которые в сумме по производительности процессоров должны в несколько раз превосходить процессоры на сервере (ну чтобы имело смысл заморачиваться + накладные расходы). Далее, сама задача должна хорошо распараллеливаться. Расчет зарплаты - ну вроде поделил, например, по табельным номерам людей между узлами и считай себе столько отработал, столько переработал, тут прогулял, больничный и т.д. И даже, допустим, все написали, и все быстро работает. Но, тут нехорошее руководство издает распоряжение - зарплата руководителя подразделения не может быть выше, чем 3-х кратная средняя зарплата сотрудников подразделения. Опс... теперь расчет не очень хорошо параллелится, и переписывай, чуть ли не все заново и все уже гораздо сложнее будет.
К чему это все я. К тому, что распределенные вычисления это хорошо, но к сожалению далеко не везде их можно применить, и есть много факторов, которые этому препятствуют.
А вообще - недавно вышла 1С 8.1 с кластером из серверов приложений - посмотрим что и как там у них будет на больших внедрениях работать с этим кластером... но тут пример конечно не чистый...
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640841
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 iscrafm
Ну у меня сейчас нет таких потребностей для работы с разными СУБД во внутренней системе. Потому навскидку могу предложить либо делать коннект этой формы к другой СУБД прямо из приложения, либо через линкед сервер уже используемой СУБД. Но если подумать, можно и что-то другое наверное, но пока нет надобности.

Другая система, другой вариант, уже обкатанный - ходить через вебсервисы. Клиент идет на вебсервис и дергает нужный метод, а уж тот дергает то, что ему там прописано, хоть СУБД, хоть другой сервис. Вроде как также быстро делается.
Только не надо говорить, что это уже многзвенка :) Это коммутирующий слой без всяких вычислений и бизнес-логики, считайте его заменителем ADO :)

----------
Но получается, что вычислений тут нигде нет, бизнес-логики в доп звене нет, это к теме топика мало относится :)

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640919
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygraНу у меня сейчас нет таких потребностей для работы с разными СУБД во внутренней системе.
я об этом и говорил ранее. Просто не сталкиваетесь с задачами, где без сервера приложений напряженно. Поэтому и предлагаете на вскидку:

tygra
Потому навскидку могу предложить либо делать коннект этой формы к другой СУБД прямо из приложения
на каждом клиенте? у меня их сотни. Наверное устал бы следить за всеми.

tygra, либо через линкед сервер уже используемой СУБД. Но если подумать, можно и что-то другое наверное, но пока нет надобности.
посмотрите на формат файлов, например МПС. Какой линкед сервер с этим будет работать? Правильно. ни-ка-кой.

tygra
Другая система, другой вариант, уже обкатанный - ходить через вебсервисы. Клиент идет на вебсервис и дергает нужный метод, а уж тот дергает то, что ему там прописано, хоть СУБД, хоть другой сервис. Вроде как также быстро делается.
Только не надо говорить, что это уже многзвенка :)

неправильные у Вас представления о многозвенке. Web-сервер, на котором живут сервисы - обычный сервер приложений. Зовут его просто по другому.

tygra
Это коммутирующий слой без всяких вычислений и бизнес-логики, считайте его заменителем ADO :)
угу. А что тогда PHP, Perl,Java и прочие скрипты там делают. Заменяют ADO по Вашему.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34640925
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm<...> Искру проектировал как многозвенку очень даже осознано, как Вы говорите.
Скорее сиутация как раз в обратном. Те кто не имел опыта законченного и отработанного решения многозвенной системы ведут с подобной архитектурой "войну". Сравнить не с чем.
А что технически мешает реализовать функциональность Искры по архитектуре "клиент-сервер БД с логикой в ХП", или, на крайний случай, "клиент-баллансировщик-сервер БД с логикой в ХП"?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641083
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"мешает" сервисная архитектура. Для решения любой задачи выбирается наиболее подходящий вариант ее реализации. Повторюсь только.. это никак не исключает реализацию бизнес-логики в СУБД. см. рис.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641201
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmнеправильные у Вас представления о многозвенке. Web-сервер, на котором живут сервисы - обычный сервер приложений. Зовут его просто по другому.
Это смотря с какой стороны посмотреть. Тут вот люди считают, что апп-сервер - это обязательно в нем бизнес-логика и обработка данных, что никаких других серверов приложений не бывает.
У вас вроде не такой, у меня тем более :)

авторугу. А что тогда PHP, Perl,Java и прочие скрипты там делают. Заменяют ADO по Вашему.
Скрипты там являются клиентским приложением - они заменяют дельфи, с++ и т.д.
А АДО они заменяют мне - я же не хожу на html-страницы для того, чтобы дернуть сервис :)

авторПовторюсь только.. это никак не исключает реализацию бизнес-логики в СУБД.
В этом то и вопрос.

-- Tygra's --
Мои фотогалереи тут и тут
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641209
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К2 mcureenab

И почему вы постоянно игнорируете мои мысли про OLAP? 2 или 3 раза уже писал про него.

В общем то я не обязан обсуждать каждую мысль... Но раз уж Вас это беспокоит...

При чём тут OLAP? ЗП, это не OLAP, а чистой воды OLTP. Только транзакции не пользователи выполняют, а фоновый процесс, этакий робот-бухгалтер специалист по оплате труда.
В биллинговых системах основная работа ложиться на процесс тарификатор-телефонных услуг. В банковских, на сервер проводок (по крайней мере во времена моей молодости его так называли). И т.д.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641237
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra kilavi4. безболезненная смена СУБД4. Миф - никто ни разу не делал этого, Ну почему ? Делали когда-то, довольно неплохо получилось. tygraболее того, система не использует все тонкости СУБД, а потому заранее тормознее и неуклюжее, причем намного. Это в целом верно.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641305
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркНавеяло...
К чему это все я. К тому, что распределенные вычисления это хорошо, но к сожалению далеко не везде их можно применить, и есть много факторов, которые этому препятствуют.

Распределённые и параллельные вычисления - понятия разные. Естественно, когда вычисление хорошо распараллеливается (т.е. разбивается на процессы, которые не пересекаются на общих ресурсах), то его просто сделать распределённым. Если процессы имеют точки пересечения, приходится искать более сложные решения, типа разделяемой памяти, распределённых блокировок, миграции объектов и т.д. и т.п.
К сожалению, наиболее популярные языки программирования в основном ориентированы на традиционные локальные вычисления и не содержат в своём лексиконе средств распараллеливания и распределения работы (разве что на уровне команд CPU), так что эта задача ложится на плечи программистов. Но есть и другой пример - SQL запросы, которые в ряде случаев СУБД Оракл могут быть распараллелены и/или распределены по нескольким СУБД.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641461
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРаспределённые и параллельные вычисления - понятия разные.
Конечно, но в контексте беседы - они по большей части совпадают, особенно когда говорится о масштабируемости.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641487
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra iscrafmнеправильные у Вас представления о многозвенке. Web-сервер, на котором живут сервисы - обычный сервер приложений. Зовут его просто по другому.
Это смотря с какой стороны посмотреть. Тут вот люди считают, что апп-сервер - это обязательно в нем бизнес-логика и обработка данных, что никаких других серверов приложений не бывает.
У вас вроде не такой, у меня тем более :)

заблуждаются, с кем не бывает. Давайте посмотрим на определение, в той же Википедии:

ВикипедияAn application server is a software engine that delivers applications to client computers or devices. Moreover, an application server handles most, if not all, of the business logic and data access of the application (A.K.A. centralization ).

ключевые слова здесь выделены:
delivers - доставляет приложения (сервисы) клиенту, обеспечивает централизованный доступ к ним и источникам данных ( centralization ).
handles - управляет бизнес-логикой. Т.е. никто не определяет, что сами процедуры бизнес-логики должны быть реализованы на сервере приложений. Опять же, он предоставляет доступ к процедурам, в каком бы виде они не были оформлены.

p.s. я тоже придерживаюсь задач AS описанных в определении. Вы правильно заметили.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641561
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA kilaviзы здесь голосование по поводу места хранения бизнес логикиВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?

Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641600
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tygra<...> авторПовторюсь только.. это никак не исключает реализацию бизнес-логики в СУБД. В этом то и вопрос.<...>
Отсюда вывод: реализовать бизнес-логику можно как в ХП, так и на специализированном сервере приложений. А при принятии решений обязательно следует руководствоваться знаниями, навыками и личными предпочтениями разработчиков, опционально - соображениями маркетинга, самообразования и самореализации, а также повышения собственной з/п, должности, важности и труднозаменимости :) .
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641679
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... конечно если эта логика - не действительно ресурсоёмкие задачи по поиску всевозможных оптимумов, распознаванию и преобразованию форматов и т.д., для решения которых количество ресурсов, необходимое для извлечения, передачи и сохранения данных, мало по сравнению с количеством, необходимым для расчётов.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641708
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Я подозреваю, что сообщество ЖЖ или Анекдот.РУ будет иметь вообще третье мнение: "Все на.... лучше выпей ПИВА!"

Интересно, что из этого следует?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641740
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab ChAВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.Вы не слишком далеко заходите в своей интерпретации голосования ? И какое отношение к ней имеет голосование посетителей rsdn ?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641811
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA mcureenab ChAВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.Вы не слишком далеко заходите в своей интерпретации голосования ? И какое отношение к ней имеет голосование посетителей rsdn ?

Не понял вопросов. Наверное трава закончилась. (Прости, tigra, не поделился.)

Я никакое голосование не интерпретировал. Речь только о том, что промышленные стандарты, в том числе в области IT, часто принимаются голосованием. Форумы RSDN и SQL.RU никакой юридической силы не имеют, так что голосование их участников скорее отражает общественное мнение, а учитывать его в принятии решения или нет, каждый решает сам за себя.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641913
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabНе понял вопросов.Ну и ладно, не стоит себя напрягать.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34641983
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerс моей точки зрения большинство коллег пишет вообще "однозвенные" системы - сколько бы они ни считали сами, но закладывают одно "основное" звено и одно-два-три сугубо технических, уровня "драйвера клавиатуры". ИМХО скорее и "драйвера" и т.н. "бизнес-логика" в большей или меньшей степени размазываются между всеми этими слоями-звеньями. Больше их - больше степень размазывания. Хотя какое-то звено считается основным
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34642298
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОдинИМХО скорее и "драйвера" и т.н. "бизнес-логика" в большей или меньшей степени размазываются между всеми этими слоями-звеньями.
В хорошо спроектированной системе - да.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34642758
kilavi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bely kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Я подозреваю, что сообщество ЖЖ или Анекдот.РУ будет иметь вообще третье мнение: "Все на.... лучше выпей ПИВА!"

Интересно, что из этого следует?

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



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

Это не так. Ни для Oracle, ни для MS SQL.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34649416
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, если вычислительная сложность алгоритма, где N стоимость выборки данных

- <= О(N) - его нужно выполнять в БД

- между О(N) и O(N**2) - думать надо

- >= O(N**2) - выносить из базы

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



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

Это не так. Ни для Oracle, ни для MS SQL.

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



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

Это не так. Ни для Oracle, ни для MS SQL.

Интересно, как?


Давайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650616
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevВроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?
Мне утверждение Алекса также представляется не то чтобы абсолютно верным, но в данном случае я бы не стал говорить так категорично.....

Код: 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.
SQL> conn test/test@db1.sphaera197
Connected.

SQL> create table t1 (i) as
   2     select rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t2 (i, j) as
   2     select rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t3 (i, j, k) as
   2     select rownum, rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create synonym tx for t1;

Synonym created.

SQL> create procedure get_t (cur out sys_refcursor) authid current_user is
   2   begin
   3     open cur for select * from tx;
   4   end;
   5   /

Procedure created.

SQL> set autoprint on;
SQL> var cur refcursor;

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I                                                                      
----------                                                                      
          1                                                                       
          2                                                                       
          3                                                                       
          4                                                                       
          5                                                                       

SQL> create or replace synonym tx for t2;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J                                                           
---------- ----------                                                           
          1            1                                                            
          2            2                                                            
          3            3                                                            
          4            4                                                            
          5            5                                                            

SQL> create or replace synonym tx for t3;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J          K                                                
---------- ---------- ----------                                                
          1            1            1                                                 
          2            2            2                                                 
          3            3            3                                                 
          4            4            4                                                 
          5            5            5                                                 
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650762
Andreww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabИнтересно, как?

В Оракле примерно так :

Проверили синтаксис (вруг где буковку пропустили)
Проверили доступность объектов, перевели все в один регистр и т.п. (semantic check)
Посчитали ХЭШ
Проискали по хэшу в библиотечном кеше (у запрос есть ещё всякие фишки вроде текущей сортировки и т.п. их тоже надо не забыть)
Если нашлось и объекты на которые ссылается запрос те же (т.е. синонимами не обманули то берём план из кэша и вперёд (soft parse)
Иначе - hard parse, строим дерево разбора и план выполнения и кладём всё это в library cache перед тем как выполнить (авось кому сгодится)


Кто и когда делает существующие разборы невалидными (то ли analayze table\index то ли ещё кто) я не знаю но делает точно, т.к. при изменении статистики план меняется.

Где то так.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34650974
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevДавайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?

У Оракла на этот счёт другое мнение. Собственно синтаксический разбор SQL запроса занимает очень малую часть времени. Значительно больше времени занимает построение оптимального плана - суть оптимизирующая компиляция запроса с учётом текущего состояния БД. Так что выдумывать некий p-code для хранения разобранного запроса без плана, только чтобы не выполнять синтаксический анализ нет смысла. Глобальный кэш SQL запросов и локальный кэш курсоров вообще позволяет в большинстве случаев пропустить этап компиляции (hard parse) и сразу перейти к выполнению существующего плана (soft parse, или no parse).

PS. Вы не задумывались, почему до сих пор существуют и успешно развиваются скриптовые языки? Например для серверных приложений, которые многократно выполняют одни и теже процедуры однажды скомпилированный на этапе выполнения скрипт будет работать, работать и работать. А в случае изменение внешних скриптов или БД не потребует ручной перекомпиляции.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34651818
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab drevДавайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?

У Оракла на этот счёт другое мнение. Собственно синтаксический разбор SQL запроса занимает очень малую часть времени. Значительно больше времени занимает построение оптимального плана - суть оптимизирующая компиляция запроса с учётом текущего состояния БД. Так что выдумывать некий p-code для хранения разобранного запроса без плана, только чтобы не выполнять синтаксический анализ нет смысла. Глобальный кэш SQL запросов и локальный кэш курсоров вообще позволяет в большинстве случаев пропустить этап компиляции (hard parse) и сразу перейти к выполнению существующего плана (soft parse, или no parse).



Всё, что вы говорите, верно для "простых запросов".

Для stored procedures это не совсем так.

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

Попробуйте создать подобную процедуру, и посмотрите сколько времени это займёт. А потом запустите её. И сравните время.

Для одного из решений этой проблемы введен statement level RECOMPILE.
...
Рейтинг: 0 / 0
Тонкий или толстый клиент
    #34651833
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer drevВроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда?
Мне утверждение Алекса также представляется не то чтобы абсолютно верным, но в данном случае я бы не стал говорить так категорично.....

Код: 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.
SQL> conn test/test@db1.sphaera197
Connected.

SQL> create table t1 (i) as
   2     select rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t2 (i, j) as
   2     select rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create table t3 (i, j, k) as
   2     select rownum, rownum, rownum from dual connect by level <=  5 ;

Table created.

SQL> create synonym tx for t1;

Synonym created.

SQL> create procedure get_t (cur out sys_refcursor) authid current_user is
   2   begin
   3     open cur for select * from tx;
   4   end;
   5   /

Procedure created.

SQL> set autoprint on;
SQL> var cur refcursor;

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I                                                                      
----------                                                                      
          1                                                                       
          2                                                                       
          3                                                                       
          4                                                                       
          5                                                                       

SQL> create or replace synonym tx for t2;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J                                                           
---------- ----------                                                           
          1            1                                                            
          2            2                                                            
          3            3                                                            
          4            4                                                            
          5            5                                                            

SQL> create or replace synonym tx for t3;

Synonym created.

SQL> exec get_t (:cur);

PL/SQL procedure successfully completed.

         I          J          K                                                
---------- ---------- ----------                                                
          1            1            1                                                 
          2            2            2                                                 
          3            3            3                                                 
          4            4            4                                                 
          5            5            5                                                 



1. В данной ситуации я отвечал не на пост Алекса, а на ответ на этот пост mcureenab.

2. В приведеном Вами примере происходит, ИМХО, не перекомпиляция, а отложенная резолюция.
...
Рейтинг: 0 / 0
217 сообщений из 217, показаны все 9 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Тонкий или толстый клиент
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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