powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Вопросы по реализации 3-х звенного приложения...
25 сообщений из 141, страница 4 из 6
Вопросы по реализации 3-х звенного приложения...
    #33960096
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дааааа.... не ожидал такого поворота событий :(( !
Dmitry V. Liseev , проверьте почту!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960672
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmЯ не требую, а предлагаю за Вас выполнить работу.Я не просил выполнять за меня работу. Я просил "...Если что-то утверждаешь, то будь готов показать..."
iscrafmпо правде сказать ситуации блокировки конечно же есть.Ага... Когда к стенке приперли, так сразу правда пошла. Вы не стесняйтесь правду говорить, тут все свои ;)
iscrafmНо они настолько мизерны, что о них не говорятА самое интересное, что они будут именно в тех случаях, о которых я говорил. Причем в ЛЮБОЙ СУБД. Берем PostgreSQL 8.1.4, который весь из себя MVCC.

Берем первого клиента:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
postgres=# CREATE TABLE t1(id INTEGER PRIMARY KEY, f1 VARCHAR( 10 ) UNIQUE);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1"
NOTICE:  CREATE TABLE / UNIQUE will create implicit index "t1_f1_key" for table "t1"
CREATE TABLE
postgres=# INSERT INTO t1 VALUES( 1 ,'aaa');
INSERT  0   1 
postgres=# BEGIN;
BEGIN
postgres=# DELETE FROM t1 WHERE id= 1 ;
DELETE  1 
postgres=#
Берем второго клиента:
Код: plaintext
1.
2.
postgres=# INSERT INTO t1 VALUES( 2 ,'aaa');
...и ведь залочился, гад. И никакой MVCC ему не помог.
Опять берем первого:
Код: plaintext
1.
2.
3.
postgres=# ROLLBACK;
ROLLBACK
postgres=#
И тут проснулся второй:
Код: plaintext
1.
2.
ERROR:  duplicate key violates unique constraint "t1_f1_key"
postgres=#
Сюрпрайз ? :))
iscrafmпросите дать какой-либо пример. Да еще и с апломбом утверждаете что это миф :).Утверждение о существовании "СУБД без блокировок" высказали Вы. Вам его и доказывать.
iscrafmПо этому поводу я уже сказал. У меня нет времени и желания показывать как работают системы с интенсивным обновлением данных.Вас никто не обязывает писать в форум утверждения, которые Вы не желаете доказывать. Слив засчитан.
iscrafmИ не употребляйте "нет блокировок - нет транзакций". Для технического специалиста не солидно.Для технического специалиста это очевидно. Пусть изначально на счете в банке записан "0". Первый юзер хочет положить 100 баксов, второй - снять 80.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 1  юзер: Запускает транзакцию.
 1  юзер: Читает  0 , прибавляет  100 , записывает  100 .
Теперь на счете  100  баксов.
 2  юзер: Запускает транзакцию.
 2  юзер: Читает  100 , отнимает  80 , записывает  20 .
Теперь на счете  20  баксов.
 2  юзер: Подтверждает транзакцию.
 1  юзер: Откатывает транзакцию.
