|
|
|
Тонкий или толстый клиент
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34636254&tid=1544417]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 478ms |

| 0 / 0 |
