|
|
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Вопрос в следующем: Есть некая задача, например расчет ЗП. Я пишу ее на MS SQL и С#. Так вот у кого есть какие соображения, какую архитектуру выбрать. Сейчас делаю тонкого клиента, т.е. максимум всех запросов оформлены ввиде хранимых процедур на сервере, есть вариант обратный, но он мне почему-то меньше нравиться. У кого какие предложения. Буду весьма признателен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 14:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Мне он тоже мало нравится Тема обсуждения не раскрыта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 15:03 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ИМХО тонкий клиент рулит - снимаем нагрузку с рабочих станций, бизнес-правила сконцентрированы в одном месте и расположены близко к данным и, как следствие, при их исполнении нет бессмысленной пересылки информации между клиентом и сервером БД; отвязываем бизнес-правила от ЯП клиента - упрощается задача построения дополнительных GUI (WEB, Pocket). В минусах только то, что язык ХП СУБД сильно ориентирован на работу с массивами данных и не имеет никакого отношения к ООП (после C# или Паскаля кажется корявым). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 15:27 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Что за приложение-то? Винформс али вебформс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 16:08 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
приложение винформс, а по поводу корявости T-SQL, ну так это решается в MS SQL 2005 по средствам Assembly, пишу пока тонкий клиент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 17:10 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
у кого еще какие мысли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 17:10 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Если хочется гремучей смеси в виде тонкого клиента на винформс и логики не в БД, то только трехзвенка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 17:35 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniВопрос в следующем: Есть некая задача, например расчет ЗП. Я пишу ее на MS SQL и С#. Так вот у кого есть какие соображения, какую архитектуру выбрать. Сейчас делаю тонкого клиента, т.е. максимум всех запросов оформлены ввиде хранимых процедур на сервере, есть вариант обратный, но он мне почему-то меньше нравиться. У кого какие предложения. Буду весьма признателен Для расчёта ЗП тонкий клиент нафиг не нужен (разве что ваш бухгалтер предпочитает вести дела не в офисе, а в непринуждённой обстановке на природе или между прочим в интернет кафе), тем не менее грамотное распределение обязанностей между клиентом и сервером, а может быть и сервером приложений никто не отменял. Не исключено, что имеет смысл создать отдельный сервер для расчёта ЗП, чтобы не нагружать сервер выполнением хранимых процедур. Короче, выбирай архитектуру приложения исходя из решаемой задачи, а не деталей реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 18:10 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
вообщем ясно, ну я решил писать пока тонкий клиент, а руководствовался исключительно простотой администрирования. В плане того, что если внутри процедуры меняется какой нибудь механизм, например происходит еще одна запись в таблицу (другую, например сервисную) то обновлять клиента не нужно и выгонять юзверей тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2007, 18:15 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Есть ли какие-нибудь альтернативы написанию горы хранимых процедур на стандартные действия, типа вставка, удаление, обновление записей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2007, 14:44 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniЕсть ли какие-нибудь альтернативы написанию горы хранимых процедур на стандартные действия, типа вставка, удаление, обновление записей? Есть. Написание "горы" "редактируемых" представлений (В Оракле = materialized view) и триггеров типа instead of (т.е. "вместо, взамен")... Вот только стоит ли это делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2007, 15:42 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniЕсть ли какие-нибудь альтернативы написанию горы хранимых процедур на стандартные действия, типа вставка, удаление, обновление записей? Триггеры БД. Но лучше продумать структуру БД так, чтобы обновлять другие таблицы не было надобности. Исключением могут быть операции протоколирования изменений и т.п. однотипные системные действия. Тогда все триггеры можно будет сгенерить по шаблону. Хранимые процедуры (ХП) для стандартных действий тоже можно сгенерить по шаблону, но в свете того, что многие компоненты доступа к данным умеют генерить SQL запросы на лету, я не вижу смысла в их создании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2007, 16:03 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Дело все в том что хранимки подразумеваются не просто select * from Table, а там же еще будут обработки всяческие и генерация стандартных запросов не совсем подходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2007, 16:17 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniДело все в том что хранимки подразумеваются не просто select * from Table, а там же еще будут обработки всяческие и генерация стандартных запросов не совсем подходит Отдели функции ввода-вывода первичных данных от их обработки. Пусть обработка выполняется фоновыми процессами, тогда разработка GUI станет возможной преимущественно на базе готовых компонентов и сложная обработка данных избавится от заморочек связанных с итерактивностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2007, 16:47 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabДля расчёта ЗП тонкий клиент нафиг не нужен (разве что ваш бухгалтер предпочитает вести дела не в офисе, а в непринуждённой обстановке на природе или между прочим в интернет кафе), тем не менее грамотное распределение обязанностей между клиентом и сервером, а может быть и сервером приложений никто не отменял. Не исключено, что имеет смысл создать отдельный сервер для расчёта ЗП, чтобы не нагружать сервер выполнением хранимых процедур. Короче, выбирай архитектуру приложения исходя из решаемой задачи, а не деталей реализации. А можно создать еще сервер для предрассчета ЗП, чтобы он снял нагрузку с сервера расчета ЗП - ефиг ему заниматься всякими подготовительными данными, типа скока часов проработали сотрудники и т.д., это все предрассчетный сервер пусть делает авторТриггеры БД. Но лучше продумать структуру БД так, чтобы обновлять другие таблицы не было надобности. Исключением могут быть операции протоколирования изменений и т.п. однотипные системные действия. Тогда все триггеры можно будет сгенерить по шаблону. Хранимые процедуры (ХП) для стандартных действий тоже можно сгенерить по шаблону, но в свете того, что многие компоненты доступа к данным умеют генерить SQL запросы на лету, я не вижу смысла в их создании. авторОтдели функции ввода-вывода первичных данных от их обработки. Пусть обработка выполняется фоновыми процессами, тогда разработка GUI станет возможной преимущественно на базе готовых компонентов и сложная обработка данных избавится от заморочек связанных с итерактивностью. В общем.... Аффтар, пеши исчо. Заодно дай название травы, от которой так прет. 2 izoldov-roskini Пиши через хранимые процедуры и никого с экзотическими рассуждениями не слушай - думаешь все правильно. Так и надо делать, чтобы потом не иметь проблем с изменением бизнес-логики и т.д. Клиент - отдельно, бизнес-логика - отдельно, меняется и то и то независимо. -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 09:13 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
так и делаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 09:57 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
>> поводу корявости T-SQL, ну так это решается в MS SQL 2005 по средствам Assembly особенно не надейся. обрати внимание на то, что в контексте SQL Server классов нет - есть структуры с сериализацией и хранением в XML (производительность и ссылки - проблема). (Ну не ООБД MS SQL Server - не ООБД :) ). в C# для MS SQL Server хорошо реализовывать то, что хорошо укладывается в реляционную тему: агрегаты, хранимки, UDF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 11:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra В общем.... Аффтар, пеши исчо. Заодно дай название травы, от которой так прет. SOA PS. Каждому клиенту, по серверу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 22:00 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniДело все в том что хранимки подразумеваются не просто select * from Table, а там же еще будут обработки всяческие и генерация стандартных запросов не совсем подходит Да какие на фиг обработки? Хранимки, триггера и т.д. - зло. СКЛ Сервера - зло. AS - зло. Все это против честного программера. Корпоративные штучки для закабаления. Бойкот всей этой гадости! Не будем воровать! И на фиг они тады не нужны будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2007, 00:05 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
2: Сахват Юсифов: шутки это хорошо конечно, но topic owner нужно Ваше мнение. Без шуток. В этом и смысл контеренции :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2007, 14:51 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь оргументированно объяснит как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 09:53 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskini wrote: > Кто-нибудь оргументированно объяснит как быть? "Тонкий" клиент, обработка/расчеты на серваке в виде T-SQL, а не CLR. Аргументов - валом по форуму. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 11:46 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniКто-нибудь оргументированно объяснит как быть? Это тебе самому нужно провести анализ, потому что у каждого варианта есть свои ++ и --, которые в определённом контексте могут оказаться или критичными или несущественными. Ты выбираешь между централизацованной и распределённой обработкой. С моей точки зрения здесь существенны вопросы: безопасности, производительности, администрирования, разработки, масштабируемости. Добавь сюда то, что считаешь нужным, проранжируй список по важности, оцени степень соответсвия той или иной архитектуры установленным требованиям, тогда найдёшь аргументированное решение. Тонкий клиент проще в плане администрирования, но для маленькой организации в одном офисе вопросы администрирования редко бывают существенными. Безопасность для задачи расчёта ЗП является важным аспектом. Передача всех данных для расчёта на клиента (за пределы серверной комнаты) представляет угрозу, с другой стороны нужно учесть, что Web браузеры могут сохранять страницы в кэше на диске, так что данные могут стать доступными посторонним лицам. Про производительность T-SQL ничего не скажу. Знаю что в Оракле PL/SQL машина работает довольно медленно, да библиотека типовых структур данных слабовата, так что сложные критичные по времени расчёты приходится реализовавыть на C++, а соответствующие компоненты разворачивать на специально выделенных серверах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 14:56 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Верно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 14:59 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
izoldov-roskiniВопрос в следующем: Есть некая задача, например расчет ЗП. Я пишу ее на MS SQL и С#. Так вот у кого есть какие соображения, какую архитектуру выбрать. Сейчас делаю тонкого клиента, т.е. максимум всех запросов оформлены ввиде хранимых процедур на сервере, есть вариант обратный, но он мне почему-то меньше нравиться. У кого какие предложения. Буду весьма признателен И всё бы хорошо, но если логика на триггерах с ХП - сервер БД нагружается несвойственными для него вычислительными задачами. Из-за чего, если объём и сложность вычислительных задач велики, могут возникнуть проблемы в производительности и удобстве поддержки. Т.е. если в компании 100 человек и достаточно простая схема начисления з/п - это одна ситуация, а если 50'000 и з/п начисляется с учётом тысячи факторов и коэффициентов - другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:42 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenИ всё бы хорошо, но если логика на триггерах с ХП - сервер БД нагружается несвойственными для него вычислительными задачами. Из-за чего, если объём и сложность вычислительных задач велики, могут возникнуть проблемы в производительности и удобстве поддержки. Т.е. если в компании 100 человек и достаточно простая схема начисления з/п - это одна ситуация, а если 50'000 и з/п начисляется с учётом тысячи факторов и коэффициентов - другая.По поводу несвойственных задач для сервера по вычислению... это я бы сильно поспорил. В начислении ЗП редко используется мат.анализ. К тому же - если вычисление ЗП такое хитрое и зависит от тысячи факторов, то почему вы решили, что рабочая станция справится с этой задачей лучше чем более мощный сервер? рабочая станция всеравно будет тянуть данные с сервера для принятия решения о начислении зарплаты. Единственное существенное отличие сервера БД от рабочей станции - это язык программирования, на котором будет реализован алгоритм начисления. Процедурные языки в отличии от языков БД они более скоростные в реализации алгоритмических задач. Но для работы алгоритмов всеравно понадобятся данные с сервера БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:09 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven сервер БД нагружается несвойственными для него вычислительными задачами - вы с файл-сервером случаем сервер БД не перепутали? потому как задача сервера БД и есть вычислять максимально всё что можно. На клиенте,как правило, реализуется интерфейс пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 17:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
egorych AlexTheRaven сервер БД нагружается несвойственными для него вычислительными задачами - вы с файл-сервером случаем сервер БД не перепутали? потому как задача сервера БД и есть вычислять максимально всё что можно. На клиенте,как правило, реализуется интерфейс пользователя. Вычисления, это задача сервера приложений, клиента, и в лучшем случае выделенной службы. То что СУБД тоже умеет складывать и вычитать не делает её хорошим местом для реализации вычислительных алгоритмов и процедур как из соображений выразительных средств языка программирования хранимых процедур, так и с точки зрения масштабируемости решения. Кроме того вычислительные компоненты системы часто имеют самостоятельную ценность. Если их плотно завязать на конкретную СУБД, возможность их использования с другой СУБД будет под большим вопросом. Т.е. реализация компонента в отдельной службе улучшает переносимость системы и возможности интеграции с другими системами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 18:16 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely AlexTheRavenИ всё бы хорошо, но если логика на триггерах с ХП - сервер БД нагружается несвойственными для него вычислительными задачами. Из-за чего, если объём и сложность вычислительных задач велики, могут возникнуть проблемы в производительности и удобстве поддержки. Т.е. если в компании 100 человек и достаточно простая схема начисления з/п - это одна ситуация, а если 50'000 и з/п начисляется с учётом тысячи факторов и коэффициентов - другая.По поводу несвойственных задач для сервера по вычислению... это я бы сильно поспорил. В начислении ЗП редко используется мат.анализ. Зато используется сложная логика и многочисленные обращения к таблично заданным функциям. BelyК тому же - если вычисление ЗП такое хитрое и зависит от тысячи факторов, то почему вы решили, что рабочая станция справится с этой задачей лучше чем более мощный сервер? рабочая станция всеравно будет тянуть данные с сервера для принятия решения о начислении зарплаты. Простите. Про рабочую сказали Вы. Для вычислений можно использовать не менее мощный компьютер, чем тот что используется для развёртывания СУБД. Более того, вычислительные задачи выдвигают несколько иные требования к оборудованию, чем СУБД. Например для вычислений обычно не нужны быстрые диски огромных объёмов с произволиным доступом. BelyЕдинственное существенное отличие сервера БД от рабочей станции - это язык программирования, на котором будет реализован алгоритм начисления. Язык программирования встроенный в СУБД точно также может поддерживаться внешней платформой. Например программы на PL/SQL может выполнять и СУБД Оракл и Forms. Возможно в скором времени хранимые процедуры и триггеры будут программироваться на Java, так что этот аспект вообще перестанет быть атуальным. BelyПроцедурные языки в отличии от языков БД они более скоростные в реализации алгоритмических задач. Но для работы алгоритмов всеравно понадобятся данные с сервера БД. PL/SQL и C++ это процедурные, точнее алгоритмические языки. Их производительность определяется оптимизирующим компилятором и исполнительной машиной. А данные с сервера кэшируются в локальной памяти вычислительного модуля и далее БД понадобится только для того, чтобы сохранить результат вычислений. Во время работы такого модуля БД может быть вообще недоступной, что позволяет выполнять ремонт сервера БД без остановки других служб системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 18:22 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: > того вычислительные компоненты системы часто имеют самостоятельную > ценность. Если их плотно завязать на конкретную СУБД, возможность их > использования с другой СУБД будет под большим вопросом. Т.е. реализация > компонента в отдельной службе улучшает переносимость системы и > возможности интеграции с другими системами. Если некий компонент одинаково работает с разными СУБД - крайне велика вероятность того, что со всеми СУБД он это делает одинаково плохо. И ценность такого компонента для решения из конкретно этого топика - стремится к нулю. А "к примеру зарплата" - чудесным образом реализуется на T-SQL без излишнего геммороя. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 19:19 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
locky <...>Если некий компонент одинаково работает с разными СУБД - крайне велика вероятность того, что со всеми СУБД он это делает одинаково плохо. И ценность такого компонента для решения из конкретно этого топика - стремится к нулю. Согласен, "независимость от СУБД" зачастую неоправдана. С другой стороны - вот случится несчастье, свалится к Вам на голову начальник - ортодоксальный юниксоид, прикрывающийся блюдением лицензионной чистоты, что будете делать? locky А "к примеру зарплата" - чудесным образом реализуется на T-SQL без излишнего геммороя.<...> Размер геморроя зависит от индивидуальных знаний, навыков и предпочтений. С тем, что для коммерческой компании до неск. тысяч человек всё вполне реализуемо на T-SQL, не поспоришь. Но вот Вы взялись бы создавать и главное - потом поддерживать решение, обсчитывающее з/п средствами T-SQL для РЖД, или "хотя бы" для ВАЗа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 00:24 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Афигеть!!!!!!!!!!!!! Люди никогда не видели, как работает и считает зарплаты (или что-то другое) СУБД - особенно учитывая, что все данные табличные и хранятся в ней же??????????? Афигеть окончательно!!!!!!!! 2 mcureenab Единственный ответ на высказывания выше - это бред, полнейший бред. Травой так не надо увлекаться, плохо кончается это все :) 2 izoldov-roskini Я искренне тебе советую не слушать чушь, которую несет mcureenab. Как делал, так и делай, все на СУБД. ======== Я конечно все понимаю, но такого кошмара редко увидишь -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 10:55 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraАфигеть!!!!!!!!!!!!! Люди никогда не видели, как работает и считает зарплаты (или что-то другое) СУБД - особенно учитывая, что все данные табличные и хранятся в ней же??????????? Афигеть окончательно!!!!!!!! Вот именно, что от такой категоричности можно офигеть. Например расчет зарплаты... А если например не расчет зарплаты? А например в базе хранятся описания объектов и их нужно рендерить? Все зависит от отношения скорости передачи данных между клиентом и сервером и временем необходимым на вычисления на сервере, отношения общей вычислительной мощности клиентов и сервера и возможности распараллелить конкретные вычисления. И всё. Если важна скорость, то надо реализовывать так, как будет быстрее. А как будет быстрее - это уже сильно зависит от задачи и алгоритмов, применяемых для ее решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 14:24 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Локшин МаркНапример расчет зарплаты... А если например не расчет зарплаты? А например в базе хранятся описания объектов и их нужно рендерить?А если не надо рендерить, то тогда что? Всеравно AS выберем? Ваш совет такой же категоричный. Сперва задача, оценка потоков, необходимой производительности, а потом уже все остальное. Локшин МаркА как будет быстрее - это уже сильно зависит от задачи и алгоритмов, применяемых для ее решения.А если и там и там приемлемо, то тогда как? Расчет и начисление ЗП, задача вполне посильная для SQL серверов, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 15:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
BelyВаш совет такой же категоричный. Сперва задача, оценка потоков, необходимой производительности, а потом уже все остальное. И в чем же в моем совете категоричность? В том что нужно сперва подумать а не тупо кричать все вычисления на сервер? Bely Локшин МаркА как будет быстрее - это уже сильно зависит от задачи и алгоритмов, применяемых для ее решения. А если и там и там приемлемо, то тогда как? То тогда нужно выбирать используя другие критерии - простота написания кода, поддержки, безопасность, масштабируемость и т.д. BelyРасчет и начисление ЗП, задача вполне посильная для SQL серверов, IMHO. И что Вы пытаетесь оспорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 16:05 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Локшин МаркИ что Вы пытаетесь оспорить?Я хорошо понимаю реакцию Тигры. Прочитав советы в этой теме можно сделать только один вывод - считать зарплату на SQL сервере - БЕСПЕРСПЕКТИВНЯК. Вот только мужики-то некоторые не знают... и у них все путем тем неменее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 16:41 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra2 mcureenab Единственный ответ на высказывания выше - это бред, полнейший бред. Травой так не надо увлекаться, плохо кончается это все :) Если тебя послушать, то и реализация расчёта средствами СУБД тоже бред, ибо я в своих постах допускаю разные варианты реализации, и пытаюсь рассмотреть ++ и -- каждого из них. Я против расчёта средствами СУБД (имею опыт разработок на PL/SQL), поэтому предпочитаю рассматривать -- этого решения, но тут полно народу, который аргументированно высказывает и его ++. К сожалению, ты в их число не входишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 17:17 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely Локшин МаркИ что Вы пытаетесь оспорить?Я хорошо понимаю реакцию Тигры. Прочитав советы в этой теме можно сделать только один вывод - считать зарплату на SQL сервере - БЕСПЕРСПЕКТИВНЯК. Вот только мужики-то некоторые не знают... и у них все путем тем неменее :) "БЕСПЕРСПЕКТИВНЯК" - точно сказано. Сделать это побыстрому и что бы как то работало, можно средствами СУБД. Но перспектива развития такого решения, ИМХО, сомнительна. Дело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины. Могу допустить, что в перспективе потребуется интегрировать модуль расчёта ЗП в информационную систему масштаба предприятия развёрнутую на AS. И что тогда? Это не приговор, а вопрос, как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 17:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabДело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины.Можно подумать БД не движутся к распределенным вычислениям. Или нельзя сделать 1,3,5-серверов локальных бухгалтерий, которые будут у себя локально рассчитывать ЗП, а потом центральный сервер будет от них получать уже готовый результат. Так что, "распределенные вычисления" и "реализация НЕ средствами сервера БД" - это не синонимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 18:16 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely Локшин МаркИ что Вы пытаетесь оспорить?Я хорошо понимаю реакцию Тигры. Прочитав советы в этой теме можно сделать только один вывод - считать зарплату на SQL сервере - БЕСПЕРСПЕКТИВНЯК. Вот только мужики-то некоторые не знают... и у них все путем тем неменее :) Тига прыгает не там и не туда. Лучше в "треп". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 18:25 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely mcureenabДело в том, что мир идёт к распределёным вычислениям. Централизация, это не модно и, видимо, на то есть не только маркетинговые причины.Можно подумать БД не движутся к распределенным вычислениям. Или нельзя сделать 1,3,5-серверов локальных бухгалтерий, которые будут у себя локально рассчитывать ЗП, а потом центральный сервер будет от них получать уже готовый результат. Так что, "распределенные вычисления" и "реализация НЕ средствами сервера БД" - это не синонимы. Ну в общем лично меня в основном бодают слабые выразительные средства PL/SQL и небольшая, по сравнению с универсальными языками программирования, библиотека, невысокая производительность (зато очень просто и надёжно, что часто является решающим фактором!). Нет автономной реализации PL/SQL машины, такой как например JVM. Опять же PL/SQL не решает все задачи, по любому приходится использовать универсальные ЯП (C++), т.е. вместо одного специалиста в C++, к проекту нужно привлекать ещё разработчика PL/SQL. В итоге, рано или поздно первую версию вычислительного модуля, разработанную на PL/SQL приходится переписывать на C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 18:51 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
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 -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 09:21 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraЭто во сне приснилось чтоли? Назови хоть одну не маркетинговую причину. Или не "откатную" - чтобы побольше бабла загрести от большего количества систем и серверов. Широкая филиальная сеть, зонирование ответственности между крупными подразделениями. Здесь ты не прав. Большим конторам нужны большие подходы и дело не только в откатах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 11:18 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Сахават Юсифов Тига прыгает не там и не туда. Лучше в "треп". :) у него просто меню на постранички вмещается, поэтому и состав продуктов не такой большой. Хватает одной СУБД, в чем собственно он постоянно пытается всех убедить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 11:50 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely tygraЭто во сне приснилось чтоли? Назови хоть одну не маркетинговую причину. Или не "откатную" - чтобы побольше бабла загрести от большего количества систем и серверов. Широкая филиальная сеть, зонирование ответственности между крупными подразделениями. Здесь ты не прав. Большим конторам нужны большие подходы и дело не только в откатах. Ну это по-разному решается, можно удаленно заходить и работать, можно репликацию. Вопрос то вообще-то не в этом. Вопрос в том, кто должен считать Для филиальной сети можно использовать апп-сервер, но как коммуникатор между клиентом и сервером. И отнюдь он не должен что-то там считать внутри себя типа зарплаты или пени :) Это сравнение мягкого с теплым :) iscrafm Сахават Юсифов Тига прыгает не там и не туда. Лучше в "треп". :) у него просто меню на постранички вмещается, поэтому и состав продуктов не такой большой. Хватает одной СУБД, в чем собственно он постоянно пытается всех убедить. Заметьте, я здесь ни за какую конкретно СУБД не ратовал - мне обычно вообще пофиг последние год-два, на чем хотите, на том делайте, вырос из того возраста :) А вот про "Тига прыгает не там и не туда" я если честно не понял - чего это? :) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 12:25 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraДля филиальной сети можно использовать апп-сервер, но как коммуникатор между клиентом и сервером. И отнюдь он не должен что-то там считать внутри себя типа зарплаты или пени :)ты просил пример, когда нужна многозвенная технология не по маркетинговым причинам, а по необходимости. Кто где и что будет считать - зависит от конкретных потребностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 12:33 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Ну нет, для категорических заявлений, что мир катится к распределенным вычислениям, нужны категорические примеры. Филиальная сеть не очень хороший пример - есть много способов, как сделать это без апп-серверов. Например у нас работает все та же к-с система, и в филиалах, и в центре. Да и потом - я к чему намекаю про "где считать". К тому, что "где считать" никак не относится к распределенности системы. И распределенность системы не есть "где считать" :) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:19 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraНу давай, расскажи, где тебе не хватило PL/SQL? Да задачка плёвая. С расчётом З/П в районах крайнего севера ни в какое сравнение не идёт. Всего то инкрементная выгрузка записей во внешнюю систему. Сейчас вугружается около сотни записей в секунду. В перспективе нужно увеличить производительность на порядок. Если не переносить PL/SQL ный код на новую платформу, придётся выложить несколько сотен k$ за новый сервер БД, который, если сказать прямо, тут нафиг бы не задался, если разместить процессы выгрузки на blade сервере ценою ~ 10k$ и по мере надобности добавлять серверы, не заморачиваясь крупными капиталовложениями на покупку оборудования и лицензии на системный софт, затратами на перенос БД на новую платформу и обучение персонала. Но увы... Кроме того, сейчас основная работа возложена на один SQL запрос, который, если каких то данных не хватает, просто скипает записи, так что хрен найдёшь, куда и почему они делись. Другое дело, реализовать соединение таблиц в программе на C++, пусть чуть менее эффективно, зато с полной диагностикой ошибок в данных и т.д. Нет гарантии, что во время работы задачи кто то другой не схавает ресурсы сервера и вместо положенных 10мин, выгрузка не будет идти 15мин. или вообще упадёт, что недопустимо. На отдельной железке процессы выполняются более предсказуемо. Наконец программа на универсальном языке программирования может сразу создавать файл в нужном формате и в нужном месте, а на PL/SQL удаётся только подготовить данные, которые потом всё равно приходится конвертировать в нужный формат программой на C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:50 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra Папа, ты с кем сейчас разговаривал? -- Tygra's -- Мои фотогалереи тут и тут Ах, да! Извиняйте, Вы уже вышли из ЭТОГО возраста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:09 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Конечно! :) Из такого: [quot автор]Кроме того, сейчас основная работа возложена на один SQL запрос, который, если каких то данных не хватает, просто скипает записи, так что хрен найдёшь, куда и почему они делись[/ quot] я давно уже вырос Тяпница :) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:35 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabСейчас вугружается около сотни записей в секунду. В перспективе нужно увеличить производительность на порядок.Что-то это слабо тянет на AS. Типичное миграционное приложение, которых можно настругать с десяток. Ну задача у него своеобразная... только это не AS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Так вообще непонятно, откуда выгружается и куда. По-мойму нас разводят :)) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 15:54 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely mcureenabСейчас вугружается около сотни записей в секунду. В перспективе нужно увеличить производительность на порядок.Что-то это слабо тянет на AS. Типичное миграционное приложение, которых можно настругать с десяток. Ну задача у него своеобразная... только это не AS. На AS не тянет, а как сервер выгрузки, вполне. Если в системе есть AS, то неплохо будет вносить изменения в БД через него, а не напрямую, чтобы изменения сразу в его кэше отображались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 16:56 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraТак вообще непонятно, откуда выгружается и куда. Из БД в файл определённого формата. Задача совершенно нехитрая, есть GUI, хранимая процедура на PL/SQL и модуль на C++, который работает в режиме сервиса Windows. Зачем так много? 1. Затем что PL/SQL не умеет делать GUI и не умеет делать требуемые файлы. 2. Затем что GUI работает на ПК оператора, а модуль на C++ на отдельном сервере, чтобы оператор не остановил его. Спрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 17:11 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?Дествительно, незачем. Но с такими рассуждениями можно легко докатиться до выводов "Зачем нужна БД, если все можно хранить в текстовом файле" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 17:14 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely mcureenabСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже?Дествительно, незачем. Но с такими рассуждениями можно легко докатиться до выводов "Зачем нужна БД, если все можно хранить в текстовом файле" Так если можно, то почему бы не хранить в текстовом файле? Видимо, нужно взвесть стоимость разработки и сопровождения собственного менеджера данных и покупки промышленной СУБД. Учесть перспективы развития системы, требования к её открытости, производительности, устойчивости к сбоям и т.д. и т.п. Что касается моей задачи, PL/SQL модуль просится быть переписаным на C++, но этот модуль уже есть, он протестирован и работает, бюджет на переписывание начальство не даёт, вот и пользуемся тем что имеем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 19:17 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
авторСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже? Отвечается - зачем какой-то с++, если есть pl/sql, на котором можно сделать чего надо. И уж в крайних случаях - если например данные бд превращать в формат pdf, можно делать не с помощью pl\sql, а с помощью того, чего это умеет делать. Но только приведенный пример никак не относится ни к распределенным вычислениям, тем более вообще никак к многозвенкам. Я тыщу раз говорил - слишком сильная трава у заядлых многозвенщиков, вы даже в обычном роботе, который чего-то там считает по расписанию, уже видите звено, и мало того, пытаетесь это воплотить в апп-сервере. Жаль, что уже не вылечить. :) Трава сидит глубоко. В общем, облом, пример не соответствует теме топика. -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 09:30 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
>mcureenab > ... Из БД в файл определённого формата. ..... >tygra > ... Но только приведенный пример никак не относится ни к распределенным вычислениям, тем более вообще никак к многозвенкам. Это, батенька, почему-же? Сервер данных построил выборку в своем формате (последовательность строк, например). В общем случае эта последовательность должна быть предварительно обработана и сериализована для передачи клиенту (клиент не в локальной сети и библиотека SQLClient на его компе не установлена) и представлена в виде файла (на диске) или MemoryStream (в памяти). Потом неплохо бы результирующую сериализацию сжать (Zip-ом например), всетаки 1:10, а то и поболее. Да и шифрование применить иногда не мешает. И это все должен делать сервер данных? А почему не сервер приложений? А если второе, то вот и многозвенка и распределенные вычисления. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 11:09 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
"Тонкий" клиент был задуман с целью экономии на стоимости клиентской машины, минимум памяти, без винта и т.д., а также для медленных сетей и прочее. Вобщем тратимся на сервер, а экономим на рабочих станциях. По жизни железо становится всё шустрее и дешевле. На данный момент достаточно дешёвый комп на самом деле машина всё же очень шустрая и не использовать эти ресурсы просто не разумно. Тем более если клиенты находятся в офисе с локалкой как минимум 100MB. Поэтому логично сервак всёже максимум разгрузить. Я реализовал расчёт зарплаты на предприятии без дубликатов данных и сответсвенно без триггеров. Все необходимые расчёты на каждый лицевой счёт производится хранимой процедурой. В неё более сотни запросов, на считывание, обновление у добавление данных. Процедура оптимизирована и вызывается после каждого изменения данных. При необходимости из приложения можно на произвести расчёт всех сотрудников. За 40 сек. производится расчёт на 4000 чел. В мае полностью переписал приложение, заменил доступ через BDE на ADO и часть нагрузки перенёс на рабочии станции, тем самым рагрузил сервак. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 11:12 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra авторСпрашивается, зачем тут хранимая процедура на PL/SQL, если модуль на C++ может всё сделать не хуже? Отвечается - зачем какой-то с++, если есть pl/sql, на котором можно сделать чего надо. И уж в крайних случаях - если например данные бд превращать в формат pdf, можно делать не с помощью pl\sql, а с помощью того, чего это умеет делать. Прикол в том, что "это самое" (программа на C++), может сделать то что нужно, в том числе и то, что написано на PL/SQL. Так зачем PL/SQL и необходимость развёртывания ХП в СУБД? Короче, не выдумывай сырые частные решения не зная общей задачи. tygraНо только приведенный пример никак не относится ни к распределенным вычислениям, тем более вообще никак к многозвенкам. Я тыщу раз говорил - слишком сильная трава у заядлых многозвенщиков, вы даже в обычном роботе, который чего-то там считает по расписанию, уже видите звено, и мало того, пытаетесь это воплотить в апп-сервере. Наличие вдух взаимодействующих узлов, это уже распределённые вычисления. Про многозвенку в примере вообще речи не шло. Тут взаимодействуют GUI клиент, СУБД и спциализированный сервер, который создаёт файлы и отправляет их по указанному адресу. ИМХО, серверы приложений в настоящее время являются отличной масштабируемой платформой для развёртывания задач любой сложности. Специфические требования приложений реального времени или желание сэкономить на оборудовании заставляют разрабытывать внешние модули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 14:41 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven wrote: > <...>Если некий компонент одинаково работает с разными СУБД - крайне велика > вероятность того, что со всеми СУБД он это делает одинаково плохо. > И ценность такого компонента для решения из конкретно этого топика - > стремится к нулю. > > > Согласен, "независимость от СУБД" зачастую неоправдана. С другой стороны > - вот случится несчастье, свалится к Вам на голову начальник - > ортодоксальный юниксоид, прикрывающийся блюдением лицензионной чистоты, > что будете делать? Посчитаю ему стоимость перехода с MS SQL на Oracle - пусть захлебнётся слюной от жадности. > > locky > > А "к примеру зарплата" - чудесным образом реализуется на T-SQL без > излишнего геммороя.<...> > > > Размер геморроя зависит от индивидуальных знаний, навыков и > предпочтений. С тем, что для коммерческой компании до неск. тысяч > человек всё вполне реализуемо на T-SQL, не поспоришь. Но вот Вы взялись > бы создавать и главное - потом поддерживать решение, обсчитывающее з/п > средствами T-SQL для РЖД, или "хотя бы" для ВАЗа? Не знаю - не мой профиль. Но на менее крупных - можно было бы. Проводим декомпозицию... и далее по тексту :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 14:55 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenНо вот Вы взялись бы создавать и главное - потом поддерживать решение, обсчитывающее з/п средствами T-SQL для РЖД, или "хотя бы" для ВАЗа?Мы вот взялись. MSSQL2k + Win клиент. Никаких больше звеньев нет. Все расчёты и логика на TSQL. Расчёт рабочего времени + ещё куча характеристик нарастающим итогом каждые сутки в конце прошлого месяца на "подшефном" сервере занял 1 минуту 41 секунду. И таких серверов порядка сотни. Расчёт был произведён по 1880 работникам. В начале месяца он выполняется где-то секунд за 30. Система работает в режиме 24х7. Что мы делаем не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 06:07 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К MSSQL2k + Win клиент. Никаких больше звеньев нет. Все расчёты и логика на TSQL И у меня такой вариант работает с 2000г., структура получилась удачная, за 7 лет реализовывались все мыслемые и не мысленные требования законодателей. Полный расчёт всех начислений, в том числе налогов различной аналитической информации происходит после каждого изменения вводимых данных. Всё это происходит быстро, на скорость работы операторов не сказывается. Ограничений на численность персонала не вижу, всё зависит от сервака. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 09:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К<...>Расчёт был произведён по 1880 работникам. В начале месяца он выполняется где-то секунд за 30. Система работает в режиме 24х7. Что мы делаем не так?Да я и не спорю, что Вы всё делаете правильно. Просто пост лучше читать целиком :) . А в нём написано: AlexTheRaven<...>С тем, что для коммерческой компании до неск. тысяч человек всё вполне реализуемо на T-SQL, не поспоришь.<...> ---------------------- Алексей К<...>И таких серверов порядка сотни.<...> Несколько непонятно: - в Вашей организации порядка 200'000 тыс сотрудников, и Вы грамотно распараллелили расчёты по 100 серверам? - 100 серверов считает з/п для 1880 сотрудников? - Ваши сервера стоят в 100 организациях по неск. тыс. сотрудников в каждой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 10:47 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_Toms<...>Ограничений на численность персонала не вижу, всё зависит от сервака. А сейчас для какого количества сотрудников рассчитывается, если не секрет, конечно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 10:50 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
И мне интересно, а зачем разбивать на "небольшие" части всех сотрудников, есть какие то ограничения на расчёт в одном месте? Скорее всего мне кажется, что организация разбита на филиалы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 10:56 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven См. чуть выше в этом топике... Повторюсь:За 40 сек. производится расчёт на 4000 чел.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:00 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenНесколько непонятно: - в Вашей организации порядка 200'000 тыс сотрудников, и Вы грамотно распараллелили расчёты по 100 серверам? - 100 серверов считает з/п для 1880 сотрудников? - Ваши сервера стоят в 100 организациях по неск. тыс. сотрудников в каждой?Сотрудники распределены по более чем 200-м линейным предприятиям, территориально расположенным по всей России. В каждом линейном предприятии стоит сервер линейного уровня (или один на несколько, территориально расположенных рядом, всё зависит от каналов связи). Есть ещё сервера регионального уровня, они используются для обмена данными между линейными предприятиями (транзакционная репликация) и с них передаются данные в другие оперативные системы и в ОЛАП. Сейчас ведутся работы по созданию центрального сервера в Москве для "глобальной" отчётности. Это я всё упрощённо описал, на самом деле там всё гораздо сложнее. Но вопрос не в этом. Вопрос в другом. Накой писать обработку данных на C++ (C#, Java), когда это можно на порядок проще и эффективнее реализовать в SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 11:57 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenС тем, что для коммерческой компании до неск. тысяч человек всё вполне реализуемо на T-SQL, не поспоришьА что, если будет больше, то нереализуемо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:22 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К Накой писать обработку данных на C++ (C#, Java), когда это можно на порядок проще и эффективнее реализовать в SQL? Пробовал я такой вариант, правда не в зарплате. Приложение было на C++ Builder, считывал данные с сервака, обрабатывал из на клиенте, а потом обновлял на серваке. Сделал всё это в хранимой процедуре, скорость работы значительно возросла, и система стала просто летать по сравнению с первым вариантом. Да и от конфигурации рабочей станции скорость перестала зависеть. А при распределённых системах могут быть ещё проблемы с каналами, и в этом случае обработку оптимально всё же делать в ХП на серваке. Хотя в каждом деле всегда есть золотая середина. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 12:55 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Даже если вдруг аналитика станет сильно влиять на работу оперативной системы, всегда можно "сбоку" прикрутить ОЛАП, и пусть вся аналитика крутится там. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 13:03 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_Toms Пробовал я такой вариант, правда не в зарплате. Приложение было на C++ Builder, считывал данные с сервака, обрабатывал из на клиенте, а потом обновлял на серваке. Сделал всё это в хранимой процедуре, скорость работы значительно возросла, и система стала просто летать по сравнению с первым вариантом. Распределённые вычисления принципиально отличаются от локальных. Возможно, в данном случае система не учитывала сетевые задержки. Если программа на C++ изначально была основана на принципах локальных вычислений, то неудивительно, что её перенос на сервер позволил увеличить скорость вычислений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 14:46 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К 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 системы и генератор отчётов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 15:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: > Согласен, только на чистом SQL и ХП обработку данных реализовать > невозможно. SQL запросы должен кто то толкать и забирать результат и > предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с > многими ограничениями, можно с этого места - поподробнее? А то ниасилил. >т.е. непременно нужен некий клиент БД. QA - подойдет как клиент? или SQL*Plus? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 15:42 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabСогласен, только на чистом SQL и ХП обработку данных реализовать невозможно. SQL запросы должен кто то толкать и забирать результат и предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с многими ограничениями, т.е. непременно нужен некий клиент БД. А раз есть клиент, то частенько есть возможность разместить расчёты на нём, а не в СУБД. Клиент в данном случае не обязательно GUI компонент или AS. Это может быть некий сервис, например менеджер расчёта зарплаты.1. ХП может вызываться из JOB-а и записывать данные в таблицу. Начислили ЗП и записали кому и за что начислили. А клиент (бухгалтер) посмотрит уже ПОТОМ, когда у него время будет. 2. Сервис - это совсем не трехзвенка. Это некий модуль сбоку, очень похожий на клиентское приложение, у которого украли пользователя и GUI. 3. Сервис, так же как и ХП, никому ничего не показывает. Так что аргумент "SQL запросы кто то толкать и забирать результат и предоставлять его пользователю " - не катит. Сервис это не сможет сделать так же как и ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 15:59 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
BelyСервис это не сможет сделать так же как и ХП. сервис делает то, на что запрограммирован. Скажут ПОКАЗЫВАЙ - покажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 16:22 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabПример с распределённой системой не показательный. Понятное дело, если раскидать нагрузку по сотне СУБД, то задача будет работать быстроЭто вынужденная мера, было бы возможно, сделали бы всё на одном сервере. Вопрос не в этом. Было утверждение, что при количестве человек более нескольких тысяч, производить расчёт их харатеристик (заработная плата, наработка часов и т. п.) с помощью SQL становится затруднительно. Это не так. Я привел время расчёта для ~2000 работников - ~1:30. Умножаем на 2, получаем ~ 3 минуты. Цифра вполне приемлемая, даже если её умножить на 10. Сервер там обычный - 2 х Xeon 2.4 ГГц 2 ГБ ОЗУ, ну или что-то вроде того, точно его характеристики не помню. Да и с чего бы тот же алгоритм, реализованный на C++ стал бы работать заметно быстрее? За счёт того, что мы напишем Index Seek лучше чем "мудрецы", разработавшие MSSQL? Сомнительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 16:39 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafm BelyСервис это не сможет сделать так же как и ХП.сервис делает то, на что запрограммирован. Скажут ПОКАЗЫВАЙ - покажет.Кому и что? Гуссары, молчать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 16:39 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely mcureenabСогласен, только на чистом SQL и ХП обработку данных реализовать невозможно. SQL запросы должен кто то толкать и забирать результат и предоставлять его пользователю, SQL это делать не умеет вообще, а ХП с многими ограничениями, т.е. непременно нужен некий клиент БД. А раз есть клиент, то частенько есть возможность разместить расчёты на нём, а не в СУБД. Клиент в данном случае не обязательно GUI компонент или AS. Это может быть некий сервис, например менеджер расчёта зарплаты.1. ХП может вызываться из JOB-а и записывать данные в таблицу. Начислили ЗП и записали кому и за что начислили. А клиент (бухгалтер) посмотрит уже ПОТОМ, когда у него время будет. 2. Сервис - это совсем не трехзвенка. Это некий модуль сбоку, очень похожий на клиентское приложение, у которого украли пользователя и GUI. 3. Сервис, так же как и ХП, никому ничего не показывает. Так что аргумент "SQL запросы кто то толкать и забирать результат и предоставлять его пользователю " - не катит. Сервис это не сможет сделать так же как и ХП. Всё правильно. По 1. Чтобы что то посмотреть бухгалтер должен иметь GUI к таблице или получить результат в виде бумажного отчёта. Лично я не видел ХП, которые что то печатают на принтере. По 2. Сервис это часть трёхзвенки (СУБД, AS это наборы сервисов), но не обызательно трёхзвенка. Cервис может быть прицеплен к системе сбоку или сзади. По 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 16:56 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab По 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов. ну почему же. В контракте сервиса есть его Тип. А это может быть: Presentation Process Business Data Integration ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:00 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab, ты все же предпринимаешь попытки оправдать свое незнание PL/SQL в частности и СУБД вообще? Зачем? Это очень .... плохо получается :) Кстати, попутно еще выясняется твоя проблема с пониманием распределенных вычислений, систем, многозвенок и т.д. Каша какя-то. Уже и не смешно. -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:11 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К 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 машина втроена в СУБД и отдельно не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:13 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabПо 1. Чтобы что то посмотреть бухгалтер должен иметь GUI к таблице или получить результат в виде бумажного отчёта. Лично я не видел ХП, которые что то печатают на принтере.нет ничего невозможного - точно так же как и сервис заставить показывать :) Если вы не поняли о чем я - поясню еще раз. ХП (так же как и сервис) - ведут расчет независимо от клиентских приложений. Собственно, клиентского приложения может вообще не быть как такового. На расчет ЗП - это никак не влияет. mcureenabПо 2. Сервис это часть трёхзвенки (СУБД, AS это наборы сервисов), но не обызательно трёхзвенка. Cервис может быть прицеплен к системе сбоку или сзади. Вы занимаетесь словоблудством - библиотека (DLL или .so или еще как) - тоже является частью различных программ и систем. Но это совершенно ни о чем не говорит - к каким классам относятся программы, состоящие из библиотек. mcureenabПо 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов.Странненький у вас GUI, однако. В таком случае - управление RAID-контроллером тоже можно назвать ГУЕм. Там и лампочка есть, по которой человек может что-то попытаться понять. А если постараться, то скрипом хардов можно морзянку передавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:18 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygramcureenab, ты все же предпринимаешь попытки оправдать свое незнание PL/SQL в частности и СУБД вообще? Зачем? Это очень .... плохо получается :) Кстати, попутно еще выясняется твоя проблема с пониманием распределенных вычислений, систем, многозвенок и т.д. Каша какя-то. Уже и не смешно. Моё незнание PL/SQL в частности и СУБД вообще приносит мне и моим заказчикам неплохие деньги. Может быть я чтото неправильно делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:22 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Так мы же не заказчики Можно найти лохов, вешать им лапшу на уши и раскручивать постоянно на бабки - не спорю, можно, но это умение другого плана :)) А тут не лохи, не заказчики, нас маркетинговыми лозунгами не возьмешь :) ЗЫ Интересно, а заказчики не считали, сколько экономии было бы, откажись они от распределенных вычислений и перейди на обычный к-с? ;))) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:25 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely mcureenabПо 3. Сервис, может иметь GUI, например управлять тревожной сигнализацией, или бегущей строкой с новостей. Впрочем, это не типичное использование сервисов.Странненький у вас GUI, однако. В таком случае - управление RAID-контроллером тоже можно назвать ГУЕм. Там и лампочка есть, по которой человек может что-то попытаться понять. А если постараться, то скрипом хардов можно морзянку передавать. Уговорил. Лампочки на HD, это не GUI. А морянка, это уже мультимедия! Однако... Если установить 2млн хардов с лампочками в матрицу, то вполне реально получить HD изображение со звуком! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:29 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraТак мы же не заказчики Можно найти лохов, вешать им лапшу на уши и раскручивать постоянно на бабки - не спорю, можно, но это умение другого плана :)) А тут не лохи, не заказчики, нас маркетинговыми лозунгами не возьмешь :) ЗЫ Интересно, а заказчики не считали, сколько экономии было бы, откажись они от распределенных вычислений и перейди на обычный к-с? ;))) Так я с тебя бабок и не требую. к-с, это частный случай распределённой системы. Заказчики могут считать, что угодно, только СУБД не решает их задачи реального времени (на ней зарплата расчитывается ), и по любому им нужен выделенный сервер, который изолирует оконечное оборудование от СУБД, и обеспечит необходимое время отклика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:41 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
[quot tygra]Траваааааа................ :)) Больше слов нет :) а tygra, по-моему, уже давно на героине... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 17:49 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabЯ уже сказал, что в runtime расчёт ЗП сам по себе на современных серверах даже начального уровня в настоящее время не является узким местом. Проблема проявится, когда на сервере БД будут одновременно запущены многие процессы, так что время реакции СУБД начнёт плавать в очень широких пределах создавая проблемы пользователям. Если ЗП расчитывается 1 час, это не проблема. Если в течении 1.5 минут сервер не обслуживает запросы пользователей, это проблема.И из-за чего "расчёт зарплаты" должен тормозить работу других пользователей? Исходные данные для расчёта меняться не должны. Значит блокировок не будет. Если оперативки хватит (а её по-хорошему должно хватать), то очереди к диску тоже не будет. Процессора 2, значит все ресурсы расчёт на себя не возьмёт (ну если не распараллелится конечно, но тут всё должно быть продумано). А сейчас вообще уже четырёхядерные процессоры пошли. Если нам не критично время выполнения расчёта, то там можно искуственных пауз навставлять, чтобы другим процессам на сервере больше процесорного времени досталось. Конечно, всё будет несколько медленнее, но такого, что сервер вдруг перестанет отвечать на запросы пользователей случиться не должно. Вариантов решения много, всё зависит от конкретной задачи. И никакой C++, C#, Java и т. п. тут не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 18:29 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: > По 1. Чтобы что то посмотреть бухгалтер должен иметь GUI к таблице или > получить результат в виде бумажного отчёта. Лично я не видел ХП, которые > что то печатают на принтере. Т.е. из-за того, что ХП не умеют печатать на принтере (кстати - почему не умеют? очень даже) - вы делаете вывод - надо производить расчеты на клиенте? Зобавно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 18:43 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabСам по себе C++ не гарантирует увеличение производительности, но он позволяет при сопоставимой скорости получить значительно более богатую функциональность, чем даёт чистый SQL .Например? Какую обработку данных, хранящихся в таблицах в БД, удобнее писать на С++ чем на SQL? Уж не рассчёт-ли выполненной работы сотрудниками, выраженной во времени, деньгах или других единицах? Ню, ню... :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 18:47 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К mcureenabЯ уже сказал, что в runtime расчёт ЗП сам по себе на современных серверах даже начального уровня в настоящее время не является узким местом. Проблема проявится, когда на сервере БД будут одновременно запущены многие процессы, так что время реакции СУБД начнёт плавать в очень широких пределах создавая проблемы пользователям. Если ЗП расчитывается 1 час, это не проблема. Если в течении 1.5 минут сервер не обслуживает запросы пользователей, это проблема.И из-за чего "расчёт зарплаты" должен тормозить работу других пользователей? Исходные данные для расчёта меняться не должны. Значит блокировок не будет. Если оперативки хватит (а её по-хорошему должно хватать), то очереди к диску тоже не будет. Процессора 2, значит все ресурсы расчёт на себя не возьмёт (ну если не распараллелится конечно, но тут всё должно быть продумано). А сейчас вообще уже четырёхядерные процессоры пошли. Если нам не критично время выполнения расчёта, то там можно искуственных пауз навставлять, чтобы другим процессам на сервере больше процесорного времени досталось. Конечно, всё будет несколько медленнее, но такого, что сервер вдруг перестанет отвечать на запросы пользователей случиться не должно. Вариантов решения много, всё зависит от конкретной задачи. И никакой C++, C#, Java и т. п. тут не нужны. Всё что ты сказал даёт понять, что сервер нагружен очень слабо. В системе с большим числом пользователей это не так. Или ты думаешь, что количество подключений к СУБД равно числу процесссоров на сервере? 2 процессора? 4 процессора? Это в два, четыре раза больше стоимость лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас развели на покупку оборудования и СУБД в значительно большем объёме чем это требуется. При таком подходе, почти все задачи (даже генерацию html страниц) можно решать на СУБД без проблем. Собственно для посчитать и сохранить ЗП C++ не нужен. Но чтобы распечать отчёты, хоть и не C++, но нужна какая то внешняя программа, хотя бы Web browser. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 18:49 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: > 2 процессора? 4 процессора? Это в два, четыре раза больше стоимость > лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас А точно "в два, четыре раза больше" - ничего не путаем, не? > это требуется. При таком подходе, почти все задачи (даже генерацию html > страниц) можно решать на СУБД без проблем. Оракл, кста, этим благополучно занимается - см HTP/HTF/OWA*. > Собственно для посчитать и сохранить ЗП C++ не нужен. Но чтобы распечать > отчёты, хоть и не C++, но нужна какая то внешняя программа, хотя бы Web > browser. Ок. Поелику IE умеет печатать отчеты - пусть он считает зряплату? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 18:54 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabВсё что ты сказал даёт понять, что сервер нагружен очень слабо. В системе с большим числом пользователей это не так.Ну не знаю. Всё относительно конечно, но подключений 200 - 500 днём стабильно держится. Сколько ночью - не знаю, ни разу не ночевал на работе... :-)) mcureenab2 процессора? 4 процессора? Это в два, четыре раза больше стоимость лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас развели на покупку оборудования и СУБД в значительно большем объёме чем это требуется. Чё-то я не понял, кто кого разводил? Мы заказчиков, или они нас? О чём вы... Ещё неизвестно во сколько обойдётся для заказчика "расчёт зарплаты" на С++. Разработка, отладка, опытное внедрение и т. п. И ещё не факт что в итоге всё получится и будет хорошо работать. Вон, соседний топик про 1С просто усыпан "лестными" отзывами о качестве продукта. mcureenabСобственно для посчитать и сохранить ЗП C++ не нужен.Я перестал понимать, о чём идёт дискуссия. Уточните пожалуйста Вашу точку зрения. А то, судя по этому посту, мы с вами придерживаемся одинаковой позиции по данному вопросу. :-)) mcureenabНо чтобы распечать отчёты, хоть и не C++, но нужна какая то внешняя программа, хотя бы Web browser.Полностью с вами согласен. lockyОк. Поелику IE умеет печатать отчеты - пусть он считает зряплату?Ага, на java-script, самое то... :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:16 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Хм, поправьте меня, если я ошибаюсь, но в примере с той же зарплатой. Для того, чтобы рассчитать ее на клиенте, необходимо как минимум вытянуть данные с сервера. Причем, вытянуть нужно не "готовые" данные, которые процедура может выдавать, к примеру, для печати отчета, а вытянуть нужно "сырые" данные, обработать их, и загнать их назад. Объем таких данных ОЧЕНЬ большой, иначе с чего бы был медленный расчет на СУБД? Из этого следует, как минимум 1. Затраты времени на таскание данных туда-сюда 2. Затраты памяти на хранение данных, пока мегабыстрая клиентская программа будет их обрабатывать. 3. Геморрой с программированием клиентской части, в которой нужно будет реализовывать часть, пусть и небольшую, функциональности СУБД. Тот же индексный поиск, например. Не факт, совсем, что совокупные затраты времени на все вышеперечисленное окупят выигрыш в скорости рассчетов. Мое ИМХО - СУБД - это приложение для обработки данных, и поэтому обработку данных нужно делать именно на ней. За редкими исключениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:17 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Sergey Tokarev3. Геморрой с программированием клиентской части, в которой нужно будет реализовывать часть, пусть и небольшую, функциональности СУБД. Тот же индексный поиск, например.И плюс время на построение этих локальных индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:25 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab Распределённые вычисления принципиально отличаются от локальных. Возможно, в данном случае система не учитывала сетевые задержки. Если программа на C++ изначально была основана на принципах локальных вычислений, то неудивительно, что её перенос на сервер позволил увеличить скорость вычислений. В данном ответе, о распределённых вычислениях я не упоминал. Я привёл примеры с ХП и без неё. mcureenab Согласен, только на чистом SQL и ХП обработку данных реализовать невозможно. Ещё как можно, основная обработка у меня именно так и делается, проверено на практике. В задаче для расчёта зарплаты, основные расчёты можно свести к определённому изолированному набору вычислений, допустим для одного лицевого счёта, всё это можно заложить в ХП. Дело в том, что при этом производятся периодически считывание данных необходимых для расчётов и быстрее всего это будет, когда данные находятся на одном сервере. А при распределённых вычислениях выигрыш будет заметен, тогда когда процесс вычисления можно разбить на несколько частей. В при расчёте зарплаты можно легко обойтись без этого. А "толкают" все эти ХП, конечно операторы с помощью клиентских приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Из опыта: Delphi 5, 6, 7. MSSQL 2000, 2005 Доступ к данным сервера - ADO. 1. Первична архитектура БД. Создавать структуру, ограничения целостности - пока не подключать, отлаживать архитектуру - потом подключать ограничения целостности. Триггеры - дело вкуса, считаю излишним, расход ресурсов. 2. Доступ к данным черех хранимые процедуры. Обязательно параметризовать. Данные с сервера - на клиенте минимизировать. Зачем тащить курсоры на клиента > 50 строк? 3. Хранимыми процедурами обеспечить ввод, корректировку, удаление. 4. Лучше сделать несколько ХП вместо одной. 5. В теле программы - ни одного SQL запроса (для фильтрации курсора - можно.) 6. Поскольку зарплата - конфиденциальная вещь - делать на нее отдельную БД со свом доступом. Обшие справочники можно размещать в отдельной БД. 7. Не злоупотреблять применением деревоподобных компонентов. 8. Мне роднее GRID, чем ComboBox и т.п. 9. Считать пересборку проекта - лишней процедурой. Лезть в программу по каждому чиху - а для чего SQL Server? Много конечно еще чего, но это известная теория СУРБД. С уважением и удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:29 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
laleks 6. Поскольку зарплата - конфиденциальная вещь - делать на нее отдельную БД со свом доступом. Обшие справочники можно размещать в отдельной БД. Всё это в лёгкую делается с помощью видов. Я у себя так и реализовал. Алексей К Я привел время расчёта для ~2000 работников - ~1:30. Умножаем на 2, получаем ~ 3 минуты. Совсем запутался в арифметике. Для уточнения, сколько же времени у вас требуется на полный расчёт для одного сотрудника? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:41 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_TomsСовсем запутался в арифметике. Для уточнения, сколько же времени у вас требуется на полный расчёт для одного сотрудника?Ну если 2000 сотрудников обсчитываются где-то 1.5 ... 2 минуты, то один - "мгновенно". Лицевой счёт сотрудника с различными расчётами нарастающим итогом с начала месяца по первичным данным открывается где-то секунды за полторы. Хочу отметить, что у меня не совсем зарплата. У меня расчёт рабочего времени, времени отвлечений и ряда специфичных для нашей предметной области характеристик сотрудника. С другой стороны, если я правильно понимаю принцип расчёта заработной платы, то это практически тоже самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 19:57 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К mcureenab2 процессора? 4 процессора? Это в два, четыре раза больше стоимость лицензии на СУБД и оборудование тоже ощутимо дороже. Грубо говоря, вас развели на покупку оборудования и СУБД в значительно большем объёме чем это требуется. Чё-то я не понял, кто кого разводил? Мы заказчиков, или они нас? О чём вы... Ещё неизвестно во сколько обойдётся для заказчика "расчёт зарплаты" на С++. Разработка, отладка, опытное внедрение и т. п. И ещё не факт что в итоге всё получится и будет хорошо работать. Вон, соседний топик про 1С просто усыпан "лестными" отзывами о качестве продукта. Про это я писал. C++ слишком сложный язык для описания алгоритма расчёта зарплаты, а это скорее самый важный критерий. Дело не в C++, а в возможности вынести процесс расчёта на отдельный от СУБД узел. Как бы ХП выдернуть из СУБД и пустить в свободное плавание довольно сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:25 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К Ну если 2000 сотрудников обсчитываются где-то 1.5 ... 2 минуты, то один - "мгновенно". Лицевой счёт сотрудника с различными расчётами нарастающим итогом с начала месяца по первичным данным открывается где-то секунды за полторы. Так это нормально, это и есть работа в режиме реального времени. Это когда после ввода данных, бухгалтер видит результаты расчёта и сразу проверяет правильно ли произведён расчёт и если ОК, то можно смело переходить к следующему л/с. С такой скоростью работы системы нам удалось свести количество ошибок фактически к нулю, при этом каждый бухгалтер ведёт 600-700 чел, а на время болезни или отпуска одной, ещё больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab C++ слишком сложный язык для описания алгоритма расчёта зарплаты, а это скорее самый важный критерий. Нормальный язык, для такой задачи не сложнее других, у меня клиентские части написаны на C++ Builder. И я ни сколько не жалею, что выбрал этот язык прграммирования. Все расчёты как я уже отмечал сводятся к простым простым арифметическим действиям. А вот придумать как реализовать эту задачу и как всё это разбить на сравнительно простые куски, вот это действительно не просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:39 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
laleks 2. Доступ к данным черех хранимые процедуры. Обязательно параметризовать. Данные с сервера - на клиенте минимизировать. Зачем тащить курсоры на клиента > 50 строк? 3. Хранимыми процедурами обеспечить ввод, корректировку, удаление. 4. Лучше сделать несколько ХП вместо одной. 2, 3. ХМ. А чем select, insert, update, delete не устраивает? Тем более что компоненты доступа к БД, эти запросы самостоятельно создают. И триггеры никто не отменял. А >50 строк, так это может быть так пользователю надо. Другое дело, если пользователю много строк не надо, то нефиг их тянуть все. 4. Может быть для чего то и лучше. Только не надо забывать, что для вызова ХП или DML, на клиенте и сервере нужно открыть курсор, разобрать запрос, выполнить его, по ходу открывая рекурсивные курсоры и запросы. Если все DML операции вызывать через ХП, то СУБД потребуется чуть не вдвое больше памяти для хранения курсоров и дополнительное время для их компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:40 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabПро это я писал. C++ слишком сложный язык для описания алгоритма расчёта зарплаты, а это скорее самый важный критерий. Дело не в C++, а в возможности вынести процесс расчёта на отдельный от СУБД узел. Как бы ХП выдернуть из СУБД и пустить в свободное плавание довольно сложно.Зачем что-то куда-то выносить, если и без "выноса" всё отлично работает. Ну если так сильно хочется вынести аналитику отдельно - поставьте рядом ещё одну СУБД и назовите её OLAP . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:43 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab2, 3. ХМ. А чем select, insert, update, delete не устраивает? Тем более что компоненты доступа к БД, эти запросы самостоятельно создают. И триггеры никто не отменял. А >50 строк, так это может быть так пользователю надо. Другое дело, если пользователю много строк не надо, то нефиг их тянуть все. 4. Может быть для чего то и лучше. Только не надо забывать, что для вызова ХП или DML, на клиенте и сервере нужно открыть курсор, разобрать запрос, выполнить его, по ходу открывая рекурсивные курсоры и запросы. Если все DML операции вызывать через ХП, то СУБД потребуется чуть не вдвое больше памяти для хранения курсоров и дополнительное время для их компиляции.Бес коментариеф.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:48 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Sergey TokarevМое ИМХО - СУБД - это приложение для обработки данных, и поэтому обработку данных нужно делать именно на ней. За редкими исключениями. Если бы СУБД была предназначена для обработки данных, её бы назвали Система Обработки Данных (СОД). Одако СУБД назвали Системой Управления Базой Данных. Думаю, это не случайно. База Данных, это вполне конкретные файлы на диске, а не вообще всякоразные сведения, которые можно как то обработать. Управление, это тоже не совсем Обработка. ИМХО, управление не порождает новых данных, но размешает их в БД (в файлах на диске) или извлекает их оттуда наилучшим образом. Обработка скорее связана с преобразованием одних данных в другие, т.е. всякоразные вычисления, кодирование, шифрование, сжатие и распаковка. Обработка вообще может быть не связана с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 20:53 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
2 Alex_Toms Да действительно, бывает полезно сразу после ввода данных отобразить оператору какие-нибудь расчётные характеристики, основанные на вновь введённых данных, чтобы он смог оценить правильность вода. 2 mcureenab Ну так чё там с OLAP, как идея? Или не понравилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:07 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabЕсли бы СУБД была предназначена для обработки данных, её бы назвали Система Обработки Данных (СОД). Одако СУБД назвали Системой Управления Базой Данных.Вас послушать, так любому запросу сложнее "SELECT * FROM tbl" не место в базе. Ведь это уже будет обработка данных, а не управлением данных. Группировка, аналитика и джоины - всех на клиента! Не барское это дело данные обрабатывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:10 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab 2, 3. ХМ. А чем select, insert, update, delete не устраивает? Тем более что компоненты доступа к БД, эти запросы самостоятельно создают. И триггеры никто не отменял. А >50 строк, так это может быть так пользователю надо. Другое дело, если пользователю много строк не надо, то нефиг их тянуть все. При получении запросов select, insert, update, delete сервак: 1: сначала призводит синтаксический разбор текста 2: затем компилирует 3: производит оптимизацию плана запроса 4: и только после этого выполняет сам запрос. При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный. Систему необходимо проектировать так, чтобы не было дублирования данных при этом можно обойтись и без триггеров. Я например вообще обошёлся без них. Меньше тормозов в работе. А сколько строк тянуть на клиента? Конечно лишего не надо, тут даже и спорить нет большёй необходимости. Хотя если делать курсор на сервере и тащить только 5 записей например из полученных 500, то остальные останутся на сервере и будут отнимать его ресурсы (временное пространство не резиновое). И поэтому иногда выгоднее всё же их утащить на клиента и там делать многократный перебор этих значений. В ADO напрмер, можно реализовать курсор как на сервере так и на клиенте, всё зависит от каждого конкретного случая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:12 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: Автор, пиши еще... Плакал весь день, не переставая.... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:23 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К Да действительно, бывает полезно сразу после ввода данных отобразить оператору какие-нибудь расчётные характеристики, основанные на вновь введённых данных, чтобы он смог оценить правильность ввода. Да не просто полезно, а необходимо, без этого не будет хорошей скорости работы системы, а это лишние рабочие места, компьютеры, лицензии на ПО и другие затраты... Это если грубо сравнивать, когда например автомобиль начинает разгонятся после нажатие на газ с заметной задержкой и также и тормозить, на таком авто быстро не поездишь и много не заработаешь. Bely Группировка, аналитика и джоины - всех на клиента! Не барское это дело данные обрабатывать... Вот это я не понял, как будет всё это клиент делать? Он ведь абсолютно не владеет языком запросов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:24 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: >База Данных, это вполне конкретные > файлы на диске, а не вообще всякоразные сведения, которые можно как то А если у мена рав-партишн - то это уже не СУБД? а если мне надо просуммировать столбец в табличке - это обработка данных? Кто это должен делать - сервер или клиент? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:24 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_Toms Bely Группировка, аналитика и джоины - всех на клиента! Не барское это дело данные обрабатывать... Вот это я не понял, как будет всё это клиент делать? Он ведь абсолютно не владеет языком запросов!Языком запросов владеет программист, а сервер и клиент выполняет инструкции По поводу того, что клиент не умеет выполнять SQL запросы - тоже не верно. Вспомните, хотя бы, старый добрый Access. Запросы выполняет, работает полностью на клиенте. Дело в том, что большинство запросов проще выполнить там же где лежат данные, чем передавать данные в отдельную программу. Именно это и делает СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 21:46 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely Языком запросов владеет программист, а сервер и клиент выполняет инструкции По поводу того, что клиент не умеет выполнять SQL запросы - тоже не верно. Вспомните, хотя бы, старый добрый Access. Запросы выполняет, работает полностью на клиенте. Дело в том, что большинство запросов проще выполнить там же где лежат данные, чем передавать данные в отдельную программу. Именно это и делает СУБД. Ещё раз повторюсь, SQL запросы выполняет всё же SQL сервер, а не как не клиент ... А программист просто знает как работают запросы. На сколько я правильно помню, старый добрый Access запросы всё же выполнять не мог, их за него выполнял механизм Jet. А почему всё это работало полностью на клиенте. Всё очень просто, при инсталяции офиса, Jet автоматом садится. И при работе с ADO рекомендуют выбирать для работы с MDB именно Jet с ним выше скорость, и поэтому функции он может выполнить которые есть только в Access. Ну а по третьему пункту, в общем именно за это я "агитирую", с поправкой: не проще выполнить там же где лежат данные, а обработка происходит быстрее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 22:15 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_Toms При получении запросов select, insert, update, delete сервак: 1: сначала призводит синтаксический разбор текста 2: затем компилирует 3: производит оптимизацию плана запроса 4: и только после этого выполняет сам запрос. При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный. В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 22:44 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
B MSSQL так же... С Oracle много схожего, хотя у каждой БД есть свои изюминки, которой нет у другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 23:02 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
locky mcureenab wrote: >База Данных, это вполне конкретные > файлы на диске, а не вообще всякоразные сведения, которые можно как то А если у мена рав-партишн - то это уже не СУБД? Файл на диске, это область памяти. Работаем мы с этой областью через файловую систему или как с raw устройством файл остаётся файлом. lockyа если мне надо просуммировать столбец в табличке - это обработка данных? Да. lockyКто это должен делать - сервер или клиент? Зависит от постановки задачи. Если все данные есть на клиенте, то наверное клиенту будет сподручнее найти сумму самостоятельно, чем напрягать сеть и СУБД. Никто не спорит, что функции обработки данных встроены в современные СУБД, и в ряде случаев они упрощают жизнь программиста, или экономят ресурсы, например сетевые, как в случае выборки агрегатов. Я предлагаю относится к этим функциям с точки зрения их полезности для системы в целом. Alex_TomsВот это я не понял, как будет всё это клиент делать? Он ведь абсолютно не владеет языком запросов! Хех. Что, без SQL уже посчитать ничего не умеем? SQL запрос в конечном итоге сводится к выполнению определённого алгоритма, который при желании можно запрограммировать на алгоритмическом языке. Совсем не обязательно загружать массив чисел в БД, чтобы посчитать сумму его элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 23:03 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab Хех. Что, без SQL уже посчитать ничего не умеем? SQL запрос в конечном итоге сводится к выполнению определённого алгоритма, который при желании можно запрограммировать на алгоритмическом языке. Совсем не обязательно загружать массив чисел в БД, чтобы посчитать сумму его элементов. И без SQL посчитать умеем, и даже лучше чем он, например при сложных научных расчётах... Вообще то БД это в первую очередь хранилище данных. Будут данные, будет что обрабатывать... Наибольшая скорость работы SQL серверов заточена как раз на выполнение запросов, к примеру с помощью серверных курсоров, суммирование будет гораздо медленней чем простой select. А если массив чисел находится на клиенте, то это не наш случай. Дебаты идут по вопросу, качать данные с сервака на клиента и например там суммировать, или суммировать на сервере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 23:26 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Я тоже всегда считал, что СУБД - чОрное зло! Ну а так и сам я злой и подлый, служу ему с большим удовольствием ;) Если же быть серьезным, вынос вычислений на отдельный сервер - не самая плохая идея. Виртуальная машина PL/SQL действительно медленная. С одной стороны лучше втюхать заказчику SunFire 15K с бизнес-логикой на PL/SQL, вместо двух 890-х (один - сервер БД, второй - сервер приложений). Но что вы будете говориь заказчику, когда самый топовый сервер (SunFire 25K или HP SuperDom) начнет не справляться с вычислениями (про RAC молчим, эта технология подходит далеко не для всех задач)? Правильно - вы ничего не будете говорить, а таки будете выносить бизнес логику в С/C++ приложение. А зарплату надо считать в 1С :) Это была провокация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 23:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
serjio-k Если же быть серьезным, вынос вычислений на отдельный сервер - не самая плохая идея. Виртуальная машина PL/SQL действительно медленная... А зарплату надо считать в 1С :) Это была провокация. Ситуацию когда процесс вычислений на HP SuperDom с PL/SQL, выносили на отдельный сервер с C/C++ я встречал. И при этом получали заметный выигрыш в скорости. Но это очень редкий случай. А про то, что зарплату надо считать в 1С : Это не провокация. Пусть поделятся опытом кто на предприятии численностью в тысячи человек, внедрил расчёт зарплаты на 1С, как скорость работы, на каком железе, ну очень интересно... На сколько я в курсе например "Камин", рекомендуют до 1000 человек, а реально до 500. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 23:48 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_TomsДебаты идут по вопросу, качать данные с сервака на клиента и например там суммировать, или суммировать на сервере... Что тут дебаты разводить. Тупая задача, тупое решение. Гораздо интереснее, когда нам нужно и агрегаты поиметь и детализацию. Ещё интереснее, когда клиент часть данных уже имеет в локальном кэше и вообще работает с СУБД только через локальный кэш и про SQL никакого понятия не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2007, 23:50 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab Что тут дебаты разводить. Тупая задача, тупое решение. Прежде чем задачу называть тупой, неплохо бы её самому решить и поделиться своим опытом. А тупое решение может быть у любой задачи, гораздо сложнее найти хорошее решение! mcureenab Гораздо интереснее, когда нам нужно и агрегаты поиметь и детализацию... В это не понял? Как раз с этим то проблем и нет. mcureenab Ещё интереснее, когда клиент часть данных уже имеет в локальном кэше и вообще работает с СУБД только через локальный кэш и про SQL никакого понятия не имеет. Ну а в локальном кэше данные то откуда возьмутся как не из БД, да и этой части данных может не хватить, значит их туда всё же необходимо закачать? Да можно их обработать и на клиенте. Повторяюсь: что выгоднее, качать данные с сервака на клиента и например там суммировать, или суммировать на сервере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 00:11 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Задача зарплаты при соответствующем :) проектировании и реализации грубо тупо выполняется последовательным выполнением запросов (массовым запросам так вообще Бог велел на серве выполняться) Изменения логики в большинстве своем реализуются без изменения клиентской части Потому тащить расчеты на клиента смысла не вижу. Было бы познавательно послушать примеры необходимости в оном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 04:41 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab Alex_Toms При получении запросов select, insert, update, delete сервак: 1: сначала призводит синтаксический разбор текста 2: затем компилирует 3: производит оптимизацию плана запроса 4: и только после этого выполняет сам запрос. При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный. В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса.В MSSQL всё так, как описал Alex_Toms. Если нужно чтобы план выполнения ХП при каждом запуске строился заново, то это можно указать дополнительной "галочкой". mcureenab, ты бы хоть книжку какую прочитал бы, перед тем как тут выступать. Рекомендую начать с этого . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 07:14 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Ржунимагу Наконец-то за последние 3 месяца появилось желание прийти на sql.ru, чтоюы посмеяться Молодец, mcureenab, позабавил! С такой решительностью биться не имея никаких знаний и опыта работы с СУБД - это медаль надо, большую, чугунную, на цепи И грамоту, даже две - одну за неграмостность в сфере СУБД и систем, использующих СУБД, вторую - за развод лохов заказчеков. И все же расскажи, что за трава - сорт необычный, контрабанда? :)) Продолжай, запасся чипсами, пивом и деффками -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 09:04 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К 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 получив строку с именем процедуры от клиента, не делает ее анализа? Хотя бы наличие такой процедуры он должен проверить? Или он сразу эту строку "выполняет"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 10:04 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyА кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше.По моему да, точно не помню. У меня статистика как правило одинаковая. Для меня это не актуально. Bogdanov AndreyТак неужели MSSQL получив строку с именем процедуры от клиента, не делает ее анализа? Хотя бы наличие такой процедуры он должен проверить? Или он сразу эту строку "выполняет"?Можно поставить "галочку", чтобы он её каждый раз перекомпилировал. По умолчанию она не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 10:26 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ЯМожно поставить "галочку", чтобы он её каждый раз перекомпилировал. По умолчанию она не стоит.Ну и вручную можно установить признак, чтобы при следующем запуске процедура перекомпилировалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 10:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
atv_13Потому тащить расчеты на клиента смысла не вижу. Смысл очень простой - разгрузить процессоры сервера БД.(алтернатива - добавлять процессоры, но тогда перестанет справляться ОС) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 10:57 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Alex_TomsНа сколько я правильно помню, старый добрый Access запросы всё же выполнять не мог, их за него выполнял механизм Jet. А почему всё это работало полностью на клиенте. Всё очень просто, при инсталяции офиса, Jet автоматом садится. И при работе с ADO рекомендуют выбирать для работы с MDB именно Jet с ним выше скорость, и поэтому функции он может выполнить которые есть только в Access.Может старый аксес и не умел выполнять, но современный - вполне адекватно реагирует на SQL. по поводу того, что Jet - это сервер. Это неверно. Jet - это библиотека, которая подключается к программе. Точно так же как в старые времена, когда не было windows - была куча оконных графических и не очень графических библиотек, используя которые програмист мог писать свой интерфейс. Библиотеки эти работали непосредственно с видеокартами минуя всякие ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 11:04 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
>tygra ... Ржунимагу А почему собственно? SQL server строит выборку состоящую из последовательности нескольких таблиц и передаёт её серверу приложения, который преобразует её в формат DataSet. В DataSet имею возможность напрямую получить доступ к значению любого поля, любой строки, любой таблицы. Т.е. вполне допустима проверка: если (<поле k><строки j><таблицы i>) истина, то ... Предполагается, что DataSet размещается в оперативной памяти СП. Я не уверен, что в среде SQL сервера подобные операции будут идти быстрее, да и даеко не все работают с Oracle. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 11:04 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ВМоисеевЯ не уверен, что в среде SQL сервера подобные операции будут идти быстрее, да и даеко не все работают с Oracle.Вот именно потому что, немногие работают с Ораклом - эти многие думают, что на клиенте подобные операции будут быстрее :) Загрузку между клиентом и сервером надо распределять тоже с умом, а не пихать все в одну кучу. PS: есть такая библиотечка в дельфях - EhLib. позволяет в гридах делать фильтрацию на клиенте с помощью языка условий, задаваемого пользователем. Оч удобно! но когда количество принимаемых данных стало большим - эти гриды стали просто захлебываться перед фильтрацией. При добавлении фильтрации на сервере - все стало летать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 11:20 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ВМоисеевПредполагается, что DataSet размещается в оперативной памяти СП. Я не уверен, что в среде SQL сервера подобные операции будут идти быстрееDataSet, это который из ADO.Net? А не настораживает, что там managed-среда? Проверка границ массивов и контроль типов и прочее... Вы серьёзно полагаете, что там будет работать быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 11:21 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
BelyВот именно потому что, немногие работают с Ораклом - эти многие думают, что на клиенте подобные операции будут быстрееПапрашу не обобщать... :-)) MSSQL forever... :-)) модСмысл очень простой - разгрузить процессоры сервера БДДавайте вообще уберём процессор с сервера, оставим один HDD. :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 11:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Может быть не в тему, но все-таки. Ни для кого не секрет, что SQL-ная версия 1С 7.7 реализована в виде толстого клиента, при этом мы имеем возможность создания и использования в ее интерфейсе запросов в самом SQL-сервере, т.е. как тонкого клиента. так вот практика: время создания специфического отчета средствами самого клиента, а там были и расчеты и группировки и т.д., резко колебалась и естественно зависела от компьютера на котором он запускался, от минуты до 20 минут, после оформления его в виде вызываемой ХП, пользователь получал его в течении 20 секунд и при этом не было зависимости от компьютера пользователя, по крайней мере на глаз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 11:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей КДавайте вообще уберём процессор с сервера, оставим один HDD. :-)) Который из 32-х ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 12:11 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
мод Алексей КДавайте вообще уберём процессор с сервера, оставим один HDD. :-)) Который из 32-х ?Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 12:14 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К wrote: > Давайте вообще уберём процессор с сервера, оставим один HDD. :-)) > > > Который из 32-х ? > > Все. зачем? Ведь все данные и так уже локально скэшированы на клиента... Причем у каждого клиента - своя, уникальная копия общих данных, не имеющих ничего общего с данными других клиентов! Долой уравниловку! Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 13:01 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Насчёт расчёта зарплаты на клиенте хотел поделиться опытом эксплуатации одной системы. Случай классический - толстый клиент и файл-серверная БД. Вся логика расчётов (а она несколько специфична для угледобывающей отрасли, поскольку количество видо начислений, удержаний гораздо больше среднего по другим отраслям) вшита в клиентское приложение. Итак, расчёт зарплаты для 12000 сотрудников длится около 40 минут. Вышедшая новая версия продукта хранит данные на MSSQL, но на производительности это никак не сказывается (точнее, сказывается, но в худшую сторону), поскольку обработка данных по-прежнему на клиенте. Конечно, возможно, что низкая производительность обусловлена кривыми руками разработчиков, но простейшие эксперименты с переносом расчётов на сервер в виде ХП, показывают увеличение производительности на порядок при той-же численности народа и сложности расчётов. При этом не производилась сколь-нибудь серьёзная оптимизация зпросов. Вотъ. ------ Всех благ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 13:48 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ВМоисеев>tygra ... Ржунимагу А почему собственно? SQL server строит выборку состоящую из последовательности нескольких таблиц и передаёт её серверу приложения, который преобразует её в формат DataSet. В DataSet имею возможность напрямую получить доступ к значению любого поля, любой строки, любой таблицы. Т.е. вполне допустима проверка: если (<поле k><строки j><таблицы i>) истина, то ... Предполагается, что DataSet размещается в оперативной памяти СП. Я не уверен, что в среде SQL сервера подобные операции будут идти быстрее, да и даеко не все работают с Oracle. Я боюсь, что не понял смысла в этом. Смысла в делании чего-то там в СП с данными, для которых существует специально предназначенный для данных сервер БД. Не понял, какие операции будут не быстрее - операции выборки данных? :)) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 14:05 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К модСмысл очень простой - разгрузить процессоры сервера БДДавайте вообще уберём процессор с сервера, оставим один HDD. :-)) Идея не нова, и более того, уже реализована. В частности нонфигурация, где БД назмещена в NAS, а СУБД на отдельном сервере. NAS обеспечивает доступ к данным на уровне файлов, СУБД, на уровне реляционных, объектных и т.п. отношений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 14:47 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
>tygra ...Смысла в делании чего-то там в СП с данными ... Хочу заострить внимание коллег на тот факт, что не всегда! удобно реализовывать обработку данных выборки в среде сервера данных. В свое время приводил ситуацию - выборка заказанная клиентом представляет собой таблицу из двух столбцов - x (значение переменной) и у (значение функции) за некоторый период. Выборку можно было передавать клиенту, но сеть плохая. Решено было осуществить сплайн интерполяцию (кубическую) и передавать клиенту только коэффициенты сплайна. Не думаю, что эту задачу надо (и можно ли) делать в среде SQL-сервера. Выборка вполне может представлять собой данные для линейного программирования. Опять таки, реализовывать подобные задачи в ХР? Считаю, что это должен делать СП. Он располагается в высокоскоростной сети с сервером данных, или вообще может быть запущен на компьютере сервера данных. Клиентский же комп может быть удален на географическое расстояние от локальной сети сервера данных - качать туда большой объем данных вряд ли целесообразно по низкоскоростной ненадежной сети. В задачах, что приходилось решать, требовался доступ к заданным полям таблиц выборки. Что Oracle умеет выполнять операции Fox-а типа Seek или Locate? С уважением, Владимир. ------------------------------------ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 14:49 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Sergey OrlovМожет быть не в тему, но все-таки. Ни для кого не секрет, что SQL-ная версия 1С 7.7 реализована в виде толстого клиента, при этом мы имеем возможность создания и использования в ее интерфейсе запросов в самом SQL-сервере, т.е. как тонкого клиента. так вот практика: время создания специфического отчета средствами самого клиента, а там были и расчеты и группировки и т.д., резко колебалась и естественно зависела от компьютера на котором он запускался, от минуты до 20 минут, после оформления его в виде вызываемой ХП, пользователь получал его в течении 20 секунд и при этом не было зависимости от компьютера пользователя, по крайней мере на глаз... Ясен пень, что скорость завивит от оборудования. Серверы приложений и созданы, чтобы с одной стороны разгрузить СУБД, с другой стороны не нагружать клиента, ресурсы которого могут оказаться недостаточными для решения задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 14:53 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyНе знаю как в MSSQL, но в Oracle возвращение данных с помощью ХП - это два запроса вместо одного. ... Ну так вот выполнение первого из этих запросов требует ровно тех-же действий, что и выполнение обычного select (правда чем у Alex_Toms различаются п.1 и п.2 я не понял). Ну а второй запрос (тот что внутри ХП), естественно, уже скомпилирован. А кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше. ХМ. Я не знаю, что вы понимаете под компиляцией SQL запроса, но во время компиляции ХП PL/SQL, происходит только проверка синтаксиса и семантики статического запроса (наличие и доступности таблиц и колонок) в объёме необходимом для создания соответствующего запросу p-кода, например структуры буфера для выборки строк. Исполнимый код SQL запроса не создаётся. На этапе выполнения текст запроса восстанавливается и в почти исходном виде отправляется в SQL машину для разбора, построения плана (т.е. исполнимого кода) и выполнения, т.е. по сути компилируется повторно, но уже полностью. Среди разработчиков Oracle бытует миф, о магическом ускорении статических SQL запросов по сравнению с динамическими. Считается, что ускорение связано с некой компиляцией SQL запроса в ХП. Но, источник этого мифа не компилятор, а кэш курсоров PL/SQL, который позволяет исключить повторный разбор (parse) SQL запроса, если он выполнялся ранее. С тем же успехом программист может сам отслеживать часто используемые курсоры и не закрывать их без нужды. В добавок компилятор причёсывает SQL запросы, удаляя из них ненужные коментарии, и прочие пробельные символы, переименовывает переменные привязки, поднимает регистр идентификаторов, понижая вероятность жёсткого разбора из-за несущественных различий в тексте разных запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 15:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
lockyзачем? Ведь все данные и так уже локально скэшированы на клиента... Причем у каждого клиента - своя, уникальная копия общих данных, не имеющих ничего общего с данными других клиентов! Долой уравниловку! С кэшем или без оного в общем случае каждая транзакция видит своё состояние БД отличное от других транзакций, ибо изоляцию транзакций никто не отменял. Только в БД открытой на чтение (или блокированной) все транзакции видят один и тот же образ данных. В большинстве случаев обработка данных выполняется в буфере процесса, а затем результат сохраняется в БД. Естественно за время работы процесса данные в буфере могут устареть. В одних случаях это не критично, в других - критично, приходится использовать блокировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 15:52 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabИдея не нова, и более того, уже реализована. В частности нонфигурация, где БД назмещена в NAS, а СУБД на отдельном сервере. NAS обеспечивает доступ к данным на уровне файлов, СУБД, на уровне реляционных, объектных и т.п. отношений.Это особенности реализации дисковой подсистемы конкретного сервера БД, не более того. К "толщине" клиента или "нужности" сервера приложений с бизнес логикой на нём это не имеет никакого отношения. ВМоисеевВ свое время приводил ситуацию - выборка заказанная клиентом представляет собой таблицу из двух столбцов - x (значение переменной) и у (значение функции) за некоторый период. Выборку можно было передавать клиенту, но сеть плохая. Решено было осуществить сплайн интерполяцию (кубическую) и передавать клиенту только коэффициенты сплайна. Не думаю, что эту задачу надо (и можно ли) делать в среде SQL-сервера. Выборка вполне может представлять собой данные для линейного программирования. Опять таки, реализовывать подобные задачи в ХР?Даже если это и неудобно реализовывать на SQL (не факт, надо проверить), то может расширенную хранимую процедуру на C++/Java/C# к СУБД сбоку прикрутить проще? ВМоисеевЧто Oracle умеет выполнять операции Fox-а типа Seek или Locate?T-SQL умеет гораздо больше, про PL/SQL даже заикаться боюсь, я его не знаю, но где-то слышал, что он умеет вообще всё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 16:35 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
хе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 17:02 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
kilaviхе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД. Что, и причины даже приводят??? :)) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 17:35 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ВМоисеевРешено было осуществить сплайн интерполяцию (кубическую) и передавать клиенту только коэффициенты сплайна. Не думаю, что эту задачу надо (и можно ли) делать в среде SQL-сервера. Это вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 17:44 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab wrote: > В большинстве случаев обработка данных выполняется в буфере процесса, а > затем результат сохраняется в БД. Естественно за время работы процесса > данные в буфере могут устареть. В одних случаях это не критично, в > других - критично, приходится использовать блокировки. А можно - поподробнее о синхронизации локальных кешей клиентов с "общими данными сервера", а также о наложении клиентами "блокировок" куда-либо? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 17:54 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra kilaviхе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД. Что, и причины даже приводят??? :)) -- Tygra's -- Мои фотогалереи тут и тут Да вроде ничего особенного . Обычный бред на почве плохих знаний СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 18:27 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей КЭто вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать. предлагаю учредить сообщество разработчиков 3D игр на SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:04 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafm Алексей КЭто вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать. предлагаю учредить сообщество разработчиков 3D игр на SQL. И чтобы без курсоров! Ибо с курсорами- неспортивно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:07 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К ничего особенного. Обычный бред на почве плохих знаний СУБД. обычный бред на почве плохих знаний многозвенных систем. Легче стало? Пора связываться с Соловьевым и организовывать "К барьеру" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:10 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafm Алексей КЭто вы считаете труднореализуемым в SQL? Вроде можно всё без курсоров в одном select сделать. предлагаю учредить сообщество разработчиков 3D игр на SQL.Нивапрос, как только DirectX под MSSQL выйдет, так сразу. :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:13 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Не надо из меня делать "врага государства". Я не против сервера приложений в принципе как такового. Я за то, что бы не делать его там, где его можно не делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:23 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab[quot Bogdanov Andrey]Не знаю как в MSSQL, но в Oracle возвращение данных с помощью ХП - это два запроса вместо одного. ... Ну так вот выполнение первого из этих запросов требует ровно тех-же действий, что и выполнение обычного select (правда чем у Alex_Toms различаются п.1 и п.2 я не понял). Ну а второй запрос (тот что внутри ХП), естественно, уже скомпилирован. А кстати, повтороное выполнение одного и того же запроса (что вызова ХП, что select) уже не приводит к повторному анализу и оптимизации - производится тупое сравнение строк с имеющимися в кэше. ХМ. Я не знаю, что вы понимаете под компиляцией SQL запроса, но во время компиляции ХП PL/SQL, происходит только проверка синтаксиса и семантики статического запроса[quot] А почему вы этот вопрос мне задаете? Читайте внимательнее. О компиляции запросов упоминал Alex_Toms пытаясь доказать экономию ресурсов сервера при работе через ХП. Вот ему вопрос и адресуйте. Я же как раз, напротив, возражал ему, утверждая, что при работе черех ХП работы для сервера только больше. И, возражая, старался придерживаться используемых оппонентом терминов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:29 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей КНе надо из меня делать "врага государства". Я не против сервера приложений в принципе как такового. Я за то, что бы не делать его там, где его можно не делать. сорри, даже не думал об этом. У меня другой подход, перефразируя Вас: Я за то, чтобы не делать на нем то, что можно сделать эффективней на уровне СУБД . Но я даже не представляю как без него можно обходится в том зоопарке систем, приложений, протоколов, форматов и т.п. которые, по крайней мере у нас на проектах. Но запихивать логику в хранимые процедуры СУБД не брезгуем, даже уважаем. Одно другому не мешает. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:30 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
2 iscrafm Тут главное чтобы без фанатизма :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:41 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К2 iscrafm Тут главное чтобы без фанатизма :-)) почему-то любая подобная тема превращается в противостояние. Как будто кого-то заставляют делать два или три звена. такая уж традиция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:43 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Ладно, утро вечера мудренее, у нас уже ночь, спать пойду... :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К2 iscrafm Тут главное чтобы без фанатизма :-)) По теории распределённые приложения создаются для повышения производительности системы, но ИМХО, чаще принимая решение разместить вычисления в СУБД, AS или ещё где то разработчики руководствуются совсем другими соображениями. Обычно это доводы: так быстрее и проще сделать. В частности плохой метод, который бомбит СУБД SQL запросам будет лучше работать в СУБД, чем удалённо, но ведь от этого он не станет хорошим методом. Что то мне подсказывает, что рано или поздно в каждой развивающейся системе должен появиться сервер приложений, хотя бы совсем специализированный. Может вендор платформы заставит это сделать, может потребуются средства, которые СУБД не поддерживаются, может ориентированные на данные проектировщики вымрут и проще будет найти объектно ориентированного проектировщика, и т.д. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2007, 20:54 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
А возможно дело и в другом. Любую систему делают конкретные люди , с вполне конкретными знаниями. Удобство трёхзвёнки, простота двухзвёнки и изящность FoxPro субъективны :) . Человека, успешно применившего одну из архитектур, не переубедить. А если архитектура оказалась неудачной - проще сослаться на реализацию, ведь с ней в этом случае проблем тоже предостаточно. Отсюда и holy wars. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 00:23 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
а если человек применял разные архитектурные решения для разных систем, в зависимости от их назначения? Что-то не вяжется. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 00:44 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafmа если человек применял разные архитектурные решения для разных систем, в зависимости от их назначения? Что-то не вяжется. :) Скольких людей, имеющих опыт более чем однократного осознанного перехода между архитектурами "логика в основном на сервере БД" и "логика в основном на сервере бизнес-логики", Вы знаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 00:58 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей Кmcureenab, ты бы хоть книжку какую прочитал бы, перед тем как тут выступать. Рекомендую начать с этого . В статье речь идёт о клиенте-front end приложении, которое решает задачи презентации данных пользователю системы. Естественно по сравнению с таким клиентом СУБД выполняет самую большую часть работы - находит, фильтрует, агрегирует даные. Дальнейшим развитием этой ахитектуры является многозвенная архитектура. В задаче расчёта ЗП, и пакетных вычислений вообще (своего рода back office) взаимодействие с пользователем не требуется. Так что ссылка нерелевантна теме. Пакетная обработка данных как правило использует значительную чать сведений, хранящихся в БД. Ну и отлично! Будем считать в СУБД. Но, запросы к БД выполняются не так быстро как хотелось бы, да и реляционное представление не удобно. Ok. Решаем эту проблему. Кэшируем данные, заодно преобразуем их в структуры, более подходящие для расчётов. Ключи разрешим в указатели, организуем объекты в коллекции с быстрым и удобным доступом, и т.д.. И вот мы уже видим, что после начальной загрузки кэша БД нам уже не нужна. А тут ещё пользователи со своими запросами и ХП то и дело отнимают ресурсы CPU. Так ну её в баню, эту СУБД. Перемещаем процесс обработки на отдельный узел, благо, скорость ЛВС уже Gbit'ами измеряется. Ну в общем и всё. Мы получили распределённое масштабируемое решение. Обращаю внимание, что это не многозвенное решение. Это больше похоже на back office. Т.е. внешний сервис лежит не между клиентом и СУБД, а находится за СУБД, с точки зрения пользователя. Такие решения я видел в системах, где СУБД не подедерживала не только ХП, но даже SQL. Такие решения используются в системах реального времени. И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 04:30 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabНо, запросы к БД выполняются не так быстро как хотелось бы Одна из причин, почему ненужно выносить вычисления из БД. Не нужно слать в БД милионы маленьких запросов. Нужно или посылать их одной пачкой, или скрыть цикл внутри хранимой процедуры. А ещё лучше, вместо цикла выполнить всё в рамках одного или нескольких select-ов. Т. е. цикл обработки перенесётся в select. Тогда всё просто "летать" будет. Ну тут опять же без фанатизма, надо разумно всё оценить, и выбрать наиболее подходящее решение. mcureenabда и реляционное представление не удобноПочему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 06:33 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
2 mcureenab И почему вы постоянно игнорируете мои мысли про OLAP? 2 или 3 раза уже писал про него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 06:37 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra kilaviхе, на форуме sql-щиков трудно было ожидать другого решения, а на RSDN большинство за вынос бизнес логики с СУБД. Что, и причины даже приводят??? :)) -- Tygra's -- Мои фотогалереи тут и тут причины? 1. легкость масштабирования 2. на ОО языке, проще создавать большие системы 3. управление исходниками, для managed языков есть прекрасные средства рефакторинга и удобные IDE среды(у нас система из 3000 хранимок - это просто Ж) 4. безболезненная смена СУБД 5. увеличение скорости разработки приложения если есть желание можно и еще нарыть, можно Фаулера почитать. Да и хорошо спроектированную программу написанную на языке высокого уровня, с четкой структурой классов на порядок легче понять, кроме этого хорошо спроектированную программу на порядок легче оптимизировать, таким образом, если вдруг и где возникнуть затыки, никто не мешает перенести этот момент в БД. Лично для меня священной войны здесь нет, все зависит от конкретного проекта, но уклон в сторону сервера приложений со временем все равно неизбежен имхо. Да и вообще лично у меня нет желания заниматься процедурным программированием, когда есть ООП. Сейчас начинаем новый большой проект, чистая база, с какой радостью натравлю туда ОРМ, и буду работать с объектами. зы здесь голосование по поводу места хранения бизнес логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 08:31 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Мне всегда был любопытен один из аспектов многозвенной(>2) архитектуры, когда необходимость сервера приложений оправдывают необходимостью повышения производительности и/или масштабирования. В связи с чем возникает несколько вопросов: как много адептов таких решений, ну хотя бы, слышали о теории массового обслуживания ? И способны действительно, на языке формул, а не на словах, доказать, что их решение оправдано ? В том числе способны просчитать и доказать выигрыш, в частности, по соотношению цена/производительность. И что они вполне способны написать такой сервер (приложений), который не будет уступать решениям от именитых производителей, которые могут себе позволить не только кодописателей, но и серьезных теоретиков ? Особенно впечатляет настойчивость, с которой доморощенный сервер приложений норовят взгромоздить поверх других, промышленных, серверов, в частности СУБД. Что характерно, писать, как правило, они порываются чуть ли не в одиночку, что само по себе является, IMHO, пугающей тенденцией. Меня лично настораживает эта иллюзия легкости и всемогущества, это ведь не убогий чат из набора компонент за час на коленке состряпать... P.S. Вот такие вот размышления вслух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 08:52 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
kilaviзы здесь голосование по поводу места хранения бизнес логикиВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 08:56 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven iscrafmа если человек применял разные архитектурные решения для разных систем, в зависимости от их назначения? Что-то не вяжется. :) Скольких людей, имеющих опыт более чем однократного осознанного перехода между архитектурами "логика в основном на сервере БД" и "логика в основном на сервере бизнес-логики", Вы знаете? да есть немного знакомых :) Ладно, допустим я. Делал системы практически на всех платформах (кроме Mac'a жаль), СУБД и в разных архитектурах. Искру проектировал как многозвенку очень даже осознано, как Вы говорите. Скорее сиутация как раз в обратном. Те кто не имел опыта законченного и отработанного решения многозвенной системы ведут с подобной архитектурой "войну". Сравнить не с чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:24 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ChA P.S. Вот такие вот размышления вслух. хорошее настроение на весь день обеспечено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ChA kilaviзы здесь голосование по поводу места хранения бизнес логикиВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ? если я где-то упомянул, что развитие, в частности - технологий, определяется голосованием, то прошу прощения, но перечитав свои два с половиной поста, я этого не увидел. Я, всего лишь, привел мнение сообщества РСДН, и приписывать мне чужие мысли не надо :). Еще раз - для меня здесь нет священной войны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:33 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
kilaviЕще раз - для меня здесь нет священной войны.Замечательно. Искренне рад за Вас, но тогда совершенно не понимаю смысла ссылки на это голосование. Поясните ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafmобычный бред на почве плохих знаний многозвенных систем Верно. Напомню, с моей точки зрения большинство коллег пишет вообще "однозвенные" системы - сколько бы они ни считали сами, но закладывают одно "основное" звено и одно-два-три сугубо технических, уровня "драйвера клавиатуры". А дальше - кто-то хорошо знает, допустим, J2EE и пользуется БД как записной книжкой, кто-то хорошо знает БД и не понимает, зачем портить ее дурной мордой. mcureenabЧто то мне подсказывает, что рано или поздно в каждой развивающейся системе должен появиться сервер приложений, хотя бы совсем специализированный. Что-то мне подсказывает наоборот. Список преимуществ многозвенок - в интерпретации собственно апологетов - за последний десяток лет практически неизменен, и на 99% состоит из возможности преодоления конкретных недостатков конкретных СУБД. Пикантная подробность в том, что СУБД в это же самое время более-менее успешно преодолевают те же недостатки, поэтому уже несколько лет, как во всех религиозных войнах звучит "то же самое спокойно делается без многозвенки". Соответственно, многозвенка все больше отползает в область решений "над MySQL". В конце концов, подозреваю, платформы "СУБД" и "серверов приложений" просто сольются. kilavi3. управление исходниками, для managed языков есть прекрасные средства рефакторинга и удобные IDE среды(у нас система из 3000 хранимок - это просто Ж) Используйте пакеты и забудьте про 3000 хранимок. Да и все остальные аргументы - из серии "не думал, но читал". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:42 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
всегда полезно рассмотреть ситуацию с разных сторон, понять причины, почему люди предпочитают тот или иной вариант, вынести для себя что-то ценное, а не просто идти по проторенной дорожке не обращая внимания ни на что. В данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:46 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
softwarerкто-то хорошо знает БД и не понимает, зачем портить ее дурной мордой. ничего страшного. понимание приходит от задач, с которыми приходится сталкиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 09:50 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
мод atv_13Потому тащить расчеты на клиента смысла не вижу. Смысл очень простой - разгрузить процессоры сервера БД.(алтернатива - добавлять процессоры, но тогда перестанет справляться ОС)В конкретно упоминаемой задаче "Расчет з/п" сам расчет есть куча массовых запросов выполняемых, в основном, в строго определенном порядке, логика же расчетов занимает на порядки меньшее время. Конечно все это можно распараллелить разбив десятки тысяч людей на менее крупные объемы (+ некоторую часть расчетов), но при той же задаче расчета з/п результат расчетов все равно будет сохраняться можно сказать практически такими же запросами, какими бы они сохранялись будучи рассчитанными на серве. Потому выигрыш в разгрузке процов ИМХО копеечный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 10:09 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Я чтобы поддержать разговор чиста :) kilaviпричины? 1. легкость масштабирования 2. на ОО языке, проще создавать большие системы 3. управление исходниками, для managed языков есть прекрасные средства рефакторинга и удобные IDE среды(у нас система из 3000 хранимок - это просто Ж) 4. безболезненная смена СУБД 5. увеличение скорости разработки приложения 1. Масштабирование количеством серверов достигается при любом способе - хоть многозвенка, хоть субд, тупое увеличение количества железа 2. Системы какого типа? Клиентские приложения - да. Работа с данными - это с чего на оо лучше работать с таблицами? ;) 3. Для клиентских приложений - да. Какую супер-систему нужно, чтобы писать ХП - не пойму. Причем тут кол-во ХП - вы сразу все правите в одном сеансе? Или сразу все на экран хотите вывести? ;) 4. Миф - никто ни разу не делал этого, более того, система не использует все тонкости СУБД, а потому заранее тормознее и неуклюжее, причем намного. 5. Каким образом? Добавляя дополнительное звено, скорость только уменьшается В общем, эти вопросы давно разобраны в паре тдлинных топиков и серьезных доказательств по ним многозвенщики не смогли привести. kilaviДа и хорошо спроектированную программу написанную на языке высокого уровня, с четкой структурой классов на порядок легче понять, кроме этого хорошо спроектированную программу на порядок легче оптимизировать, таким образом, если вдруг и где возникнуть затыки, никто не мешает перенести этот момент в БД. Так нужно хорошо проектировать систему независимо от того, как ее пишут. :) Тогда и понять можно kilaviЛично для меня священной войны здесь нет, все зависит от конкретного проекта, но уклон в сторону сервера приложений со временем все равно неизбежен имхо. Да и вообще лично у меня нет желания заниматься процедурным программированием, когда есть ООП. Сейчас начинаем новый большой проект, чистая база, с какой радостью натравлю туда ОРМ, и буду работать с объектами. Ну и в чем смысл объектов? Может просто - как и показали те топики - знаний в СУБД не хватает? Тогда конечно - разбираться в селектах/апдейтах/plsql/tsql ни к чему современному программисту, лучше перенести все данные на клиента и там с помощью паскаля или с++ делать свою СУБД Но зато какие понты - не какая-то там к-с, а "распределенная многозвенная система с возможностью масштабирования и т.д. и т.п.", заказчеки аж писчат, когда узнают название, правда потом воют, но это уже другая история. :) =========== Я собственно тоже не против многозвенок, распределенных систем и т.д. Я против пихания их везде, где ни попадя, причем обычно с откровенной безграмотностью заявляя о недостатках к-с и субд и о "крутости" многозвенки. ЗЫ Интересно, а что же такого нельзя сделать на PL/SQL? Я думал, что уж теперь то на нем можно делать все, что угодно (учитывая то, что было раньше), особенно по сравнению с TSQL. В Оракл внутрь СУБД воткнули по-моему все, что только бывает. Или это страшная тайна? :) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 11:39 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Спасибо за пояснение. У Вас лично есть свое объяснение этому факту ? И, если "да", то не хотите его озвучить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 12:09 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Коллеги, чудо-трава уже отпустила. Позавчера было смешно. Сегодня нет, увы :( Об одном только прошу, как ДБА: проектирование структуры данных доверяйте людям, которые умеют это делать. А дальше хоть 33-х звенку стройте с 77-уровневым кешем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 12:13 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraЯ чтобы поддержать разговор чиста :) 5. Каким образом? Добавляя дополнительное звено, скорость только уменьшается Давайте экперимент. Мне нужно на клиенте показать новую форму, которая работает с другой СУБД. Для этого мне достаточно на СП подключить базу, допустим через ADO и создать форму в которой указать, что она работает с этой базой. Остальное все разрулит сервер приложений. Нажму кнопку ОК и клиент увидит рабочую форму. Занимает минуту времени. А у Вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 12:24 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
p.s. забыл уточнить. в показанном списке не все SQL серверы. XML, CSV, Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 12:29 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Навеяло... Вот по поводу масштабирования - т.е., по сути, распределенных вычислений. Очевидно, что разрабатывать такие системы нисколько не проще, а наоборот - гораздо сложнее чем в случае нераспределенных вычислений (достаточно почитать любую литературу по распределенным вычислениям). Вот на том же примере с зарплатой. Когда бы это было выгодно? Когда у нас есть сервер с высокопроизводительным дисковым массивом, который может поднять столько данных, что процессоры сервера не успеют их обработать. Далее, у нас должна быть высокоскоростная сеть чтобы эти данные передавать на внешние узлы для обработки. У нас должно быть достаточно внешних узлов, которые в сумме по производительности процессоров должны в несколько раз превосходить процессоры на сервере (ну чтобы имело смысл заморачиваться + накладные расходы). Далее, сама задача должна хорошо распараллеливаться. Расчет зарплаты - ну вроде поделил, например, по табельным номерам людей между узлами и считай себе столько отработал, столько переработал, тут прогулял, больничный и т.д. И даже, допустим, все написали, и все быстро работает. Но, тут нехорошее руководство издает распоряжение - зарплата руководителя подразделения не может быть выше, чем 3-х кратная средняя зарплата сотрудников подразделения. Опс... теперь расчет не очень хорошо параллелится, и переписывай, чуть ли не все заново и все уже гораздо сложнее будет. К чему это все я. К тому, что распределенные вычисления это хорошо, но к сожалению далеко не везде их можно применить, и есть много факторов, которые этому препятствуют. А вообще - недавно вышла 1С 8.1 с кластером из серверов приложений - посмотрим что и как там у них будет на больших внедрениях работать с этим кластером... но тут пример конечно не чистый... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 13:01 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
2 iscrafm Ну у меня сейчас нет таких потребностей для работы с разными СУБД во внутренней системе. Потому навскидку могу предложить либо делать коннект этой формы к другой СУБД прямо из приложения, либо через линкед сервер уже используемой СУБД. Но если подумать, можно и что-то другое наверное, но пока нет надобности. Другая система, другой вариант, уже обкатанный - ходить через вебсервисы. Клиент идет на вебсервис и дергает нужный метод, а уж тот дергает то, что ему там прописано, хоть СУБД, хоть другой сервис. Вроде как также быстро делается. Только не надо говорить, что это уже многзвенка :) Это коммутирующий слой без всяких вычислений и бизнес-логики, считайте его заменителем ADO :) ---------- Но получается, что вычислений тут нигде нет, бизнес-логики в доп звене нет, это к теме топика мало относится :) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 13:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygraНу у меня сейчас нет таких потребностей для работы с разными СУБД во внутренней системе. я об этом и говорил ранее. Просто не сталкиваетесь с задачами, где без сервера приложений напряженно. Поэтому и предлагаете на вскидку: tygra Потому навскидку могу предложить либо делать коннект этой формы к другой СУБД прямо из приложения на каждом клиенте? у меня их сотни. Наверное устал бы следить за всеми. tygra, либо через линкед сервер уже используемой СУБД. Но если подумать, можно и что-то другое наверное, но пока нет надобности. посмотрите на формат файлов, например МПС. Какой линкед сервер с этим будет работать? Правильно. ни-ка-кой. tygra Другая система, другой вариант, уже обкатанный - ходить через вебсервисы. Клиент идет на вебсервис и дергает нужный метод, а уж тот дергает то, что ему там прописано, хоть СУБД, хоть другой сервис. Вроде как также быстро делается. Только не надо говорить, что это уже многзвенка :) неправильные у Вас представления о многозвенке. Web-сервер, на котором живут сервисы - обычный сервер приложений. Зовут его просто по другому. tygra Это коммутирующий слой без всяких вычислений и бизнес-логики, считайте его заменителем ADO :) угу. А что тогда PHP, Perl,Java и прочие скрипты там делают. Заменяют ADO по Вашему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 13:46 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafm<...> Искру проектировал как многозвенку очень даже осознано, как Вы говорите. Скорее сиутация как раз в обратном. Те кто не имел опыта законченного и отработанного решения многозвенной системы ведут с подобной архитектурой "войну". Сравнить не с чем. А что технически мешает реализовать функциональность Искры по архитектуре "клиент-сервер БД с логикой в ХП", или, на крайний случай, "клиент-баллансировщик-сервер БД с логикой в ХП"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 13:47 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
"мешает" сервисная архитектура. Для решения любой задачи выбирается наиболее подходящий вариант ее реализации. Повторюсь только.. это никак не исключает реализацию бизнес-логики в СУБД. см. рис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:25 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
iscrafmнеправильные у Вас представления о многозвенке. Web-сервер, на котором живут сервисы - обычный сервер приложений. Зовут его просто по другому. Это смотря с какой стороны посмотреть. Тут вот люди считают, что апп-сервер - это обязательно в нем бизнес-логика и обработка данных, что никаких других серверов приложений не бывает. У вас вроде не такой, у меня тем более :) авторугу. А что тогда PHP, Perl,Java и прочие скрипты там делают. Заменяют ADO по Вашему. Скрипты там являются клиентским приложением - они заменяют дельфи, с++ и т.д. А АДО они заменяют мне - я же не хожу на html-страницы для того, чтобы дернуть сервис :) авторПовторюсь только.. это никак не исключает реализацию бизнес-логики в СУБД. В этом то и вопрос. -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:48 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Алексей К2 mcureenab И почему вы постоянно игнорируете мои мысли про OLAP? 2 или 3 раза уже писал про него. В общем то я не обязан обсуждать каждую мысль... Но раз уж Вас это беспокоит... При чём тут OLAP? ЗП, это не OLAP, а чистой воды OLTP. Только транзакции не пользователи выполняют, а фоновый процесс, этакий робот-бухгалтер специалист по оплате труда. В биллинговых системах основная работа ложиться на процесс тарификатор-телефонных услуг. В банковских, на сервер проводок (по крайней мере во времена моей молодости его так называли). И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:52 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra kilavi4. безболезненная смена СУБД4. Миф - никто ни разу не делал этого, Ну почему ? Делали когда-то, довольно неплохо получилось. tygraболее того, система не использует все тонкости СУБД, а потому заранее тормознее и неуклюжее, причем намного. Это в целом верно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 14:59 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Локшин МаркНавеяло... К чему это все я. К тому, что распределенные вычисления это хорошо, но к сожалению далеко не везде их можно применить, и есть много факторов, которые этому препятствуют. Распределённые и параллельные вычисления - понятия разные. Естественно, когда вычисление хорошо распараллеливается (т.е. разбивается на процессы, которые не пересекаются на общих ресурсах), то его просто сделать распределённым. Если процессы имеют точки пересечения, приходится искать более сложные решения, типа разделяемой памяти, распределённых блокировок, миграции объектов и т.д. и т.п. К сожалению, наиболее популярные языки программирования в основном ориентированы на традиционные локальные вычисления и не содержат в своём лексиконе средств распараллеливания и распределения работы (разве что на уровне команд CPU), так что эта задача ложится на плечи программистов. Но есть и другой пример - SQL запросы, которые в ряде случаев СУБД Оракл могут быть распараллелены и/или распределены по нескольким СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 15:15 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
авторРаспределённые и параллельные вычисления - понятия разные. Конечно, но в контексте беседы - они по большей части совпадают, особенно когда говорится о масштабируемости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 15:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
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 описанных в определении. Вы правильно заметили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 15:49 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ChA kilaviзы здесь голосование по поводу места хранения бизнес логикиВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ? Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:04 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
tygra<...> авторПовторюсь только.. это никак не исключает реализацию бизнес-логики в СУБД. В этом то и вопрос.<...> Отсюда вывод: реализовать бизнес-логику можно как в ХП, так и на специализированном сервере приложений. А при принятии решений обязательно следует руководствоваться знаниями, навыками и личными предпочтениями разработчиков, опционально - соображениями маркетинга, самообразования и самореализации, а также повышения собственной з/п, должности, важности и труднозаменимости :) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:10 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
... конечно если эта логика - не действительно ресурсоёмкие задачи по поиску всевозможных оптимумов, распознаванию и преобразованию форматов и т.д., для решения которых количество ресурсов, необходимое для извлечения, передачи и сохранения данных, мало по сравнению с количеством, необходимым для расчётов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:32 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Я подозреваю, что сообщество ЖЖ или Анекдот.РУ будет иметь вообще третье мнение: "Все на.... лучше выпей ПИВА!" Интересно, что из этого следует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:38 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab ChAВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.Вы не слишком далеко заходите в своей интерпретации голосования ? И какое отношение к ней имеет голосование посетителей rsdn ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ChA mcureenab ChAВы, правда, считаете, что развитие, в частности - технологий, определяется голосованием ?Естественно. Большинство современных IT стандартов принято голосованием поставщиков решений базирующихся на этих стандартах. Лишь немногие компании могут себе позволить создавать собственные стандарты de'facto. Большинство компаний поменьше входят в группы по стандартизации и общими усилиями устанавливают мировой порядок. Технология, которую никто не принимает и не поддерживает не развивается и умирает.Вы не слишком далеко заходите в своей интерпретации голосования ? И какое отношение к ней имеет голосование посетителей rsdn ? Не понял вопросов. Наверное трава закончилась. (Прости, tigra, не поделился.) Я никакое голосование не интерпретировал. Речь только о том, что промышленные стандарты, в том числе в области IT, часто принимаются голосованием. Форумы RSDN и SQL.RU никакой юридической силы не имеют, так что голосование их участников скорее отражает общественное мнение, а учитывать его в принятии решения или нет, каждый решает сам за себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:59 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabНе понял вопросов.Ну и ладно, не стоит себя напрягать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:23 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
softwarerс моей точки зрения большинство коллег пишет вообще "однозвенные" системы - сколько бы они ни считали сами, но закладывают одно "основное" звено и одно-два-три сугубо технических, уровня "драйвера клавиатуры". ИМХО скорее и "драйвера" и т.н. "бизнес-логика" в большей или меньшей степени размазываются между всеми этими слоями-звеньями. Больше их - больше степень размазывания. Хотя какое-то звено считается основным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:39 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ОдинИМХО скорее и "драйвера" и т.н. "бизнес-логика" в большей или меньшей степени размазываются между всеми этими слоями-звеньями. В хорошо спроектированной системе - да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 19:13 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
Bely kilaviВ данном случае, это голосование всего лишь показывает, что сообщество РСДН, в большинстве своем, имеет другую точку зрения, чем сообщество SQL, вот и все.Я подозреваю, что сообщество ЖЖ или Анекдот.РУ будет иметь вообще третье мнение: "Все на.... лучше выпей ПИВА!" Интересно, что из этого следует? из этого следует, что некоторым, очень трудно сделать самостоятельно выводы, не более того. По существу есть что добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 08:36 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab Alex_Toms При получении запросов select, insert, update, delete сервак: 1: сначала призводит синтаксический разбор текста 2: затем компилирует 3: производит оптимизацию плана запроса 4: и только после этого выполняет сам запрос. При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный. В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса. Это не так. Ни для Oracle, ни для MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 09:20 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
ИМХО, если вычислительная сложность алгоритма, где N стоимость выборки данных - <= О(N) - его нужно выполнять в БД - между О(N) и O(N**2) - думать надо - >= O(N**2) - выносить из базы Задача зарплаты подпадает под первую категорию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 10:28 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
drev mcureenab Alex_Toms При получении запросов select, insert, update, delete сервак: 1: сначала призводит синтаксический разбор текста 2: затем компилирует 3: производит оптимизацию плана запроса 4: и только после этого выполняет сам запрос. При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный. В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса. Это не так. Ни для Oracle, ни для MS SQL. Интересно, как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 14:40 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab drev mcureenab Alex_Toms При получении запросов select, insert, update, delete сервак: 1: сначала призводит синтаксический разбор текста 2: затем компилирует 3: производит оптимизацию плана запроса 4: и только после этого выполняет сам запрос. При использовании ХП, первые 3 пункта выполняются после изменении текста ХП, а при вызове сразу пункт 4, при этом при экономятся ресурсы сервера, и выигрыш от этого бывает очень значительный. В Оракле и при использовании ХП всё происходит точно так же с п.1 по п.4. Может в MSSQL это не так? Но тогда после изменения данных останется старый план запроса. Это не так. Ни для Oracle, ни для MS SQL. Интересно, как? Давайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 14:56 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 15:16 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenabИнтересно, как? В Оракле примерно так : Проверили синтаксис (вруг где буковку пропустили) Проверили доступность объектов, перевели все в один регистр и т.п. (semantic check) Посчитали ХЭШ Проискали по хэшу в библиотечном кеше (у запрос есть ещё всякие фишки вроде текущей сортировки и т.п. их тоже надо не забыть) Если нашлось и объекты на которые ссылается запрос те же (т.е. синонимами не обманули то берём план из кэша и вперёд (soft parse) Иначе - hard parse, строим дерево разбора и план выполнения и кладём всё это в library cache перед тем как выполнить (авось кому сгодится) Кто и когда делает существующие разборы невалидными (то ли analayze table\index то ли ещё кто) я не знаю но делает точно, т.к. при изменении статистики план меняется. Где то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 15:57 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
drevДавайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда? У Оракла на этот счёт другое мнение. Собственно синтаксический разбор SQL запроса занимает очень малую часть времени. Значительно больше времени занимает построение оптимального плана - суть оптимизирующая компиляция запроса с учётом текущего состояния БД. Так что выдумывать некий p-code для хранения разобранного запроса без плана, только чтобы не выполнять синтаксический анализ нет смысла. Глобальный кэш SQL запросов и локальный кэш курсоров вообще позволяет в большинстве случаев пропустить этап компиляции (hard parse) и сразу перейти к выполнению существующего плана (soft parse, или no parse). PS. Вы не задумывались, почему до сих пор существуют и успешно развиваются скриптовые языки? Например для серверных приложений, которые многократно выполняют одни и теже процедуры однажды скомпилированный на этапе выполнения скрипт будет работать, работать и работать. А в случае изменение внешних скриптов или БД не потребует ручной перекомпиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 16:53 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
mcureenab drevДавайте отложим вопрос "как", и разберём Ваше утверждение. Вроде бы не совсем осмысленно при создании любого программного модуля выполнять пункт 2, чтобы потом, при его запуске выполнять пункт 1, правда? У Оракла на этот счёт другое мнение. Собственно синтаксический разбор SQL запроса занимает очень малую часть времени. Значительно больше времени занимает построение оптимального плана - суть оптимизирующая компиляция запроса с учётом текущего состояния БД. Так что выдумывать некий p-code для хранения разобранного запроса без плана, только чтобы не выполнять синтаксический анализ нет смысла. Глобальный кэш SQL запросов и локальный кэш курсоров вообще позволяет в большинстве случаев пропустить этап компиляции (hard parse) и сразу перейти к выполнению существующего плана (soft parse, или no parse). Всё, что вы говорите, верно для "простых запросов". Для stored procedures это не совсем так. Предствавим себе , которая содержит пару тысяч строк кода, внутри которой парочка селектов и инсёртов и куча "процедурной" логики. В данной ситуации, синтаксический анализ занимает недопустимо большое время по сравнению с работой оптимизатора и выполнением вместе взятыми. Попробуйте создать подобную процедуру, и посмотрите сколько времени это займёт. А потом запустите её. И сравните время. Для одного из решений этой проблемы введен statement level RECOMPILE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 22:45 |
|
||
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#18+
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. 1. В данной ситуации я отвечал не на пост Алекса, а на ответ на этот пост mcureenab. 2. В приведеном Вами примере происходит, ИМХО, не перекомпиляция, а отложенная резолюция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2007, 22:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544417]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
172ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 591ms |

| 0 / 0 |