Вопрос "для чиста солидных технических специалистов": Что должно оказаться на счете, чтобы обе транзакции удовлетворяли определению "транзакции"? Для всех остальных рассказываю страшную тайну: при наличии в истории фантома "грязного чтения" транзакции (в соответствии с их классическим определением) в общем случае становятся невозможными. Поэтому все нормальные СУБД "грязного чтения" не допускают и начинают с уровня READ COMMITTED. И при наличии нескольких пишущих транзакций СУБД обязаны уметь их блокировать. Если бы постгрес не залочил второго юзера, то не смог бы обеспечить выполнения ни одного констрейна.
iscrafmПрибавляет ответственности. Если что-то утверждаешь, то будь готов показать.Ну, и где? Пока Ваши слова расходятся с делом. Либо показываете "СУБД без блокировок", либо признаетесь, что сами таких не знаете. Пока что я вынужден Вас обучать. Причем бесплатно.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960682
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmУдивительно, что Вы много времени уделили обратному варианту. При подключении к серверам открываете транзакции, а потом неспешно занимаетесь своими делами? :)Люди спрашивают - я консультирую. Потому что самая распространенная ошибка - взять визард и нагенерить автоматом кучу "объектного кода" по принципу "одна таблица - один класс, одна запись - один объект". Слова "объектно-реляционный маппинг" действуют на людей магически. Им кажется, что это и есть трехзвенка с крутой масштабируемостью. А когда осознают, что в итоге трафик между клиентом и сервером приложений возрос на порядок, а масштабируемость на порядок упала, то уже поздняк метаться. Надо все переписывать.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960747
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!!! Dmitry V. LiseevЛадно. Начнем с начала. Вот есть у нас система. Очень
сложные данные с кучей зависимостей и констрейнов.
Очень сложная логика. Логика такая сложная, что большинство
нужных нам операций одним SQL запросом выполнить
не получается. Даже прочитать нужные нам данные
одним запросом не получается. Знаете, я не Станиславский, но вслед за ним скажу "Не верю!". То, что вы сейчас описали не бывает никогда , за исключением одной единственной ситуации - очень криво спроектированная структура данных.Простой пример: оператор вводит в систему накладную на отгрузку товара. Накладная состоит из "шапки" (номер склада, дата, фамилия оператора и т.д.) и нескольких записей в табличной части (название товара, количество коробок и т.д.). Очевидно, что накладную в систему нужно ввести целиком за одну транзакцию. Каким образом Вы предлагаете спроектировать данные, чтобы сделать это все за один SQL запрос?
!!! Dmitry V. LiseevВообще, вопросы
изолирования транзакций и стратегии блокировок описаны
в специальной литературе.А про отложенные проверки целостности слыхали?Впервые слышу. Это как? Тут соседний магазин неделю торговал по ошибочным ценникам раза в полтора дешевле. Потом решили ценники проверить: "А мы понять не могли, откуда такой наплыв покупателей". Такой отложенной проверки целостности не надо, спасибо. В моей системе инженеры потом месяцами будут руками все разгребать и перепроверять. Если системе задан констрейн, то она должна его обеспечивать в реалтайме.
!!!Хотя, конечно, судя по тому, что Вы тут рассказываете, Вы, вероятно, уже нашли серебряную пулю Я еще 10 лет назад так думал. Но потом осознал, что нет предела совершенству
!!! Dmitry V. LiseevТо есть нужен
принцип "один пакет - одна транзакция". Аналогично,
было-бы хорошо, если бы все нужные для отображения данные
передавались бы с сервера на клиент также одним пакетом.Правильно, не пойму только, почему бы так и не поступить?В двухзвенке через ODBC? Каким образом? Пример задачи с вводом накладной за одну транзакцию я приводил. Как делать предлагаете?
!!! Dmitry V. LiseevА с другой стороны наш СП имеет толстый канал связи
с СУБД. Совсем физически независимая сеть, даже
отдельная сетевая карта, чтобы никто не мешал ему
как можно быстрее провести транзакцию.А если работать с сервером напрямую, через ХП, то никакой независимой сети вообще не нужно. Не говоря уж об отдельной сетевой карте Можно и без отдельной подсети. Только экономии на копейки, а масштабирование ухудшится весьма заметно.
!!! Dmitry V. LiseevУ нас нет dll. Сервер приложений полностью на скриптах. Поставляется
заказчику целиком в хорошо откомментированных исходниках.Интересный подход. А если не отчет, то тоже может исправить в хорошо откомментированных исходниках ? А отвечают за это рукоблудие, насколько я понимаю, другие разработчики (см. ниже)Отвечает за рукоблудие тот, кто исправляет. То есть, системный администратор заказчика.
!!! Dmitry V. LiseevЕсли заказчик не может сам сделать отчет, то просит нас.Скорее, не "если", а "когда". Когда испортит все до такой степени, что исправить будет сложнее, чем написать все заново.Когда что-нибудь испортит, сервер приложений за пять минут можно переустановить с дистрибутивного диска.
!!! Dmitry V. LiseevПроектировалась мной лично с нуля. Я занимался реализацией
всей серверной части. Клиентские части делали другие
разработчики. Приход меня "на готовое" обычно сопровождается
полным перепроектированием системы. Я это обычно сразу
уточняю при приеме на работу ;) На поддержку готового нанимают
сисадминов, а я - проектировщик.Тоже знакомый подход. То, что было раньше, в корзину, потому что у меня свой взгляд на мир.Потому, что ставится такая задача. Еще ни разу мне заказчик не говорил: "Вот у нас есть старая система, которая 15 лет назад написана на клиппере, и она нас полностью устраивает. Нужно только проводить регламентное обслуживание". Обычно вываливается "портянка" со списком проблем, которые так и не получилось решить в старой системе. Да еще и исходников обычно нет. Ну не принято было 15 лет назад отдавать заказчику все исходники.
!!!Я только бумажку с красивыми и умными словами напишу, а что в результате получится - это не мои проблемы, для этого есть другие разработчики .Что получится в результате - как раз мои проблемы, ибо мне это потом годами сопровождать.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960974
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevДля технического специалиста это очевидно. Пусть изначально на счете в банке записан "0". Первый юзер хочет положить 100 баксов, второй - снять 80.

Вы хотя бы суммы в школьных примерах меняйте, для солидности.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33962997
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevПростой пример
Кстати, "ради искусства" я возьмусь реализовать Ваш простой пример одним SQL-оператором. Термин "запрос", который Вы употребляете, представляется мне неудачным - запрос по идее возвращает данные, и называть таковым оператор модификации грешно.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33963355
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Dmitry V. LiseevПростой пример
Кстати, "ради искусства" я возьмусь реализовать Ваш простой пример одним SQL-оператором. Термин "запрос", который Вы употребляете, представляется мне неудачным - запрос по идее возвращает данные, и называть таковым оператор модификации грешно.
+1

вроде бы у Oracl технология блокировок в корне отличная от MS SQL.
Было бы интересно сравнить "2 решения - 2 планеты - 2 подхода."
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33963794
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevПростой пример: оператор вводит в систему накладную на отгрузку товара. Накладная состоит из "шапки" (номер склада, дата, фамилия оператора и т.д.) и нескольких записей в табличной части (название товара, количество коробок и т.д.).Очевидно, что накладную в систему нужно ввести целиком за одну транзакцию.Я бы сказал, что Вы привели удивительно неудачный пример. Если Вы действительно предполагаете, что подобную структуру данных следует заполнять в одной транзакции в случае, если мы говорим об интерактивном вводе данных, то как вы представляете себе такого оператора, который не отрываясь вводит тысячи полторы-две позиций?

Dmitry V. Liseev Каким образом Вы предлагаете спроектировать данные, чтобы сделать это все за один SQL запрос?
Передергиваете, юноша. Процитирую Ваши слова повторно
Dmitry V. Liseev Даже прочитать нужные нам данные
одним запросом не получается.


Dmitry V. Liseev !!! Dmitry V. LiseevВообще, вопросы
изолирования транзакций и стратегии блокировок описаны
в специальной литературе.А про отложенные проверки целостности слыхали?Впервые слышу. Это как? Можно было бы просто отослать вас к RTFM, но, поскольку мы не обсуждаем достоинства и недостатки конкретных серверов БД, скажу только о том, что существуют СУБД, позволяющие отложить декларативную проверку целостности на конец транзакции.

Dmitry V. LiseevТут соседний магазин неделю торговал по ошибочным ценникам раза в полтора дешевле. Потом решили ценники проверить: "А мы понять не могли, откуда такой наплыв покупателей". Такой отложенной проверки целостности не надо, спасибо. В моей системе инженеры потом месяцами будут руками все разгребать и перепроверять. Если системе задан констрейн, то она должна его обеспечивать в реалтайме.И тут все наконец начинают понимать, что Вы пытаетесь проектировать системы с длинными транзакциями, а про то, что транзакции могут быть короткими, Вы вероятно не слышали. Пора в школу

Dmitry V. Liseev !!! Dmitry V. LiseevТо есть нужен
принцип "один пакет - одна транзакция". Аналогично,
было-бы хорошо, если бы все нужные для отображения данные
передавались бы с сервера на клиент также одним пакетом.Правильно, не пойму только, почему бы так и не поступить?В двухзвенке через ODBC? Именно в двухзвенке. Про ODBC Вы сами только что придумали.


Dmitry V. LiseevКаким образом? Пример задачи с вводом накладной за одну транзакцию я приводил. Как делать предлагаете?Очевидность использования в приведенном примере длинной транзакции очевидна только Вам. Никто не мешает оформить сохранение накладной в виде:
1. Сохранение заголовка
2. Сохранение порций строк между, введенных после предыдущего сохранения.
Транзакции при этом точечные и все надуманные Вами проблемы пропадают сами собой.


Dmitry V. Liseev !!! Dmitry V. LiseevА с другой стороны наш СП имеет толстый канал связи
с СУБД. Совсем физически независимая сеть, даже
отдельная сетевая карта, чтобы никто не мешал ему
как можно быстрее провести транзакцию.А если работать с сервером напрямую, через ХП, то никакой независимой сети вообще не нужно. Не говоря уж об отдельной сетевой карте Можно и без отдельной подсети. Только экономии на копейки, а масштабирование ухудшится весьма заметно.Так-так, ну ка, расскажите нам поподробнее о масштабировании, особенно в случае самописного сервера приложений, написанного на скриптовом языке, желательно в сравнении, скажем, с возможностями масштабирования Oracle 10g
Dmitry V. Liseev !!!Интересный подход. А если не отчет, то тоже может исправить в хорошо откомментированных исходниках ? А отвечают за это рукоблудие, насколько я понимаю, другие разработчики (см. ниже)Отвечает за рукоблудие тот, кто исправляет. То есть, системный администратор заказчика.Ага, т.е., Вы с себя всю ответственность за поддержку и развитие системы снимаете? Ну что ж, тоже вариант. Только, к сожалению, не наш.

Dmitry V. Liseev !!! Dmitry V. LiseevЕсли заказчик не может сам сделать отчет, то просит нас.Скорее, не "если", а "когда". Когда испортит все до такой степени, что исправить будет сложнее, чем написать все заново.Когда что-нибудь испортит, сервер приложений за пять минут можно переустановить с дистрибутивного диска.Измененный заказчиком функционал, обеспечивающий процессы заказчика у вас тоже на дистрибутиве?

Dmitry V. Liseev...тут лишнее скипнуто...
!!!Я только бумажку с красивыми и умными словами напишу, а что в результате получится - это не мои проблемы, для этого есть другие разработчики .Что получится в результате - как раз мои проблемы, ибо мне это потом годами сопровождать.Вы постоянно противоречите самому себе. То вы отдаете заказчику все в исходниках - правь-не хочу, то сначала заявляете, что заказчик не может написать ТЗ, но пишет требования. Вы уж определитесь сначала, какой именно линии собираетесь придерживаться в дискуссии
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33963819
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий , Вы получили почту от меня или нет?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33963837
Самый правильный способ, если отчеты на серевере будут компилироваться на лету в некий П-Код (при первом запуске). А потом буду исполняться специальной виртуальной машиной. Для этого нужно написать свой интерпретатор. При всем страшном слове "написать свой интерпретатор" стоит это достаточно мало. Если интересно могу даже сказать почему...
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33964373
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МетапрограммистСамый правильный способ, если отчеты на серевере будут компилироваться на лету в некий П-Код (при первом запуске). А потом буду исполняться специальной виртуальной машиной.
Это не "самый правильный" способ, а "самый интересный программисту". Ну и позволяющий объяснить, почему он не занимается такими скучными и неинтересными вещами, как создание чего-то, реально нужного пользователю.

МетапрограммистДля этого нужно написать свой интерпретатор.
Фи. Интерпретаторы suxx.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33964487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНикто не мешает оформить сохранение накладной в виде:
1. Сохранение заголовка
2. Сохранение порций строк между, введенных после предыдущего сохранения.
Транзакции при этом точечные и все надуманные Вами проблемы пропадают сами собой.
сомневаюсь, что на сервере нужно сохранение накладной из шапки и детали-строк в двух транзакциях а не в одной.

______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33964976
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123сомневаюсь, что на сервере нужно сохранение накладной из шапки и детали-строк в двух транзакциях а не в одной.
Серверу в принципе пофиг (если не говорить о криво спроектированных приложениях, следствием которых является "не пофиг"). А вот пользователю не пофиг - ему хочется, чтобы кнопки типа "Сохранить"/"Отменить" работали неким разумным образом, а не в соответствии с представлениями программиста об оптимальном количестве транзакций.

Допустим, я создам шапку документа, три позиции, нажму кнопку "Сохранить". В этот момент произойдет нечто, например падение сервака по питанию. Если после подъема сервака моей накладной в базе не окажется - печально, но понятно. А вот если в базе окажется шапка накладной, но не окажется позиций - у меня возникнет желание возлюбить программиста. Сучковатым деревянным любилом размера XXL.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33965027
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Допустим, я создам шапку документа, три позиции, нажму кнопку "Сохранить". В этот момент произойдет нечто, например падение сервака по питанию. Если после подъема сервака моей накладной в базе не окажется - печально, но понятно. А вот если в базе окажется шапка накладной, но не окажется позиций - у меня возникнет желание возлюбить программиста. Сучковатым деревянным любилом размера XXL.
я с тобой согласен:
Есть бизнес-требование - Сохранить накладную (а не шапку отдельно и детальки отдельно). Поэтому транзакция одна или составная из подтранзакций. При незавершении подтранзакции - основная транзакция должна откатится (шапка документа).
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33965073
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПри незавершении подтранзакции - основная транзакция должна откатится (шапка документа).

Это зависит от бизнес-требований.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966439
softwarerЭто не "самый правильный" способ, а "самый интересный программисту". Ну и позволяющий объяснить, почему он не занимается такими скучными и неинтересными вещами, как создание чего-то, реально нужного пользователю.
Фи. Интерпретаторы suxx.

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

Кстати уважаемый просьба: меньше эмоций, а больше конкретики
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966469
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МетапрограммистЯзык интерпретатор должен быть таким, чтобы эту бизнес логику писать влет. Так чтобы в паре десятке строк можно было уместить нехилый отчетик. Открою Вам страшную тайну - такой язык уже есть. Более того, он довольно широко распространен и худо-бедно стандартизирован - это Язык Структурированных Запросов. Ну и интерпретаторы этого языка тоже имеют место быть - про СУБД, надеюсь, слыхали?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966509
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МетапрограммистЕще раз повторяю самый правильный способ для дальнейшей поддержки и сопровождения системы.
Уважаемый, я далеко не самый молодой из программистов, но песня, которую Вы сейчас исполняете, примерно на двадцать лет старше меня. На этом пути были достигнуты некоторые интересные результаты, в частности справедливо упомянутый !!! язык SQL. Эта тема разрабатывалась достаточно серьезно, и на сегодня известные решения такого рода вполне естественным образом делятся на "весьма дорого стоившие" и "откровенно дерьмовые" (пояснение - много худшие, нежели уместно примененная комбинация готовых решений). Более того, даже некоторые "весьма дорого стоившие" решения сдают позиции.

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

МетапрограммистКстати уважаемый просьба: меньше эмоций, а больше конкретики
Видите ли, уважаемый, у меня есть привычка подстраиваться под стиль собеседника.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966717
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то скадальный топик. :)
Возвращаясь к теме 3-х звенок...
ситуация ниже просто нереальная:
автор1 юзер: Запускает транзакцию.
1 юзер: Читает 0, прибавляет 100, записывает 100.
Теперь на счете 100 баксов.
2 юзер: Запускает транзакцию.
2 юзер: Читает 100, отнимает 80, записывает 20.
Теперь на счете 20 баксов.
2 юзер: Подтверждает транзакцию.
1 юзер: Откатывает транзакцию.
Это пример того, как работает транзакция в худшем варианте. Хотя бы потому что после записи 100$ не было подтверждения, а юзер 2 уже положил 100$ в карман. Этот пример приводится как иллюстрация того, как не нужно делать.
Во-вторых, непонятна ситуация "открыл транзакцию....делаю.... думаю... отменяю или подтверждаю". Транзакции открываются не для того, чтобы пойти выпить текилы и потом подтвердить сей факт. А потому, логично, что одним запросом или двумя (а иногда и десятью) не столь важно. Ради искусства конечно можно, с удовольствием бы посмотрел, как уважаемый softwarer это сделал бы. У меня пока получается двумя как минимум :) Если конечно под запросом не понимается запуск хп.

МетапрограммистТак чтобы в паре десятке строк можно было уместить нехилый отчетик
Пара десятков - это пока SQL. Хотя хорошо спроектированный QBE может и в меньше уложится, но уж слишком зависим от структуры. Последователи тоже, пока.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966721
iscrafmКакой-то скадальный топик. :)
Возвращаясь к теме 3-х звенок...
ситуация ниже просто нереальная:
автор1 юзер: Запускает транзакцию.
1 юзер: Читает 0, прибавляет 100, записывает 100.
Теперь на счете 100 баксов.
2 юзер: Запускает транзакцию.
2 юзер: Читает 100, отнимает 80, записывает 20.
Теперь на счете 20 баксов.
2 юзер: Подтверждает транзакцию.
1 юзер: Откатывает транзакцию.
Это пример того, как работает транзакция в худшем варианте. Хотя бы потому что после записи 100$ не было подтверждения, а юзер 2 уже положил 100$ в карман. Этот пример приводится как иллюстрация того, как не нужно делать.
Во-вторых, непонятна ситуация "открыл транзакцию....делаю.... думаю... отменяю или подтверждаю". Транзакции открываются не для того, чтобы пойти выпить текилы и потом подтвердить сей факт. А потому, логично, что одним запросом или двумя (а иногда и десятью) не столь важно. Ради искусства конечно можно, с удовольствием бы посмотрел, как уважаемый softwarer это сделал бы. У меня пока получается двумя как минимум :) Если конечно под запросом не понимается запуск хп.

МетапрограммистТак чтобы в паре десятке строк можно было уместить нехилый отчетик
Пара десятков - это пока SQL. Хотя хорошо спроектированный QBE может и в меньше уложится, но уж слишком зависим от структуры. Последователи тоже, пока.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966722
!!!Открою Вам страшную тайну - такой язык уже есть. Более того, он довольно широко распространен и худо-бедно стандартизирован - это Язык Структурированных Запросов. Ну и интерпретаторы этого языка тоже имеют место быть - про СУБД, надеюсь, слыхали?

Кончено же SQL никто не отменял. А вот описание бизнес-логики должно вестись на специально заточенном для него языке. Конечно же это в идеале. Такого языка еще нет. По крайней мере стандатризованного и общепринятого. Разные фирмы создают свой язык. Но оно и понятно - так как прикладная задача у всех разная, поэтому здесь нельзя создать что-то одно универсальное. Как например SQL, который по своему существу опирается на теорию множеств и математическую логику. В нашем же случае такой теории нет. Слишком близко подходим к реалии повседневной жизни :)
Итак нужен специальный язык - не только для построения отчетов, но и для самого главного - описания бизнес процессов. Причем легкого, не напрямую через язык SQL. А например для того чтобы раз и навсегда покончить с такими траблами:
iscrafmЭто пример того, как работает транзакция в худшем варианте. Хотя бы потому что после записи 100$ не было подтверждения, а юзер 2 уже положил 100$ в карман. Этот пример приводится как иллюстрация того, как не нужно делать...


Создается системный прикладной объект РегистрОстатковДенег, РегистрЕщеЧегоТо и так далее. Через который происходят операции, связанные с соответствующей бизнес логикой.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966727
Дополнение:
В чем достоинство такого языка-интерпретатор, это то что программист разработчик бизнес-логики не обязательно должен знать об особенностяз работ СУБД, например как описываемая выше проблема с блокировками. Об этом позаботится программист ядра платформы.
Разделение труда приводит к увеличению производительности и улучшению качества продукта. Разве не так? ;)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966730
softwarer
В силу этих соображений явление пророка, готового показать легкую дорогу, вызывает у меня некоторый скепсис относительно финальной точки маршрута.

Видите ли, Автор топика избрал построение приложения самостоятельно, без использования платформ сторонних производителей. Отсюда я делаю вывод, что у него очень много энергии и сил, а раз так, то хватит осилить и правильную дорогу, несмотря на то что этот путь тернист и труден. Другими словами я говорю как бы сделал я на его месте. Я уверен что я знаю как сделать правильно и я могу это доказать.
В то же время говорить чтобы он вообще отказывался от создания своего приложения или платформы это неправильно (хотя бы с педагогической точки зрения).
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966738
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafmКакой-то скандальный топик. :) Ну вот, хоть кто-то опомнился!!! Иногда стОит оглядываться назад. :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33966887
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МетапрограммистСоздается системный прикладной объект РегистрОстатковДенег, РегистрЕщеЧегоТо и так далее. Через который происходят операции, связанные с соответствующей бизнес логикой.
Вот это уже звучит разумно. Осталось понять, что для создания объектов типа РегистрОстатковДенег совершенно незачем мутить свой язык вместе со всеми его недоработками.

МетапрограммистВ чем достоинство такого языка-интерпретатор, это то что программист разработчик бизнес-логики не обязательно должен знать об особенностяз работ СУБД, например как описываемая выше проблема с блокировками. Об этом позаботится программист ядра платформы.

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

МетапрограммистРазделение труда приводит к увеличению производительности и улучшению качества продукта. Разве не так? ;)
Что касается увеличения производительности - я бы с удовольствием посмотрел, как увеличится производительность при разделении труда между разработчиками, один из которых ставит открывающие скобки, другой закрывающие, а третий пишет текст между ними (вот только он сегодня на работу не вышел).

Что касается качества продукта - если скорость работы отчета, масштабируемость решения и прочие подобные факторы исключить из понятия качества, то может быть описываемый интерпретатор его и повысит.
...
Рейтинг: 0 / 0
25 сообщений из 141, страница 4 из 6
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Вопросы по реализации 3-х звенного приложения...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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