powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Вопросы по реализации 3-х звенного приложения...
141 сообщений из 141, показаны все 6 страниц
Вопросы по реализации 3-х звенного приложения...
    #33940546
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...+подключение отчётов в виде DLL на сервере приложения (среднее звено).

Планирую воспользоваться технологией DataSnap (протокол соединения - сокеты TCP/IP)

А теперь несколько вопросов к вам, уважаемые коллеги, кто тесно связан с subj'ем ;-)

1. Возможно ли такое в принципе (динамическое подключение отчётов (dll) именно на среднем звене)?
2. Если возможно, расскажите, пожалуйста, об этом подробнее (возможно, ссылку или пример).
2.1. Не хотелось бы столкнуться с необходимостью build'ить и сервер и dll с runtime пакетами.

Возможно, я изобретаю велосипед, но тогда подскажите, пожалуйста, наилучшее решение в следующей ситуации (пока ничего не реализовано и предлагаемая на ваше обсуждение реализация ПО - это только IMHO, которое вы можете коренным образом улучшить!):
итак, существует 3 группы пользователей:
1). численностью 2-30чел. - работают в локальной сети (от 10 до 100Mbit/s) c "БД1" (тип OLTP) через среднее звено, пользуясь "тонким клиентом" (не Inet browser!);
2). численностью 2-5чел. - работают со своей "БД2" (тип OLTP), аналогично группе 1, но сервер приложения "БД2" при необходимости подключается к серверу приложения "БД1" (инициирование соединения возможно с обеих сторон (но не одновременно), если соединение ещё не установлено) через модемное соединение (прямой провод) со скоростью от 14400 до 28800bps для записи относительно небольшого объёма данных с обеих сторон. Здесь могу ещё отметить, что связь на этом участке ОЧЕНЬ неустойчивая и это изменить к лучшему НЕ светит в перспективе;
3). численностью до 50чел. - работают с "БД3" (тип ODS) через Интернет (используя IE или другой Inet browser). Данные в "БД3" должны записываться пакетами, полученными посредством e-mail из "БД1"
Количество групп типа "1" может быть до 50.
Для каждой группы типа "1" может существовать от 0 до 30 групп типа "2" (модемов, соответственно, на стороне группы типа "1" столько же).
Группы типа "1", "2" и "3" разнесены территориально на достаточно большие расстояния.
Для групп типа "1" и "2" необходимы различные отчеты (по "БД1" и "БД2" соответственно), которые хотелось бы поместить только на серверах приложений (чтобы не "разбрасывать" по клиентским компам вновь созданные отчеты), причём сам сервер приложения при добавлении/изменении отчётов не должен перекомпилироваться.
Для группы типа "3" отчёты, используемые группами типа "1" и "2" тоже нужны, но далеко не все (здесь совместимость не столь важна, но желательна :) ). Для группы типа "3" отчеты обязательно должны подключаться, НЕ останавливая работу пользователей.

Заранее благодарю всех, принявших участие в обсуждении,
буду рад выслушать все ваши предложения!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33940577
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man1. Возможно ли такое в принципе (динамическое подключение отчётов (dll) именно на среднем звене)?
2. Если возможно, расскажите, пожалуйста, об этом подробнее (возможно, ссылку или пример).
2.1. Не хотелось бы столкнуться с необходимостью build'ить и сервер и dll с runtime пакетами.

В принципе возможно. Вариантов реализации может быть множество, возможно dll не самый лучший вариант.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33940872
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man...+подключение отчётов в виде DLL на сервере приложения (среднее звено)....
1. Возможно ли такое в принципе (динамическое подключение отчётов (dll) именно на среднем звене)?
2. Если возможно, расскажите, пожалуйста, об этом подробнее (возможно, ссылку или пример).
2.1. Не хотелось бы столкнуться с необходимостью build'ить и сервер и dll с runtime пакетами.....

да, возможно подключение(и отключение) на ран тайме исполняемых модулей у программы. Самой технологии в обед сто лет и носит название COM. Хоть и родилась в недрах милкософта, но САМА технология НЕ носит отпечаток форточек - посему реализуема на ЛЮБОЙ оси и железе... С точки зрения программирования информацию мона подчерпнуть в книге "Основы COM" (опс, автора запямятствовал...Роджерсон что ли)...

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

с уважением
(круглый)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33941937
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На чем пишите то?

Я бы посоветовал даже не COM, а DCOM, получится сервер приложения :) В msdn есть хорошие статьи по принципу организации
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33942627
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gybsonНа чем пишите то?
Да, правильно, если выбрали уже ЯП, то нужно идти в профильный форум, там лучше подскажут.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33943250
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bas gybsonНа чем пишите то?
Да, правильно, если выбрали уже ЯП, то нужно идти в профильный форум, там лучше подскажут.
ЯП - Delphi. Так как с dll уже практически определился (подсказали другие варианты реализации отчётов - вопрос задавался в том числе и на форумах по Delphi :-) ), то всё ещё остаётся открытым вопрос к спецАм, уже имеющим опыт создания подобных ИС. Поделитесь опытом, пожалуйста - с помощью каких средств реализовывали, какие грабли и т.п. :) Хотелось бы, так сказать, идти "по протоптанным граблям"...

gybson
Я бы посоветовал даже не COM, а DCOM, получится сервер приложения :) В msdn есть хорошие статьи по принципу организации
C помощью DCOM хотелось бы в самую последнюю очередь. "...не COM, а DCOM" - без COM всё равно не обойтись - TRemoteDataModule и есть COM-объект, точнее сервер автоматизации. "...получится сервер приложения" - но при помощи сокетов тоже может получиться СП ;)
По поводу статей - посмотрю, как время будет, но если есть под рукой ссылочки на "хорошие статьи по принципу организации" - все сюда, за что заранее спасибо и респект!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33943406
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы довести до ума, граблей будет много и много человеколет. Все не перечислишь.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33943533
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но при помощи сокетов тоже может получиться СП ;)


Не думаю, что у вас достаточно квалификации для того, чтобы разработать протокол.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33943702
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gybson
но при помощи сокетов тоже может получиться СП ;)


Не думаю, что у вас достаточно квалификации для того, чтобы разработать протокол.
Насчёт квалификации, не знаю - со стороны, конечно, виднее ;) , но существует готовый класс для этих целей - TSocketConnection.

iscrafm , перечислите хотя бы основные (грабли), если не секрет! ;) Я хотя бы начну готовиться.
З.Ы. Вы являетесь одним из тех, кому доводилось создавать ИС, подобные subj'у?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33943830
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man iscrafm , перечислите хотя бы основные (грабли), если не секрет! ;) Я хотя бы начну готовиться.
З.Ы. Вы являетесь одним из тех, кому доводилось создавать ИС, подобные subj'у?
Одна из граблей - сервер приложений. Это действительно нетривиальный механизм. Да, мы такое делали (сделали), но все же пару десятков ч/л. В лоб конечно можно быстрее, а потом долго дорабатывать и трястись перед каждым изменением :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33943833
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. у нас практически все проекты такие, распределенные
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33950347
Nonsens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0
да, возможно подключение(и отключение) на ран тайме исполняемых модулей у программы. Самой технологии в обед сто лет и носит название COM. Хоть и родилась в недрах милкософта, но САМА технология НЕ носит отпечаток форточек - посему реализуема на ЛЮБОЙ оси и железе... С точки зрения программирования информацию мона подчерпнуть в книге "Основы COM" (опс, автора запямятствовал...Роджерсон что ли)...

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

Сам-то понял что написал?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33950693
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NonsensСам-то понял что написал?

Мы с Вами спирт жрали ?
А класику читать бум ? Или считаете, что Вы всё знаете ? Открою маленький секрет, лично для Вас...Книги открываются ручками и их нужно читать, а не только подкладывать под ся - чтоб достать до клавы... :)


удачи Вам
(круглый)
ЗЫ
Пионэры стали наглеть...аднака...Даже книг уже не читают...писец...
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951535
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-manперечислите хотя бы основные (грабли), если не секрет! ;) Я хотя бы начну готовиться.
З.Ы. Вы являетесь одним из тех, кому доводилось создавать ИС, подобные subj'у?
основные грабли здесь:
"странные мысли о ......"
http://www.sql.ru/forum/actualthread.aspx?tid=33967&hl=%f1%f2%f0%e0%ed%ed%fb%e5+%ec%fb%f1%eb%e8
читать по чайной ложке наночь :)

ЗЫ. Сам почитал перед новым проектом (спасибо форуму) и отказался от 3-х звенки.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951595
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ro-man
-------
"странные мысли о ......"
http://www.sql.ru/forum/actualthread.aspx?tid=33967&hl=%f1%f2%f0%e0%ed%ed%fb%e5+%ec%fb%f1%eb%e8
Не рекомендую читать. Кроме болтологии на тему "чья кобыла" круче там нет ничего ценного. Тем более там не перечислены эти самые грабли. Как же можно узнать про грабли у человека, который в своей жизни не сделал ни одной трехзвенки? Примерно такая польза будет у Вас после прочтения сего многостраничного опуса. Самую сложную часть я Вам подсказал. Назвать это граблями нельзя, это просто самая сложная часть. Дерзайте.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951691
Nonsens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0 NonsensСам-то понял что написал?

А класику читать бум ? Или считаете, что Вы всё знаете ?
Нет, не считаю. А вот ты, судя по твоему посту, читать может и умеешь, но выводы делать из прочитанного нет. К вопросу о том кто тут пионер, кстати.

Одно это чего стоит:

kolobok0
не путать с реестрами, оле, автоматизацией и прочей виндусовой шнягой...

Что этим сказать-то хотел?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951699
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm2 Ro-man
-------
"странные мысли о ......"
http://www.sql.ru/forum/actualthread.aspx?tid=33967&hl=%f1%f2%f0%e0%ed%ed%fb%e5+%ec%fb%f1%eb%e8
Не рекомендую читать. Кроме болтологии на тему "чья кобыла" круче там нет ничего ценного. Тем более там не перечислены эти самые грабли. Как же можно узнать про грабли у человека, который в своей жизни не сделал ни одной трехзвенки? Примерно такая польза будет у Вас после прочтения сего многостраничного опуса. Самую сложную часть я Вам подсказал. Назвать это граблями нельзя, это просто самая сложная часть. Дерзайте.
зря вы так резко.
Конкретики у вас тоже маловато ("основные грабли - сервер приложений").
Это всё равно что сказать:
"Основные грабли 3-е звено". )

ЗЫ. Лучше не развивать из этого топика - "странные мысли 2"
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951738
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123зря вы так резко.
Конкретики у вас тоже маловато ("основные грабли - сервер приложений").

Больше не скажешь. Дальше идут только описания безграблевых алгоритмов. Кто ж их даст :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951779
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ro-man
Я не уверен, что понял в чем именно состоит ваша задача (деталей вы привели много, но суть как-то ускальзывает), но возможно, вам стоит задуматься о готовых reporting-серверах. У нас популярен Crystal reports, но есть и другие
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33951903
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У "нас" - это у кого?
Разве Report Server может вносить изменения в БД?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33952030
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmУ "нас" - это у кого? В СНГ iscrafm
Разве Report Server может вносить изменения в БД? А что надо ? В исходном посте Ro-man-а я про внесение изменений в БД ничего не нашел.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33952065
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KudinovВ СНГ
Понятно. А с чего Вы взяли? Разве что по количеству вопросов в разделе Отчетные системы. Но это показатель популярности в другом качестве.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33952108
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmНо это показатель популярности в другом качестве. [С удивлением] популярность не бывает "в качестве". Она либо есть либо нет.
Но не важно, спорить о популярности CR я не собираюсь. У вас другое мнение - отлично.

Можно обсуждать применимость того или иного продукта для данной задачи. Я лишь предложил автору топика посмотреть и решить подходит ли reporting server для него или нет.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33952151
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov
Но не важно, спорить о популярности CR я не собираюсь. У вас другое мнение - отлично.

Я тоже спорить не собираюсь :) Просто спросил у Вас с чего Вы взяли. Возможно знаете ссылку на источник по рынку отчетных систем в СНГ.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953114
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обо всём по-порядку (постараюсь всем ответить и никого не обидеть ;) )

iscrafm Petro123зря вы так резко.
Конкретики у вас тоже маловато ("основные грабли - сервер приложений").

Больше не скажешь. Дальше идут только описания безграблевых алгоритмов. Кто ж их даст :)
Конкретики действительно маловато... Вас, iscrafm , как специалиста уже освоившего подобные ИС я и хотел спросить, какие ОСНОВНЫЕ (я не знаю, как по-другому сформулировать - ГЛОБАЛЬНЫЕ, что-ли, т.е. те, с которыми столкнётся ЛЮБОЙ разработчик типового СП) проблемы встречаются при создании СП /по пунктам, если можно ;)/ и основные проверенные пути их разрешения... если, конечно, не жаль времени (или опыта :) ) чтобы делиться опытом.
P.S. алгоритмы и, так сказать, направления (куда надо копать :)) ) - это несколько разные вещи IMHO.

Alexey Kudinov 2 Ro-man
Я не уверен, что понял в чем именно состоит ваша задача (деталей вы привели много, но суть как-то ускальзывает), но возможно, вам стоит задуматься о готовых reporting-серверах. У нас популярен Crystal reports, но есть и другие
насчёт "ускользает" Вы правы на 100%! Что же, постараюсь восполнить пробел :)
Между всеми 3-мя типами баз данных существуют следующие потоки данных:
"БД3":
- входными данными для неё являются большая часть данных (практически всё), поступающих в "БД1"
- исходящие данные - это данные из таблиц-справочников, которые должны поступать в "БД1" (и затем уже в "БД2") и ДОЛЖНЫ БЫТЬ СИНХРОНИЗИРОВАНЫ во всех 3-х типах БД.
"БД1":
- входной поток данных - см. исходящ. для "БД3" и данные, поступающие в "БД2" (практически всё). Также все данные, генерируемые пользователями 1-й группы.
- исходящие данные - это данные из таблиц-справочников, которые должны поступать в "БД2" и ДОЛЖНЫ БЫТЬ СИНХРОНИЗИРОВАНЫ во всех 3-х типах БД. Также некоторая часть данных, генерируемая пользователями 1-й группы.
"БД2":
- входные данные - см. исходящ. для "БД1" и все данные, генерируемые пользователями 2-й группы.
- исходящие данные (поступают в "БД1") - вся необходимая информация для пользователей 1-й группы.

Вот, вкратце всё! Надеюсь, что не запутал ещё сильнее :)
P.S. Для публикации данных в Inet предварительно выбран FastReport Server (выборка будет ТОЛЬКО из "БД3"). Если есть лучшие решения (в том же ценовом диапазоне) - предлагайте, не стесняйтесь! :)

Petro123 ЗЫ. Сам почитал перед новым проектом (спасибо форуму) и отказался от 3-х звенки.
Как Вы подобное (см. выше) реализовали бы с помощью обычной КС (2-х звенной) архитектуры? Ваши предложения. Если что-то будет конструктивное, возможно, я тоже откажусь, но пока не вижу приемлемой альтернативы.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953315
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предпологаю что у Вас " лоскутная автоматизация ", которая требует не набора разных БД-кусков, а (возможно) одной центральной БД или одной одной БД с приаттаченными БД.
А также главного архитектора - спеца по корпоративной БД.
Перенеся бизнес-логику на среднее звено вы ещё больше раскидаете свои бизнес-правила по "кучкам".
Об этом и говорилось на ссылке выше.

Отчёты для доступа группам 1 и 2 можно хранить в самой БД а не на среднем звене.
IMHO
Почему общие корпоративные данные разнесены по разным БД логически и физически?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953396
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-manНадеюсь, что не запутал ещё сильнее :)Запутали :) Вы очень подробно описали ситуацию, но не написали чего же вы хотите достичь.
1 Написать отчетную систему, главное требование к которой - легкое подключение новых отчетов ?
2 Создать полноценный сервер приложений, оставив при этом ваши многочисленные БД как они есть ? Опять таки - что вы планируете размещать в этом СП
3 Полностью перепроектировать всю вашу систему, с целью добиться ... чего ?
Ro-manP.S. Для публикации данных в Inet предварительно выбран FastReport Server (выборка будет ТОЛЬКО из "БД3"). Если есть лучшие решения (в том же ценовом диапазоне) - предлагайте, не стесняйтесь! :)
FastReport Server хорошее решение.
В сравнении с CR - более простое и дешевое. CR очень уж монструозен
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953502
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-manКонкретики действительно маловато... Вас, iscrafm , как специалиста уже освоившего подобные ИС я и хотел спросить, какие ОСНОВНЫЕ (я не знаю, как по-другому сформулировать - ГЛОБАЛЬНЫЕ, что-ли, т.е. те, с которыми столкнётся ЛЮБОЙ разработчик типового СП)
Ro-man, возможно я и перегнул немного, т.к. смотрел с позиций полноценного СП. До сих пор непонятно, Вы наполнение БД тоже удаленно делать будете или эта работа выполнятся локально в каждом узле? Если будет ввод удаленный, то протестируйте на боевых объемах и реальных каналах DataSnap хорошенько. По крайней мере мы писали свой транспорт по этой причине. Если хотите без пересборок, то следует задуматься о проектировании системы хранения и управлением контентом. Не будете же жестко в dll зашивать вызовы? Если удаленно только отчеты, то имхо FR Server-а хватит с головой, более приемлемого варианта за 500$ не видно.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953505
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ro-man" <nospam@sql.ru>; wrote in message news:3072371@sql.ru...

Hi!

> Конкретики действительно маловато... Вас, iscrafm, как специалиста уже
> освоившего подобные ИС я и хотел спросить, какие ОСНОВНЫЕ (я не
> знаю, как по-другому сформулировать - ГЛОБАЛЬНЫЕ, что-ли, т.е. те,
> с которыми столкнётся ЛЮБОЙ разработчик типового СП) проблемы
> встречаются при создании СП /по пунктам, если можно ;)/ и основные
> проверенные пути их разрешения... если, конечно, не жаль времени
> (или опыта :) ) чтобы делиться опытом.

Поделиться можно. Вопрос в том, чтобы не начинать с азов.
Если человек задает вопрос: "Зачем нужна трехзвенка?", - то
это означает, что трехзвенка ему не нужна, поскольку он
не понимает, принципиальных проблем и ограничений двухзвенки.
Мне известны случаи, когда люди покупали мощные сервера
за мегабабки, а потом выясняли, что производительность
не увеличилась, а сервер работает вхолостую, обогревая
атмосферу. Если такой человек берется за создание трехзвенки,
то непременно построит ее по той архитектуре, что и двухзвенку,
получив только минусы и ни одного плюса.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953514
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev

+1

/topic/189688&pg=1&hl=%ee%f2%f7%e5%f2%fb
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33953853
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Petro123" <nospam@sql.ru>; wrote in message news:3073137@sql.ru...

Hi!

> +1

> /topic/
> 189688&pg=1&hl=%ee%f2%f7%e5%f2%fb

Это я все читал. Просто автор темы сказал: "Вот я поставил 3 сервера
СУБД и теперь мне нужна трехзвенка". При этом он не объяснил, зачем
он поставил 3 а не 1. У нас используется CACHE, которая изначально
создана, как трехзвенка. Сервер данных обычно один, серверов
приложений много, обычно по одному на каждую сотню юзеров.
Проблем с отчетами в dll и их компилляцией не возникает.
У нас отчеты выполняются по миллионам документов
и нет ни одного, который работал бы дольше пары секунд. С учетом
того, что на каждую запись каждой таблицы ведутся списки контроля
доступа и в отчет попадают только те данные, к которым у юзера
есть доступ на чтение, в зависимости от того, в какие группы он
входит и от статуса записи. Потому я не знаю, с каими проблемами
должен столкнуться разработчик "типового СП".
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33954160
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И снова обо всём по-порядку:

Petro123Отчёты для доступа группам 1 и 2 можно хранить в самой БД а не на среднем звене.
IMHO
Почему общие корпоративные данные разнесены по разным БД логически и физически?
"Отчёты для..." - по этому поводу могу сказать только что похожую идею мне уже давали для размышления, так что для отчётов, похоже, будет использована именно она (к сожалению, не помню автора, но если удастся её реализовать, обязательно найду :) ) - её смысл в том, чтобы хранить все шаблоны отчётов в BLOB-полях БД без использования dll. Генератор отчётов, кстати, ОДНОЗНАЧНО будет FastReport.
"...данные разнесены по разным БД..." - очень жаль, что Вы не прочитали внимательно мой вопрос (см. самое начало), а именно:
Ro-manГруппы типа "1", "2" и "3" разнесены территориально на достаточно большие расстояния .
Здесь, конечно, и моя вина - не объяснил ещё одну тонкость :) Группы типа "1" и "2" работают, мягко говоря, через очень хреновое соединение. Для группы типа "2" ОЧЕНЬ ВАЖНО иметь возможность работы с БД (предположительно локальной, т.е. "БД2") ДАЖЕ при невозможности подключения к "БД1" (возможность может, очень редко, но потенциально МОЖЕТ отсутствовать час, 3часа, сутки, 5суток или даже более...). Также, группа типа "2" должна иметь возможность выполнять отчёты ТОЛЬКО по своим подразделениям (читай по своей БД, т.к. опять же, мягко говоря, остальные группы типа "2" её не чешут :)) ) и УЖ ТОЧНО НЕ ЧЕРЕЗ МОДЕМ со скоростью 14400bps
Если есть толковые (читать КОНСТРУКТИВНЫЕ) идеи на этой стадии - прошу в студию! У меня пока одна идея > БД(тип "1") + БД(тип "2") - вот Вам уже 2 типа РАЗНЫХ БД, хотя по своей структуре они ОЧЕНЬ будут схожи.
Далее, после восстановления соединения с БД все изменения (скорее всего будет вестись лог или врЕменные таблицы), произведённые за это время в "БД2" ДОЛЖНЫ БЫТЬ переданы в "БД1". Равно как и новые записи в таблицах-справочниках "БД1" ДОЛЖНЫ БЫТЬ переданы в "БД2" вместе с ещё некоторыми данными из "БД1". И на кого, позвольте поинтересоваться, взвалить эти "обязанности"? :) На сервер БД (Firebird, кстати)? "Тонкого" клиента в группе типа "2"? Кому из них, самому "тонкому"? Или всем сразу? А может настрогать кучу "шняги" в виде утилит и т.п., которые всем этим будут заниматься, так а разве это не будет 3-м звеном??? - Это всё относится и к Вашему посту http://www.sql.ru/forum/actualpost.aspx?bid=58&tid=330477&mid=3072738&p=-1&act=quot#3073137
Я мог бы добавить столько же и по поводу связки "БД3"+FastReport Server... Пользователи БД типа "1"(множество групп) и типа "3"(единственная группа) разделены территориально (помните? :) ) как "1"-"1" так и "3"-"1" Откуда Fast будет брать данные для консолидированных отчетов, подключаться к базам данных типа "1" по очереди или сразу ко всем ПЯТИДЕСЯТИ?
Если наоборот (судя по всему, как Вы предлагаете) - БД одна (типа "3") - с ней работают для ВВОДА или получения данных (через Inet или по межгороду "жарят" ) - денег не напасёшься ни в первом, ни во втором случае (кстати, не будет лишним сказать, что организация бюджетная и бюджет ОЧЕНЬ ограничен)) пользователи из групп типа "1" и "2" и в тоже время пользователи из группы типа "3" ИЗ ЭТОЙ ЖЕ БД делают аналитические выборки (отчёты) лет так эдак за 5-6... :)
Кстати, т.к. БД типа "3" будет использоваться для получения информации (аналитики), а не для ввода, то и структура её будет "несколько" отличаться от "БД1" и "БД2" для оптимизации выборки данных, хотя данные "...Почему общие корпоративные ..." :)
К БД типа "3" (ODS) дополнительно (или на замену ей?), в недалёком будущем (по мере накопления информации и...денег), будет создана БД OLAP, построенная на СУБД MSSQL или аналогичной). Здесь следует заметить, не будь финансовая сторона вопроса столь острой (как она сейчас есть), данная ИС могла быть построена с использованием менее трудозатратных (спасибо этому форуму и его обитателям :)) ), хотя и достаточно дорогих на начальном этапе решений. Это ещё одна причина, по которой планируется создание СП - менее болезненный переход (через 5,6,7 лет - кто знает?) на более эффективные (и скорее всего, далеко НЕ бесплатные СУБД).
P.S. Если некоторые высказывания были не в меру резкими, то извиняюсь, меньше всего хотел Вас обидеть! :)

Двигаемся дальше...

Alexey KudinovЗапутали :) Вы очень подробно описали ситуацию, но не написали чего же вы хотите достичь.
" 1 Написать отчетную систему, главное требование к которой - легкое подключение новых отчетов ? " - нет, не отчётную систему (хотя одна из её составляющих будет предназначена ТОЛЬКО для отчётов), но требование лёгкого подключения (и обновления) отчётов сохраняются
" 2 Создать полноценный сервер приложений, оставив при этом ваши многочисленные БД как они есть ? Опять таки - что вы планируете размещать в этом СП " - насчёт полноценности, это уж по возможности (опыта создания подобных ИС нет) - основная задача, кроме перечисленных выше, минимизировать трафик (до нЕльзя :) ) за счёт кэширования и отложенной записи (что-то общее с моделью briefcase) и пренести всю бизнес-логику не в ХП (как по-моему предложил уважаемый Petro123 ) а на СП по причинам выше упомянутым (увязнешь в ХП и можно ЗАБЫТЬ про переход на другую СУБД в дальнейшем <даже, если появятся сотни тысяч$ :) - проще будет создать другую ИС на базе другой СУБД> и чем глубже "вязнешь", тем менее реальна эта возможность...). " ...многочисленные БД как они есть... " - их пока нет, в том то и дело - выдвигайте свои мнения КАК ИНАЧЕ грамотно построить такую ИС! У меня пока сложилось мнение, что люди здесь собрались по subj'у компетентные (кроме меня, наверное), но опытом поделиться не рвутся... :( ...к сожалению! Пока только: Dmitry V. LiseevМне известны случаи, когда люди покупали мощные сервера
за мегабабки, а потом выясняли, что производительность
не увеличилась, а сервер работает вхолостую, обогревая
атмосферу. Если такой человек берется за создание трехзвенки,
то непременно построит ее по той архитектуре, что и двухзвенку,
получив только минусы и ни одного плюса.
и вот это:
Dmitry V. Liseevэто означает, что трехзвенка ему не нужна, поскольку он
не понимает, принципиальных проблем и ограничений двухзвенки. Вместо этого просто перечислили бы основные (проблемы и ограничения) - я не думаю, что получилось бы длиной как мой пост... :)
и это:
Dmitry V. LiseevПроблем с отчетами в dll и их компилляцией не возникает.
У нас отчеты выполняются по миллионам документов
и нет ни одного, который работал бы дольше пары секунд. Интересует не то, что у Вас проблем не было, а сам принцип предоставления "тонким клиентам" их в доступ... Подключил я динамически dll... дальше что? Как организовать диалог с пользователем (ввод параметров и т.п.), где у Вас хранятся эти диалоговые формы (или не хранятся? создаются динамически?)? Пока вижу всю эту реализацию средствами FastReport'а (без dll) - там и диалоговые формы и комбо и чего только... и всё это можно сохранить в шаблоне (а затем и в БД).
и, наверное, вот это:
Dmitry V. LiseevПотому я не знаю, с каими проблемами
должен столкнуться разработчик "типового СП".
Не в обиду Вам (совсем не хочу оскорбить!), уважаемый Дмитрий, будет сказано, но это IMHO ПОНТЫ чистой воды и ничего более. Вот вопросы Вам "на засыпку" - создавалась эта ИС Вами лично с нуля или при Вашем участии, или Вы пришли "на готовое" и занимаетесь теперь только её поддержкой и развитием? Сколько всего Вам довелось создать ИС с использованием 3-х звенной архитектуры (первую, наверное, легче всего было реализовать :) ). Принимали активное участие в проектировании и создании? - и что, СРАЗУ вот так всё заработало (без отладки и т.п.) и НИКАКИХ проблем не возникало??? Если ответ "нет и не было никаких проблем" - приезжайте и расстреляйте меня прямо сейчас!!! :))
ну и вот это уж совсем было ни к чему!: :(
Petro123Dmitry V. Liseev

+1

...но я отвлёкся, извините, Alexey !
по этому поводу:
" 3 Полностью перепроектировать всю вашу систему, с целью добиться ... чего ? " могу сказать, что по большей части ничего перепроектировать не надо - пока кроме старенькой СУБД (файл-серверной, крайне неустойчивой к всевозможным сбоям в питании ПК и сетевых коммутаторов), работающей под DOS+кучи всяческой утилитной (win32) "шняги", поддерживающей её "на плаву", НИЧЕГО И НЕТ!!! :(
Alexey Kudinov FastReport Server хорошее решение. Согласен на 101%!!! :)) Зачем изобретать велосипед, если он уже существует, ещё и с мотором и стоит всего 500$! :)

Продолжаем разговор...
iscrafmДо сих пор непонятно, Вы наполнение БД тоже удаленно делать будете или эта работа выполнятся локально в каждом узле? - считаю, что уже ответил выше, если ответ не полный - дополню, скажите только в чём.
" Если будет ввод удаленный, то протестируйте на боевых объемах и реальных каналах DataSnap хорошенько. " - небольшой тест уже проделывал - выигрыш был в пользу DataSnap (в сравнении с обычным КС) в 1,5-2раза!
" По крайней мере мы писали свой транспорт по этой причине. " - неужели ни TDCOMConnection, ни TSocketConnection не устроили категорически? подозреваю, что Borland DataSnap не пик великолепия, тут, кстати, в одной из веток кому-то уже советовали (автора не помню, к сожалению) в этой связи Remote Objects SDK - у них, вроде бы свой "суперэффективный"... :) Был ли у Вас опыт "общения" с ним?
" Если удаленно только отчеты, то имхо FR Server-а хватит с головой,... " - FastReport Server будет использован ТОЛЬКО один (одна лицензия) и ТОЛЬКО для публикации данных в Inet (ни для чего более), все остальные клиенты (не инет'овские :) ) будут использовать обычный Fast...

P.S. изложение получилось... однако! Заранее простите за очепятки (проверять не буду - уже поздно...или рано? :) ).

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

Афтару.
Всё уже давно изобретено (можно так длинно не расписывать).

Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано.
Репликация никакого отношения к 3-х звенке не имеет.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33954864
трудАголик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man И снова обо всём по-порядку:
...
P.S. изложение получилось... однако! Заранее простите за очепятки (проверять не буду - уже поздно...или рано? :) ).

С уважением ко всем участникам обсуждения,
Роман.
Многа букф ниасилил :-)
У меня к автору только один вопрос - почему в этом проекте отсутствует архитектор, который должен знать ответы на все поставленные вопросы?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955135
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано.
Репликация никакого отношения к 3-х звенке не имеет.
Имеет, если есть требования портируемости приложения на разные сервера СУБД.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955142
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано.
Репликация никакого отношения к 3-х звенке не имеет.
Похоже, Вы опять не поняли сути вопроса! Это НЕ только репликация. Я не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ):
при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё?
Насчёт Репликации с Вами полностью согласен ТОЛЬКО в плане таблиц-справочников!

------------------------
трудАголик, СПАСИБО за обсуждение и Д О С В И Д А Н И Я!!!
В следующий раз сделайте мне небольшое одолжение (ну совсем маленькое) - ПРОЙДИТЕ МИМО!
------------------------
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955241
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey KudinovИмеет, если есть требования портируемости приложения на разные сервера СУБД. 2 Ro-man
Этот вопрос я советую прояснить для себя ОЧЕНЬ хорошо.
Чтобы вы думали не в стиле "а вот если вдруг когда-нибудь нам надо будет перейти на СУБД XYZ", а четко знали надо это или нет.

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

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

Оставить бизнес логику на сервер БД - хуже портируемость, но выше производительность.

Вот ссылка на статью, в которой описан перевод системы с одной СУБД на другую http://www.osp.ru/text/302/180964/ Подчеркиваю, системы, специально разрабатываемой с учетом возможности такого переноса (см. пункты a), б), в) )

Все, что я написал многократно обсуждалось здесь на форуме и вызывало многочисленные споры. Ссылки на флеймы уже приводились и очень бы не хотелось начинать по новой.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955294
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov Petro123Если данные разнесены территориально и плохие каналы, то Репликация и этим всё сказано.
Репликация никакого отношения к 3-х звенке не имеет.
Имеет, если есть требования портируемости приложения на разные сервера СУБД.
меня тошнит от такого требования.
Бесплатный сыр......
ПароВозоРакетоМобили всегда хуже (решения для отдельной СУБД)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955331
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man Я не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ):
при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё?
и ЭТОМУ ТОЖЕ ЕСТЬ НАЗВАНИЕ в теории построения БД.
1. Не пытайтесь объять необъятное:
- портируемость (все СУБД)
- все события (на каждый чих в СУБД каждым из 100000 пользователей вам придёт событие).

Что будет если вам, читающим эти строки прижут события после UPDATE данного топика?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955359
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov Вынос бизнес логики на сервер - лучше портируемость, хуже используются преимущества данной СУБД, производительность тоже хуже (хотя есть способы поправить положение, но это все ... ) Читать " Вынос бизнес логики с сервера БД - лучше портируемость, хуже используются преимущества данной СУБД, производительность тоже хуже "
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955448
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОГРОМНАЯ просьба в Вам (это последняя, дальше Ваши посты буду просто игнорировать :) ), Petro123 , я же уже выше говорил одному из участников - мне не нужны ПОНТЫ вроде этого:
Petro123и ЭТОМУ ТОЖЕ ЕСТЬ НАЗВАНИЕ в теории построения БД.
и т.п.
Мне нужны К О Н С Т Р У К Т И В Н Ы Е советы!
Ro-man
Я не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ):
при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё? - не нужен здесь СП?,- хорошо, объясните (ОБОСНОВАННО!) кто (или что) будет выполнять такую функцию или если лень (зачем тогда в этот топик вообще было лезть, логично? :-) ) объяснять - дайте хотя бы ссылки на такую информацию, я уж сам разберусь, без ленивых.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955516
Ro-man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Kudinov Потому что если если есть требования портируемости, вам автоматически действительно приходится переносить логику с сервера БД куда либо. Из этого следует:
Спасибо за совет, уже задумался...
Ещё одно "но"... см. пост Ro-manЯ не хотел бы "навешивать" на сервер СУБД (например, event'ы и т.п.) (и уж точно не на клиента) вот такую функцию (возможно, в тексте её не упомянул :( ):
при наступлении определённого события (создана /удалена,изменена/ запись в определённой таблице и т.п.) данные (и не все данные, а только необходимые) должны передаваться на следующий уровень "БД1">"БД2", причём не ВСЕМ "БД2", а конкретно одной (которую выбрал пользователь). Не правда ли, в данном случае СП справится с задачей много эффективнее чем что-то ещё?
- не нужен здесь СП?,- хорошо, объясните (ОБОСНОВАННО!) кто (или что) будет выполнять такую функцию или если лень (зачем тогда в этот топик вообще было лезть, логично? :-) ) объяснять - дайте хотя бы ссылки на такую информацию, я уж сам разберусь, без ленивых.
Т.к. Petro123 не очень-то стремится прояснить ситуацию (только запутывает ещё больше), может Вы поможете с вышеупомянутой проблемой? Да, и какие основные ЭФФЕКТИВНЫЕ пути сокращения трафика Вы используете при создании КС на столь "быстрых" соединениях?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955540
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афтар!
Я вижу Вы не очень любите отвечать на вопросы или отвечаете, но не как специалист по БД.
У меня был вопрос по ваши Event'am.

2. Ваши вопросы на форуме той БД которая у вас центральная не выдержали бы критики и 3-х минут.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955549
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man Да, и какие основные ЭФФЕКТИВНЫЕ пути сокращения трафика Вы используете при создании КС на столь "быстрых" соединениях?

есть 3 типа репликации . какую из них вы примеряли на себя или делали модель?

______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955566
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример архитектуры решения, похожего на Ваше (рис). Сервер №1...n - обособленные центры продаж, которые работают с локальными БД. Изменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления. Сервер приложений применяет изменения к БД с которой работает в паре. Связь между серверами - интернет. Также используется on-line доступ для прямого внесения изменений (например один из центров продаж в режиме онлайн вводит заказ непосредственно в БД другого центра) и получения отчетов.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955758
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИзменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления.
это все рукописное?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955762
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 авторИзменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления.
это все рукописное?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
ЗЫ.
это не наезд - правда интересно
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955789
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 авторИзменения регистрируются в Outbox в форме SQL запросов на модификацию данных. Служба синхронизации по графику или при помощи ручной активации подключается к удаленным серверам приложений и передает запросы на обновления.

Да я догадался, что без наездов :) В каком плане рукописное? не понял просто. Писалось конечно руками :) Все на базе ISCRA Framework. Сам ISCRA Framework - промышленный продукт с защитой, лицензиями, документацией, поддержкой, хорошим тестированием, отсутствием глюков и прочими прелестями промышленного продукта. Но тоже написан руками :)
Архитектура приведена для примера, как похожая на задачу автора. Правда в ценовой диапазон озвученный Ro-man-ом не вписывается.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33955832
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmПравда в ценовой диапазон озвученный Ro-man-ом не вписывается.
с этим согласен.
IMHO пусть всё-таки хотя-бы репликацию попробует.


"Сложнее всего в мире достигнуть простоты - это крайняя граница опыта и последнее усилие гения".
George Sand.

"Клетки человеческого организма более гибки, чем скажем человеческая рука, но рука лучше приспособлена для хватания объектов чем клетка... да и будь клетки менее гибкими мы не болели бы раком. так что не все тут так радостно как постулируется. Идеал находится где-то на полдороге между специализацией и гибкостью."
(с) Герман Иванов.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33956883
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ro-man" <nospam@sql.ru>; wrote in message news:3074341@sql.ru...

Hi!

> Далее, после восстановления соединения с БД все изменения
> (скорее всего будет вестись лог или врЕменные таблицы),
> произведённые за это время в "БД2" ДОЛЖНЫ БЫТЬ
> переданы в "БД1". Равно как и новые записи в таблицах-справочниках
> "БД1" ДОЛЖНЫ БЫТЬ переданы в "БД2" вместе с ещё некоторыми
> данными из "БД1". И на кого, позвольте поинтересоваться, взвалить
> эти "обязанности"? :)

А потом у заказчика поменялась постановка задачи и он говорит:
"Вот в эту таблицу вы можете добавлять, удалять, менять как угодно,
но сумма по всем записям в этом столбце должна быть не более 100,
а в этом столбце не менее 0". И разнести куски таблицы по трем
независимым серверам уже не получается. Или можно клепать
документы на отгрузку только в пределах остатка на единственном
складе. И как три независимые группы клепалщиков будут знать
остатки на складе? На кого взвалить эти обязанности?
В итоге транзакционной целостности данных не получается.
На одном сервере транзакция вроде прошла. При попытке
ее воспроизвести через несколько часов на другом сервере
что-то уже не получается. Там уже и справочники другие, да и данные
поменялись все давно. Потому, что если разные группы юзеров
действительно никогда по данным не пересекаются и описанных
проблем быть не может, то это будут три совершенно независимых
системы и связь между ними не нужна и СП не нужен.

> Это ещё одна причина, по которой планируется создание СП - менее
> болезненный переход (через 5,6,7 лет - кто знает?) на более
> эффективные (и скорее всего, далеко НЕ бесплатные СУБД).

Это миф. Сама по себе замена СУБД эффекта не даст никакого.
Надо будет полностью перепроектировать систему и СП тоже.

> Вместо этого просто перечислили бы основные (проблемы
> и ограничения) - я не думаю, что получилось бы длиной
> как мой пост... :)

Ладно. Начнем с начала. Вот есть у нас система. Очень
сложные данные с кучей зависимостей и констрейнов.
Очень сложная логика. Логика такая сложная, что большинство
нужных нам операций одним SQL запросом выполнить
не получается. Даже прочитать нужные нам данные
одним запросом не получается. А нам нужны транзакции
и логическая целостность данных. И вот мы с клиента
стартуем транзакцию, получаем ответ, что стартовала
успешно. Посылаем запрос, получаем ответ, что
все хорошо. Повторить предыдущее предложение N-раз.
Потом фиксируем транзакцию если все было успешно
или откатываем при ошибках.

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

Чего в этом плохого? Плохо тут то, что транзакция
лочит данные, которые она затрагивает. И все остальные
юзера работать не могут, а просто ждут, пока транзакция
не закончится или не откатится. Понятно, что какой бы
навороченный сервер мы не поставили, он просто будет
простаивать в ожидании снятия блокировок, а ускорить
такую сложную транзакцию никак не сможет, ибо причина
в том, что тормозит клиент и его канал связи. Самое ужасное,
что для возникновения проблемы достаточно, чтобы тормозили
всего несколько клиентов из сотни. А дальше - цепная реакция.
Клиенты ломятся на сервер, пересекаясь по данным,
количество блокировок нарастает, в целях экономии ресурсов
(ибо размер буфера, где хранится информация о блокировках
быстро растет, пожирая память, следовательно лочить надо
более крупными кусками, тогда записей будет меньше, в идеале
нужна одна запись "залочена вся база целиком")
сервер применяет эскалацию блокировок, то есть лочит не
только записи, непосредственно затронутые транзакцией,
но и целиком страницы и даже целые таблицы, блокируя
рядом оказавшиеся ни в чем не виновные записи. В итоге
вероятность очередного клиента влететь на блокировку
еще больше возрастает. Скоро транзакции, так и не дождавшись
заблокированных данных, начинают отваливаться по таймауту.
Алгоритмы тут в разных СУБД разные. Некоторые работают
по принципу: "Кто раньше встал, того и тапки". Т.е. чья транзакция
началась позже, та и отлетит в случае конфликта. Другие поступают
умнее. Они замеряют, сколько ресурсов уже пожрала транзакция.
Понятно, что ту, которая стоила кучу сил серверу, убивать жалко,
потому прибита будет та, что меньше "стоила".

Смотрим, почему транзакции лочат данные и чем "сложные"
данные отличаются от "простых". Допустим, есть у нас таблица.
Куча юзеров могут параллельно в ней что-то делать, добавлять,
удалять, менять. Допустим, к одним и тем-же записям разные
юзера не обращаются. Понятно, что юзера друг-другу не мешают.
При очень быстром диске и мощном сервере юзеров может быть
очень много. Но вот мы захотели, чтобы был констрейн. Допустим,
хотим, чтобы одно из полей в таблице было уникальным.
Тем самым мы ввели неявные зависимости между разными
записями в одной таблице. Допустим, первый юзер стартует
транзакцию и удаляет запись со значением "ААА". Второй
юзер пытается вставить запись со значением "ААА". Можно
или нельзя? Все зависит от первого юзера. Он может как
подтвердить транзакцию (запись исчезнет и второй сможет
вставить свою) так и откатить транзакцию (запись вернется
назад, а второй юзер получит ошибку). Соответственно, второй
юзер должен быть залочен, пока первый не закончит свою
транзакцию. Аналогичные рассуждения можно привести
и для внешних ключей, когда возможность существования
записи с FK в одной таблице зависит от наличия записи с
PR в другой таблице. Т.е. тоже неявные зависимости.
В итоге мы понимаем, что чем больше констрейнов и FK,
т.е. чем более "сложные" данные у нас, тем больше записей
может быть заблокировано каждой транзакцией и много юзеров
уже не могут работать параллельно. Вообще, вопросы
изолирования транзакций и стратегии блокировок описаны
в специальной литературе.

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

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

Но гораздо интереснее, все-же не гонять по сети кучу
пакетов, да еще через временные таблицы, а сделать
более нормальный СП. Понятно, что нам мешает "бедность
SQL", который не дает выполнить сложные вещи одним
запросом, а кучу сложноструктурированных данных
нельзя передать параметром в ХП, оттого мы вынуждены сначала
засылать их в кучу временных таблиц. Потому наш СП
будет принимать от клиента сложноструктурированные
запросы и отдавать сложноструктурированные ответы.
Хотим, гоняем в формате XML, хотим, сериализуем в свой
компактный бинарный поток, да еще и зипуем, если с трафиком
совсем тяжко. Важно, что один пакет - одна транзакция.
Даже, если канал медленный и клиент тормозит - не беда.
Важно, что это не мешает остальным и не затягивает
транзакции.

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

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

> Интересует не то, что у Вас проблем не было, а сам принцип
> предоставления "тонким клиентам" их в доступ... Подключил
> я динамически dll... дальше что?

У нас нет dll. Сервер приложений полностью на скриптах. Поставляется
заказчику целиком в хорошо откомментированных исходниках. Если
заказчику нужен новый отчет или слегка измененный старый, он делает
копию существующего, исправляет и компилирует прямо на сервере
приложений. При запуске этот отчета генерит XML и отправляет
на клиента по медленному каналу связи. Клиент пускает XSLT
и получает XSL-FO, на который натравливает FOP
и получает красивый PDF. Ловкость рук и никакого волшебства.
Если заказчик не может сам сделать отчет, то просит нас.

> Как организовать диалог с пользователем (ввод параметров и т.п.), где
> у Вас хранятся эти диалоговые формы (или не хранятся? создаются
> динамически?)?

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

> Вот вопросы Вам "на засыпку" - создавалась эта ИС Вами лично
> с нуля или при Вашем участии, или Вы пришли "на готовое"
> и занимаетесь теперь только её поддержкой и развитием?

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

> Сколько всего Вам довелось создать ИС с использованием 3-х
> звенной архитектуры (первую, наверное, легче всего было
> реализовать :) ).

Мне вообще не довелось делать двухзвенок, не считая
студенческих курсовых. А когда мы делали первую трехзвенку
еще и слова такого небыло. Люди фанатели даже от слов
"клиент-сервер". Была SUN-техника под солярисом,
была нетварь с ее NLM. Сетевой протокол был IPX/SPX.
Всякие дельфи, корбы, д-комы и ком-плюсы появились
сильно позже. Вот и вопрос, проще было или сложнее.
Даже С++ толком небыло. Только голый С.

> Принимали активное участие в проектировании и создании? - и что,
> СРАЗУ вот так всё заработало (без отладки и т.п.) и НИКАКИХ
> проблем не возникало???

Отладка и тестирование - как обычно в любой программе.
На начальном этапе было четыре варианта макета архитектуры.
Четвертый оказался наиболее удачным. На его кости уже
и нарастили мясо.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33956914
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если мешают блокировки, нужно просто брать СУБД без блокировок и не заморачиваться решением проблем, которые по сути являются проблемами СУБД
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33956978
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"iscrafm" <nospam@sql.ru>; wrote in message news:3079377@sql.ru...

Hi!

> если мешают блокировки, нужно просто брать СУБД
> без блокировок и не заморачиваться решением проблем,
> которые по сути являются проблемами СУБД

Не бывает СУБД без блокировок. Я это уже объяснял
в предыдущем посте, т.к. ссылок на конкретные СУБД
не приводил, а описывал механизмы изолирования транзакций,
которые реализованы везде немного по-разному, но смысл
один и проблемы одни и те-же.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33956989
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
Не бывает СУБД без блокировок.
Вы их просто не знаете, так было бы правильней сказать :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957035
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"iscrafm" <nospam@sql.ru>; wrote in message news:3079491@sql.ru...

Hi!

> Вы их просто не знаете, так было бы правильней сказать :)

Ну так, может, Вы все-же расскажете про них? Расскажите
про механизмы изолирования транзакций. На простом примере
UNIQUE констрейна. Все сразу смогут проверить, действительно
ли второй юзер может провести транзакцию, пока первый свою
не закончил. А то я уже не первый год слышу про "волшебные
СУБД", но никто их так пока и не показал.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957088
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
Ну так, может, Вы все-же расскажете про них? Расскажите
про механизмы изолирования транзакций.
Дмитрий, почитайте сами. MVCC, LOCK-FREE ключевые слова. Информации и практики применения просто море. Загляните на ANTS , к примеру.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957294
gybson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если мешают блокировки, нужно просто брать СУБД без блокировок и не заморачиваться решением проблем, которые по сути являются проблемами СУБД


браво. можно я буду цитировать это? :)

P.S. Для надежности надо еще OS взять реального времени и НЖМД очень быстрый :) :) :) :) :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957463
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gybson
если мешают блокировки, нужно просто брать СУБД без блокировок и не заморачиваться решением проблем, которые по сути являются проблемами СУБД


браво. можно я буду цитировать это? :)

P.S. Для надежности надо еще OS взять реального времени и НЖМД очень быстрый :) :) :) :) :)
Сколько угодно! Не пойму что смешного. Берут и ОС реального времени и железо соответствующее если нужно. Кроме банальной бухгалтерии существует еще множество интересных задач. Столкнетесь - задумаетесь, а не будете веселиться :). Правда, насколько я помню, Вы сказали что уже не разрабатываете. Значит не столкнетесь.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957476
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gybson
Рекомендую дальше 1С все таки кругозор расширять, полезно. Тем более для участия в теме, про 3-х звенные приложения, каковым 1С не является и не будет. Если конечно не попытаться v9 с нуля написать.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957802
трудАголик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ro-man трудАголик, СПАСИБО за обсуждение и Д О С В И Д А Н И Я!!!
В следующий раз сделайте мне небольшое одолжение (ну совсем маленькое) - ПРОЙДИТЕ МИМО!В следующий раз так и сделаю, а пока дам КОНСТРУКТИВНЫЙ совет - наймите грамотного архитектора, а не вылезайте на форум с детсадовскими вопросами. Или сходите поучитесь в какой-нибудь серьезной компании. СИБОСС, напимер, или там МВ
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33957817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev У нас нет dll. Сервер приложений полностью на скриптах. Поставляется
заказчику целиком в хорошо откомментированных исходниках. Если
заказчику нужен новый отчет или слегка измененный старый, он делает
копию существующего, исправляет и компилирует прямо на сервере
приложений.
======= Что получает после компиляции (dll/com/...) скрипты на каком языке?

При запуске этот отчета генерит XML и отправляет
на клиента по медленному каналу связи. Клиент пускает XSLT
и получает XSL-FO
== можно подробнее про XSL-FO?

, на который натравливает FOP
== можно подробнее про FOP?

и получает красивый PDF.
====== т.е. при клике на отчёте генерируется Отчёт_Маши.pdf каждый раз при новых данных?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33958143
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevЛадно. Начнем с начала. Вот есть у нас система. Очень
сложные данные с кучей зависимостей и констрейнов.
Очень сложная логика. Логика такая сложная, что большинство
нужных нам операций одним SQL запросом выполнить
не получается. Даже прочитать нужные нам данные
одним запросом не получается. Знаете, я не Станиславский, но вслед за ним скажу "Не верю!". То, что вы сейчас описали не бывает никогда , за исключением одной единственной ситуации - очень криво спроектированная структура данных.

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

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

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

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

Dmitry V. LiseevНо гораздо интереснее, все-же не гонять по сети кучу
пакетов, да еще через временные таблицы, а сделать
более нормальный СП. Понятно, что нам мешает "бедность
SQL", который не дает выполнить сложные вещи одним
запросом, а кучу сложноструктурированных данных
нельзя передать параметром в ХП, оттого мы вынуждены сначала
засылать их в кучу временных таблиц. Точно не умеете :((

Dmitry V. LiseevПотому наш СП
будет принимать от клиента сложноструктурированные
запросы и отдавать сложноструктурированные ответы.
Хотим, гоняем в формате XML, хотим, сериализуем в свой
компактный бинарный поток, да еще и зипуем, если с трафиком
совсем тяжко.Ну-ну. Любители модных аббревиатур.

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

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

Dmitry V. LiseevУ-ф-ф, руки устали.Наши руки не для скуки(С)

Dmitry V. LiseevУ нас нет dll. Сервер приложений полностью на скриптах. Поставляется
заказчику целиком в хорошо откомментированных исходниках. Если
заказчику нужен новый отчет или слегка измененный старый, он делает
копию существующего, исправляет и компилирует прямо на сервере
приложений. При запуске этот отчета генерит XML и отправляет
на клиента по медленному каналу связи. Клиент пускает XSLT
и получает XSL-FO, на который натравливает FOP
и получает красивый PDF. Ловкость рук и никакого волшебства.Интересный подход. А если не отчет, то тоже может исправить в хорошо откомментированных исходниках ? А отвечают за это рукоблудие, насколько я понимаю, другие разработчики (см. ниже)
Dmitry V. LiseevЕсли заказчик не может сам сделать отчет, то просит нас.Скорее, не "если", а "когда". Когда испортит все до такой степени, что исправить будет сложнее, чем написать все заново.

Dmitry V. LiseevПроектировалась мной лично с нуля. Я занимался реализацией
всей серверной части. Клиентские части делали другие
разработчики. Приход меня "на готовое" обычно сопровождается
полным перепроектированием системы. Я это обычно сразу
уточняю при приеме на работу ;) На поддержку готового нанимают
сисадминов, а я - проектировщик.Тоже знакомый подход. То, что было раньше, в корзину, потому что у меня свой взгляд на мир. Я только бумажку с красивыми и умными словами напишу, а что в результате получится - это не мои проблемы, для этого есть другие разработчики .
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33958308
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevМне вообще не довелось делать двухзвенок, не считая
студенческих курсовых. "И это многое обьясняет" (С)
Советую попробовать, хотя похоже, вы действительно нашли свою пулю.

2 Ro-man
У двухзвенок с логикой на сервере есть один большой-большой минус: мало программистов, умеющих хорошо программировать на SQL. А написать плохой SQL гораздо легче, чем плохой ОО код.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959514
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"iscrafm" <nospam@sql.ru>; wrote in message news:3079631@sql.ru...

Hi!

> Дмитрий, почитайте сами. MVCC, LOCK-FREE ключевые слова.
> Информации и практики применения просто море.
> Загляните на ANTS, к примеру.

Вы так и дальше будете теоретизировать на основе чужих
рекламных плакатов? Или таки возьмете свою любимую
"СУБД без блокировок" и проведете на практике элементарный
описанный мной тест с UNIQUE констрейном? Результаты - в студию.

Элементарно доказать, что если СУБД не поддерживает
блокировок, то она не поддерживает транзакций. Примером
LOCK-FREE является MS Access. Потому читать чужую рекламу
вечных двигателей мне не интересно. Про многоверсионную
изолированность я знаю. Информации действительно море.
Но нигде про полное отсутствие блокировок там ничего не сказано.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959556
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
Вы так и дальше будете теоретизировать на основе чужих
рекламных плакатов?
Я не теоретизирую :) Впрочем достаточно посмотреть на наш сайт. Мы работаем с самыми различными субд, в том числе и с безблокировочниками. Что-то доказывать нет желания. Если интересно, то не теоретизируйте, а скачайте и сделайте свой пример. Я Вам не "препод", мое время стоит очень дорого.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959560
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Petro123" <nospam@sql.ru>; wrote in message news:3080931@sql.ru...

Hi!

> Что получает после компиляции (dll/com/...)

Ровно то-же, что и при компиляции SQL-запросов
и хранимых процедур в обычных реляционных СУБД.
После компиляции получается промежуточный p-код,
который интерпретируется виртуальной машиной сервера
приложений.

> скрипты на каком языке?

Cache Object Script. Можно еще поискать по ключевому слову
M-язык, M-система, MUMPS и т.д. Это другая технология
построения систем. Она не реляционная.

> можно подробнее про XSL-FO?

http://www.w3.org/TR/xsl/

> можно подробнее про FOP?

http://xmlgraphics.apache.org/fop/

> т.е. при клике на отчёте генерируется Отчёт_Маши.pdf
> каждый раз при новых данных?

В каком смысле? При клике на готовом pdf файле ничего
не генерируется. Пускается акробат и открывается файл.
Если в системе кликнуть объект и из контекстного меню
выбрать нужный отчет, то отчет будет сгенерирован заново.
При желании его можно сохранить на диск как PDF или HTML
или распечатать.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959862
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"iscrafm" <nospam@sql.ru>; wrote in message news:3084065@sql.ru...

Hi!

> Я не теоретизирую :) Впрочем достаточно посмотреть на наш сайт.

И? Обычный фреймворк для примитивных офисных задач.
Семь лет назад при выборе платформы под свою систему
мы десятки таких внимательно просмотрели. Для наших задач
абсолютно бесполезны, а денег стоят кучу. Как у всех,
стандартный маркетинговый ход, в стиле "Ломаем
стереотипы". Типа, все ERP - фигня полная, одни мы
знаем правду. SAP AG прямо сразу испугалась. Посмотрела
на форум: "Зарегистрированных пользователей 29" и сразу
успокоилась. Я не собираюсь разводить флейм по этому
поводу, просто когда в качестве технических аргументов
тыкают в чисто рекламные плакаты на сайте - становится
не интересно. Почему-то я ссылок на свои сайты не привожу.
У нас в конторе есть продавцы и маркетологи, которые
разбрасывают везде рекламу, а я - технический человек.

> Мы работаем с самыми различными субд, в том числе
> и с безблокировочниками.

Нет. Не работаете. Достаточно фразы: "Поддерживаемые
СУБД - нет ограничений", - чтобы понять, что никакой
специфики конкретных СУБД в Вашей системе
не поддерживается. Вот у наших конкурентов сказано:
InterBase - для простых задач, Oracle - для сложных.
И два отдельных компакт диска. На одном версия
продукта для одной СУБД, на другом - для другой.
И две команды разработчиков серверной части.
А у нас только одна СУБД поддерживается.

> Что-то доказывать нет желания.

С этого и надо было начинать. Пустой треп в форуме.
Потому развивать тему про "волшебные безблокировочные
СУБД" в очередной раз бессмысленно.

> Если интересно, то не теоретизируйте, а скачайте
> и сделайте свой пример.

Что скачать? Interbase, Oracle, MS SQL, Postgre - везде
примеры делались и не только мной. Вердикт однозначен:
везде в данной ситуации будет блокировка.

> Я Вам не "препод", мое время стоит очень дорого.

Я вам предложил двухминутный пример, если "самые
различные СУБД" действительно одновременно
установлены у Вас на компьютере и Вы с ними "работаете".
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959906
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
И? Обычный фреймворк для примитивных офисных задач.
Семь лет назад при выборе платформы под свою систему
мы десятки таких внимательно просмотрели. Для наших задач
абсолютно бесполезны, а денег стоят кучу.

Офисными задачами не занимаемся. Странно конечно, но напрашивается вывод. Это MUMPS что-ли делает из людей таких. Здесь есть коллега ваш, называется ЧАЛ. Вы его копия, дальше каше ничего не видно, а понтов куча. Успокойтесь молодой человек. Вам до технического специалиста еще расти и расти. Специалисты не говорят про то, что не знают. Пока вы на уровне зарвавшегося студента.

Dmitry V. LiseevКак у всех,
стандартный маркетинговый ход, в стиле "Ломаем
стереотипы". Типа, все ERP - фигня полная, одни мы
знаем правду.

Вы сомневаетесь в том что я знаю правду про ERP? Я их сделал уже с пяток, не считая мелочей, одна тиражная. Повзрослеете, понимание придет.

Dmitry V. LiseevSAP AG прямо сразу испугалась.
Вы хоть знаете, что такое SAP AG? Бравируйте такими словами перед однокласниками.

Dmitry V. Liseev"Зарегистрированных пользователей 29" и сразу
успокоилась.
Ваш технический уровень и уровень логики просто поражает. У нас нет раздела "Просто треп" на форуме, и проблем в системе, которые нужно обсуждать. Еще есть система управления проектами с закрытым входом. Это в состоянии понять?


Dmitry V. Liseevа я - технический человек.
Я уже сказал. Вы не технический человек, не льстите. Достаточно рассуждений про 3-х звенные архитектуры :)

Dmitry V. LiseevНет. Не работаете. Достаточно фразы: "Поддерживаемые
СУБД - нет ограничений", - чтобы понять, что никакой
специфики конкретных СУБД в Вашей системе
не поддерживается.
Вы даже не удосужились разобраться как что работает прежде чем позориться на форуме. Или молчать нужно или по существу. По существу мозги нужны, поэтому лучше молчать.

Dmitry V. LiseevС этого и надо было начинать. Пустой треп в форуме.
Потому развивать тему про "волшебные безблокировочные
СУБД" в очередной раз бессмысленно.
Учись сам. Здесь нянек нет. Только чтобы не позориться хорошо думай, прежде чем пишешь. Иначе выглядишь подобно этому. Там кстати можешь глянуть, как в принципе работают трехзвенки, есть ссылка.


Dmitry V. LiseevЯ вам предложил двухминутный пример, если "самые
различные СУБД" действительно одновременно
установлены у Вас на компьютере и Вы с ними "работаете".
Во-первых, лично у меня на ноутбуке не установлены все СУБД с которыми работаем, я еще в начале сказал: офисными системами не занимаемся. Во-вторых напомню: работы стоят денег. Хотите чтобы за Вас подготовили пример работы без того бреда, который Вы описали в длинном и бестолковом посте - сделайте заказ, оплатите. Без проблем. Нет денег - идите читать рекламу или не высовыйтесь из-за каше в незнакомые темы.


Ну и пионерия пошла. Ничего не знают и даже не утруждаются узнать. А погрубить завсегда. Я уже начинаю с подозрением относится к каше. Может убрать его с серверов...
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959914
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
Почему-то я ссылок на свои сайты не привожу
Потому что одно дело, когда ты опозорился и растворился. А другое дело - компания. Для этого нужно тылы иметь крепкие.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959938
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"iscrafm" <nospam@sql.ru>; wrote in message news:3084895@sql.ru...

Hi!

> Потому что одно дело, когда ты опозорился и растворился.
> А другое дело - компания. Для этого нужно тылы иметь крепкие.

Ниасилил. Как ссылка на сайт компании помогает не опозориться?
Позоритесь пока только Вы. Вместо аргументов сплошные ссылки
на собственную крутизну и требование денег. В FIDO много лет
назад это называлось "оппонент классически слил".
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959949
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
Вместо аргументов сплошные ссылки
на собственную крутизну и требование денег. В FIDO много лет
назад это называлось "оппонент классически слил".

А что такое собственная крутизна? Я такого не знаю :) Я Вам дал пример безапеляционного спора, как раз с подчеркиванием аппонентом крутизны. В этом примере, кстати, ссылка на "офисную систему", в которой отчеты получаются без хождения по кругу xml-xslt-xslfo-pdf...
Насчет денег.. :) Я не требую, а предлагаю за Вас выполнить работу. Вы же не хотите самостоятельно разобраться в том, как обходятся без блокировок (по правде сказать ситуации блокировки конечно же есть. Но они настолько мизерны, что о них не говорят), просите дать какой-либо пример. Да еще и с апломбом утверждаете что это миф :). По этому поводу я уже сказал. У меня нет времени и желания показывать как работают системы с интенсивным обновлением данных. Если Вы еще классически не слили, то давайте аргументы, а не начитку про уровни изоляции. И не употребляйте "нет блокировок - нет транзакций". Для технического специалиста не солидно. Хотя длинном тексте все таки есть строки со смыслом, например "один пакет, одна транзакция". Удивительно, что Вы много времени уделили обратному варианту. При подключении к серверам открываете транзакции, а потом неспешно занимаетесь своими делами? :)

Dmitry V. LiseevКак ссылка на сайт компании помогает не опозориться?
Прибавляет ответственности. Если что-то утверждаешь, то будь готов показать.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959960
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭлементарно доказать, что если СУБД не поддерживает
блокировок, то она не поддерживает транзакций. Примером
LOCK-FREE является MS Access.

Бред
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33959964
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил авторЭлементарно доказать, что если СУБД не поддерживает
блокировок, то она не поддерживает транзакций. Примером
LOCK-FREE является MS Access.

Бред
Автор просто примеряет свои подходы к проектированию PDM системы на все, что под руку попадется.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960008
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmАвтор просто примеряет свои подходы к проектированию PDM системы на все, что под руку попадется.Ну вот видите, только я тут нарисовался, еще и слова не сказал, как меня уже узнают ;) И без всяких ссылок на сайт конторы. Мир тесен, однако. Проектировщиков PDM систем в мире не так много. И 1С пробовала уже на этот рынок сунуться, обкакалась и свинтила, и SAP R/3 попробовала с аналогичным результатом. Так что метод "опозорился и растворился" мне по-любому не поможет.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960078
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevНу вот видите, только я тут нарисовался, еще и слова не сказал, как меня уже узнают ;) И без всяких ссылок на сайт конторы. Мир тесен, однако. Проектировщиков PDM систем в мире не так много. И 1С пробовала уже на этот рынок сунуться, обкакалась и свинтила, и SAP R/3 попробовала с аналогичным результатом. Так что метод "опозорился и растворился" мне по-любому не поможет.
Не льстите себе. Узнать кто Вы есть не составляет труда, как впрочем и многих участников форума. Проектировщиков систем документооборота в мире навалом. А Вам советую кругозор по СУБД расширять чтобы не нести чепуху про Access и транзакции.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33960085
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет SAP Вы конечно загнули Их PLM система (надеюсь разницу между PDM и PLM знаете) третья в мире. А вот SWR-PDM что-то не видно. Данные 2004 года, но вряд ли что-то поменялось.

p.s.
Завышенная самооценка однако. Кто-то тут говорил о "собственной крутости"?
...
Рейтинг: 0 / 0
Вопросы по реализации 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
Вопросы по реализации 3-х звенного приложения...
    #33966904
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Метапрограммист softwarerВ силу этих соображений явление пророка, готового показать легкую дорогу......
Видите ли, Автор топика избрал построение приложения самостоятельно, без использования платформ сторонних производителей.
Не вижу оснований для такого суждения. Хотя не скажу что так уж внимательно читал топик. Сколь помнится, ему чем-то не понравился COM, и он хотел использовать не то MIDAS, не то какие-то дельфовые инструменты той же серии. Полагаете, это не есть платформа?

МетапрограммистОтсюда я делаю вывод, что у него очень много энергии и сил, а раз так, то хватит осилить и правильную дорогу,
Безусловно. Несмотря на то, что например корпорации Oracle сил на эту правильную дорогу не хватает, и последние несколько лет она с оной слезает, Вы уверены, что она правильная, и готовы рискнуть силами и средствами Автора. Уважаю.

МетапрограммистДругими словами я говорю как бы сделал я на его месте. Я уверен что я знаю как сделать правильно и я могу это доказать.
То есть, Вы так не делали, я правильно понимаю?

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

Вы видимо не поняли, что говорил автор. Он похоже имел в виду, что при отсутствии блокировок (а ведь с этого все началось?) возможна ситуация, что 2 юзер сумеет прочитать незакомиченные 100$. И предлагал объяснить, как с этой проблемой справляются безблокировочники (если они есть в природе).

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

А что здесь нелогичного? И как нужно делать?
Пользователь пытался положить деньги на счет, они до туда дошли (но не закомитились), сработал какой-нибудь триггер, реализующий хитрую бизнес-логигу, в это время второй пользователь прочитал значение суммы на этом счете (возникло грязное чтение - блокировки-то нет!), а после этого триггер выявил нарушение бизнес-правил и инициировал откат транзакции.
Т.е. пользователи не "открывали транзакцию, потом что-то думали, потом откатывали". Каждый из них просто нажал на свою кнопку - первый на "положить деньги", втотрой на "снять деньги". Они знать не знают ни про какие транзакции, вернее в их понимании "транзакция" - это операция со счетом как объектом реального мира. Другое дело, что пример не очень удачен. Со складом наверное было бы ближе к жизни.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33967702
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nonsens
согласен. Пока никто не показал, как работает безблокировочник - БД.
Блокировочник SQL Server я знаю как работает - повышаем уровень изолированности транзакции - следовательно в чё-то теряеи (за бесплатно ничего нет).
Так же как и реализация своими ручками механизма транзакций (вместо СУБД) на среднем-третьем звене.

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

Блокировки - одно. Грязное чтение - совсем другое. В общем случае они никак не связаны.

NonsensИ предлагал объяснить, как с этой проблемой справляются безблокировочники (если они есть в природе).
Хм. А зачем справляться с проблемой, которая не возникает?

Допустим, я в молодости (в 97-м году) писал безблокировочник, где такой проблемы не то что не было, а архитектурно не могло возникнуть. То есть там грязное чтение было технически невозможно.

NonsensА что здесь нелогичного? И как нужно делать?

(возникло грязное чтение - блокировки-то нет!)
И откуда оно возникло? Святым духом? Вот это и нелогично.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33967786
Nonsens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer NonsensВы видимо не поняли, что говорил автор. Он похоже имел в виду, что при отсутствии блокировок (а ведь с этого все началось?) возможна ситуация, что 2 юзер сумеет прочитать незакомиченные 100$.
Угу. А еще возможна ситуация, что юзер сумеет прочитать незакоммиченные $100 из-за ошибки софта БД. И это равно вероятные ситуации.

Это должна быть какая-то совсем самопальная СУБД, я полагаю.

softwarer
Блокировки - одно. Грязное чтение - совсем другое. В общем случае они никак не связаны.

Не вполне согласен. Скажем так, с проблемой грязного чтения можно бороться и блокировками в том числе.

softwarer
NonsensИ предлагал объяснить, как с этой проблемой справляются безблокировочники (если они есть в природе).
Хм. А зачем справляться с проблемой, которая не возникает?

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

softwarer
Допустим, я в молодости (в 97-м году) писал безблокировочник, где такой проблемы не то что не было, а архитектурно не могло возникнуть. То есть там грязное чтение было технически невозможно.

Вы сервер БД самостоятельно писали (без сарказма, искреннее любопытство)?

softwarer
NonsensА что здесь нелогичного? И как нужно делать?
(возникло грязное чтение - блокировки-то нет!)
И откуда оно возникло? Святым духом? Вот это и нелогично.
Повторю, возникло по мнению автора .
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33967954
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nonsens
Вы видимо не поняли, что говорил автор.


Я понял :). Это Автор не понял, что имеется ввиду под lock-free архитектурой, раз привел указанный текст в качестве примера.


Nonsens
А что здесь нелогичного? И как нужно делать?
Пользователь пытался положить деньги на счет, они до туда дошли (но не закомитились), сработал какой-нибудь триггер, реализующий хитрую бизнес-логигу, в это время второй пользователь прочитал значение суммы на этом счете (возникло грязное чтение - блокировки-то нет!), а после этого триггер выявил нарушение бизнес-правил и инициировал откат транзакции.


Грязное чтение само по себе не возникает . Его инициируют. Пользователь естественно не знает про транзакции, зачем ему это. Но в любом случае он должен прочитать commited сумму. В случае с блокировкой он ждет, пока она будет таковой, в случае lock-free или версионника, получит слепок базы без этой суммы.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33967967
Nonsens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, все и разъяснилось. Я только не понял про lock-free. С блокировочниками и версионниками все ясно, а где можно про lock-free почитать?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33967975
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 Пока никто не показал, как работает безблокировочник - БД.

Petro123, я давал ссылки. Не переписывать же сюда все принципы, можно же и почитать. На всякий случай повторяю: это ссылка на документ по одному из lock-free серверу БД . PDF, 400k. Читать детали с 12-й страницы.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33968180
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm Petro123 Пока никто не показал, как работает безблокировочник - БД.

Petro123, я давал ссылки. Не переписывать же сюда все принципы, можно же и почитать. На всякий случай повторяю: это ссылка на документ по одному из lock-free серверу БД . PDF, 400k. Читать детали с 12-й страницы.
я тебя понял, что "на пальцах" ЭТО не объяснить.
В своё время изучил блокировочник, думал "на халяву" кто объяснит "версионник".

ЗЫ. Версионник это Oracl + какие ещё БД?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33968213
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123я тебя понял, что "на пальцах" ЭТО не объяснить.
В своё время изучил блокировочник, думал "на халяву" кто объяснит "версионник".

ЗЫ. Версионник это Oracl + какие ещё БД?
:) Насчет "пальцев" ты прав. Много технических тонкостей, не все из них открыты.
К версионникам себя относят Oracle, PostgreSQL, MySQL(InnoDB), IB...
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33968392
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NonsensЭто должна быть какая-то совсем самопальная СУБД, я полагаю.
Ключевая фраза: вероятность того и другого события в общем случае одинаковы. Because оба означают ошибку в софте БД.

NonsensНе вполне согласен. Скажем так, с проблемой грязного чтения можно бороться и блокировками в том числе.
Можно. Но это далеко не единственный способ.

NonsensАвтор предположил, что такая проблема в безблокировочнике может возникнуть, и предложил аргументированно опровергнуть.
Это не есть корректный подход. Точно так же я могу предположить, что в продукте X нельзя решить задачу Y с производительностью хотя бы в 10% от возможной при решении продуктом Z. Ну и предложить всем сомневающимся аргументированно опровергнуть. В силу неконструктивности такого подхода в серьезном разговоре он не употребляется; вместо этого принято, что каждый аргументирует то, что пытается "предположить".

NonsensВы сервер БД самостоятельно писали (без сарказма, искреннее любопытство)?
Не сервер. Там был довольно необычный проект, я затруднюсь парой слов обрисовать его архитектуру. Скажем так, проект включал в себя специализированную распределенную БД.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33968463
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm Petro123я тебя понял, что "на пальцах" ЭТО не объяснить.
В своё время изучил блокировочник, думал "на халяву" кто объяснит "версионник".

ЗЫ. Версионник это Oracl + какие ещё БД?
:) Насчет "пальцев" ты прав. Много технических тонкостей, не все из них открыты.
К версионникам себя относят Oracle, PostgreSQL, MySQL(InnoDB), IB...
так я и понял :)) - поздно :).
Я уже подсел на иглу от MS.
IMHO
1. Блокировки не по теме топика.
2.
Блокировочник СУБД <---> Версионник СУБД то же самое что:
Intel <---> AMD то же самое что:
Windows <---> Линукс то же самое что:
На марсе есть жизнь <---> На марсе нет жизнь то же самое что:
..........
3-е звено нужно <---> 3-е звено НЕнужно
.......

Удачи автору!
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33969439
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ro-man" <nospam@sql.ru>; wrote in message news:3092236@sql.ru...

Hi!

> Дмитрий, Вы получили почту от меня или нет?

Получил. Сочиняю ответ. Сорри, что так долго.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972500
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Метапрограммист" <nospam@sql.ru>; wrote in message news:3092280@sql.ru...

Hi!

> Для этого нужно написать свой интерпретатор. При всем страшном
> слове "написать свой интерпретатор" стоит это достаточно мало.
> Если интересно могу даже сказать почему...

Предположим, уже написан еще в 1965 году и полностью устраивает.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972501
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"softwarer" <nospam@sql.ru>; wrote in message news:3090867@sql.ru...

Hi!

> Кстати, "ради искусства" я возьмусь реализовать Ваш простой
> пример одним SQL-оператором.

Реализуйте. Я придумаю еще пример, потом еще, который Вы
рано или поздно не сможете реализовать одним оператором.
Я всего лишь утверждаю, что такие сложные задачи существуют.
Это не значит, что задачи "неправильные" или заказчики
"неправильные". Просто большинство разработчиков с такими
задачами не сталкивалось и их вполне устраивает работа
с сервером через SQL. А у меня таких задач - в полный рост.
Вот iscrafm уже все разведал и представляет, о чем я говорю.

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

Строго говоря, если расшифровывать абревиатуру "SQL",
заглядывая в словарь, то query - вопрос, сомнение. Однако,
его никто почему-то не переводит, как "язык вопросов".
Тем не менее, операторы модификации определены именно
в стандарте на этот язык, как часть языка.

А вот request - просьба, требование, запрос, заявка. Известный
еще из радиосвязи термин "request/response", обозначающий
способ общения между сервером и клиентом обычно переводят,
как "запрос/ответ". Например, есть "HTTP Request", в результате
выполнения которого может произойти модификация данных.
Не вижу ничего грешного в том, чтобы запрос на изменение
данных называть именно "запросом", учитывая что термин
"change request" довольно распространен. Так что кроме
"SELECT FROM" в нашем очень разнообразном мире много
всяких "запросов" бывает.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972502
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"!!!" <nospam@sql.ru>; wrote in message news:3096648@sql.ru...

Hi!

> Открою Вам страшную тайну - такой язык уже есть. Более того,
> он довольно широко распространен и худо-бедно стандартизирован
> - это Язык Структурированных Запросов. Ну и интерпретаторы этого языка
> тоже имеют место быть - про СУБД, надеюсь, слыхали?

Открою еще более страшную тайну: есть и другие.

Причем реализованные еще в районе 1965 года.
То есть за 5 лет до публикации Коддом своей знаменитой
статьи по реляционной логике. И за 10 лет до появления
первых попыток ее реализации в языке SEQUEL на
системе IBM System R, который расшифровывался как
Structured English Query Language, и был переименован
в SQL только потому, что возник конфликт с торговой
маркой одной Британской компании.

А стандарт ANSI X11.1-1977 на него был принят 15 сентября
1977 года. То есть примерно за 9 лет до первых попыток
стандартизации SQL.

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

Так что кругозор развивать полезно.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972583
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"softwarer" <nospam@sql.ru>; wrote in message news:3100192@sql.ru...

Hi!

> Это не есть корректный подход. Точно так же я могу предположить, что
> в продукте X нельзя решить задачу Y с производительностью хотя бы
> в 10% от возможной при решении продуктом Z. Ну и предложить всем
> сомневающимся аргументированно опровергнуть. В силу
> неконструктивности такого подхода в серьезном разговоре
> он не употребляется; вместо этого принято, что каждый аргументирует
> то, что пытается "предположить".

Ну екарный бабай. Все же русским по белому написано Ж:/ Я ничего
не ПРЕДПОЛАГАЛ. Я аргументированно ДОКАЗАЛ, что в операциях
создания/изменения/удаления на "сложных" структурах данных
блокировки неминуемо возникнут даже на версионнике, а если
еще и бизнес-логика "сложная", то блокировки становятся
СУЩЕСТВЕННОЙ проблемой. Я продемонстрировал это
на примере PostgreSQL. Демонстрировать то-же самое на
Oracle, Interbase и всем остальном не вижу смысла. Так что
о каких-то конкретных продуктах речи не было. Где тут
неконструктивность подхода?

Это iscrafm ПРЕДПОЛОЖИЛ существование серверов, которые
данную задачу могут решать без блокировок. Но от аргументации
публично отказался. Потому это так и осталось ПРЕДПОЛОЖЕНИЕМ.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972584
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Petro123" <nospam@sql.ru>; wrote in message news:3100355@sql.ru...

Hi!

> 1. Блокировки не по теме топика.

Блокировки ровно по теме топика. Топик называется
"Вопросы по реализации 3-х звенного приложения...".
Я утверждал, что в задачах со "сложными" структурами
данных и "сложной" бизнес-логикой блокировки являются
СУЩЕСТВЕННЫМ фактором, ограничивающим
масштабируемость и производительность информационных
систем. Причем, принципиально неустранимым фактором.
И как раз грамотный выбор архитектуры на основе трехзвенок
(N-звенок) помогает как можно ближе подобраться
к теоретическому пределу масштабируемости в таких задачах.

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

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

Так что если проблема блокировок никому больше не интересна,
то можно завязать на этом.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972585
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"iscrafm" <nospam@sql.ru>; wrote in message news:3099397@sql.ru...

Hi!

> Грязное чтение само по себе не возникает. Его инициируют.

Какое откровение. В мире вообще само по себе мало что
возникает.

> В случае с блокировкой он ждет, пока она будет таковой,
> в случае lock-free или версионника, получит слепок базы без этой суммы.

И какой ему толк от слепка базы с закоммиченными данными
на начало транзакции? Можно включить воображение и представить
те-же яйца, только в профиль. На счете изначально было 100 баксов.
Тыща юзеров одновременно стартовали свои транзакции
из разных банкоматов и попытались снять по 80 баксов. В слепке
базы на начало каждой транзакции будет остаток в 100 баксов,
в итоге каждый благополучно возьмет бабки. Вопрос в том, что
будет при коммите всех транзакций. 20 баксов в остатке?
А если хоть одна откатилась, то остаток опять на 100 вернется?

Строго говоря, тут речь идет (как и в предыдущем моем примере)
не о "грязном чтении", а о "грязной записи". То есть попытке изменить
незакоммиченные данные. Собственно, именно при "грязной записи"
транзакции оказываются невозможными, поскольку возникает
логическое противоречие с самим определением "транзакции".
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33972595
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
Это iscrafm ПРЕДПОЛОЖИЛ существование серверов, которые
данную задачу могут решать без блокировок. Но от аргументации
публично отказался. Потому это так и осталось ПРЕДПОЛОЖЕНИЕМ.

Во-первых я не предполагаю. Если предполагаю, то так и говорю: по моему предположению... и т.д. Во-вторых, статья о том, как это работает выше в топике. Не пойму что Вы хотите? Чтобы я перевел на русский? Вы в примере открыли транзакцию и начали неспешно баловаться операторами. Так не нужно делать. К тому же Вы судя по всему не разделяете совсем читателей и писателей.

Dmitry V. LiseevЯ прекрасно понимаю, что большинство никогда не столкнется
с проблемой, когда на ориентированном графе в 5 млн. вершин и
100 млн. ребер нужно найти все контуры не более, чем за полсекунды,
при условии, что 1000 юзеров одновременно в этом графе что-то меняют.
Это где такое? Я даже когда прогнозами погоды занимался не доходил до 100 млн. ребер, одновременно двигаемых 1000 пользователями. Может стоит логику пересмотреть? А то и Deep Blue не хватит.

Dmitry V. LiseevНа счете изначально было 100 баксов.
Тыща юзеров одновременно стартовали свои транзакции
из разных банкоматов и попытались снять по 80 баксов. В слепке
базы на начало каждой транзакции будет остаток в 100 баксов,
в итоге каждый благополучно возьмет бабки. Вопрос в том, что
будет при коммите всех транзакций. 20 баксов в остатке?
А если хоть одна откатилась, то остаток опять на 100 вернется?
А еще может быть 360 билетов, которые хотят выкупить 1000 пассажиров и что? Ради интереса, хотя бы визуально посмотрите как работает Сирена. И над темой коротких транзакций имхо стоит задуматься.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33973420
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все это обсуждение, мне напоминает как один человек пытался проектировать систему следующим образом:

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

авторИмеем, к примеру, диалоговое окно для редактирования
некого документа. Имеем в этом окне список позиций.
Добавляем позицию, делаем сопутствующие изменения в
ряде таблиц (усугубим и допустим, что триггеров нет).
И после этого мечтаем отменить сделанные на данном
диалоговом шаге изменения.
Перед открытием окна естественно открывалась транзакция. :)
можно усугубить и пойти на обед, к примеру, пока транзакция открыта.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33973637
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123можно усугубить и пойти на обед, к примеру, пока транзакция открыта.
Это была цитата из старого сообщения на GotDotNet. Такой аргумент ему тоже приводился :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33974639
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmвсе это обсуждение, мне напоминает как один человек пытался проектировать систему следующим образом:

авторИмеем, к примеру, диалоговое окно для редактирования
некого документа. Имеем в этом окне список позиций.
Добавляем позицию, делаем сопутствующие изменения в
ряде таблиц (усугубим и допустим, что триггеров нет).
И после этого мечтаем отменить сделанные на данном
диалоговом шаге изменения.
Перед открытием окна естественно открывалась транзакция. :)
Это напомнило мне, как некто Merle пытался доказать мне, что спроектированная таким образом система нигде, никогда и ни при каких условиях не сможет нормально работать.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33974892
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто напомнило мне, как некто Merle пытался доказать мне, что спроектированная таким образом система нигде, никогда и ни при каких условиях не сможет нормально работать.
А Вы считаете, что будет нормально работать? Мне даже тяжело представить при каких условиях.. хм.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975142
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmА Вы считаете, что будет нормально работать?
Я не "считаю" а "знаю, посколько делал и видел результаты".

iscrafmМне даже тяжело представить при каких условиях.. хм.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975200
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Я не "считаю" а "знаю, посколько делал и видел результаты".

Все таки хотел бы уточнить. :) Вы делали систему в которой при открытии документа на редактирование или при создании нового открывалась транзакция, пользователь вводил документ и потом подтверждал или откатывал транзакцию. При этом система была многопользовательская, не возникало никаких конфликтов, не приходилось бегать на сервер снимать блокировки, пользователи не отлетали или если отлетали система откатывала сама транзакции и т.п. Т.е. поточнее, если не трудно. Можно просто ответить Да или Нет.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975249
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmВы делали систему в которой при открытии документа на редактирование или при создании нового открывалась транзакция, пользователь вводил документ и потом подтверждал или откатывал транзакцию. При этом система была многопользовательская, не возникало никаких конфликтов,
Да. Сообщение "нельзя редактировать документ, так как его сейчас редактирует пользователь XYZ", полагаю, к конфликтам не относится.

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

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

iscrafmпользователи не отлетали
Ээ.. нет, а куда и зачем?

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

iscrafmили если отлетали система откатывала сама транзакции
Если по каким бы то ни было причинам отлетает пользовательская сессия, разумеется транзакция откатывается и все ее блокировки снимаются. Имхо это штатная функциональностью любого сервера; я удивлюсь, если где-то иначе.

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

Других методов я практически не встречал. Пару раз было, что промежуточные сохранения шли во вспомогательную таблицу, не путаясь с основной. Это было в случае больших справочников, например прайс-листов, когда требовалось подготовить новую редакцию, не мешая предыдущей. Но это с моей точки зрения не столько правильное решение, сколько "добавление изначально не предусмотренной фичи".
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975420
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПару раз было, что промежуточные сохранения шли во вспомогательную таблицу, не путаясь с основной. Это было в случае больших справочников, например прайс-листов, когда требовалось подготовить новую редакцию, не мешая предыдущей. Но это с моей точки зрения не столько правильное решение, сколько "добавление изначально не предусмотренной фичи".
:) тоже так делали. Оказалось удобно. Есть таблица с действующим прайсом. Есть отдельно журнал прайсов. Прайсов в этом журнале много, для разных случаев. Наступил сезон, выбрали прайс из журнала, сказали Применить. Закончился - выбрали другой и опять Применить. Отгрузка работает с действующим прайсом. Хотя можно конечно отдельную таблицу и не делать, но она просто индексирована отличным от журналов способом.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975439
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmОказалось удобно. Есть таблица с действующим прайсом. Есть отдельно журнал прайсов. ...... Хотя можно конечно отдельную таблицу и не делать, но она просто индексирована отличным от журналов способом.
Я бы сказал, если изначально проектировать это место, должен быть журнал прайсов, а текущий прайс, если к нему стоит выдвинуть особые требования, можно оформить как materialized view.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975490
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Я бы сказал, если изначально проектировать это место, должен быть журнал прайсов, а текущий прайс, если к нему стоит выдвинуть особые требования, можно оформить как materialized view.
Эт понятно. MS SQL :)
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33975496
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю. Хотел дописать, но успел отправить сообщение :)

Тут ключевая деталь в логике, в роли этих сущностей. Понятно, что если MV нет, то то же придется делать таблицей. Но первичен именно "список прайсов". "Текущий прайс" - вспомогательный, вторичный объект, который может быть реализован как обычный view, может еще как-нибудь.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33979062
Dmitry V. Liseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"!!!" <nospam@sql.ru>; wrote in message news:3092130@sql.ru...

Hi!

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

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

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

Чего я передергиваю? Да, для чтения тоже такая проблема
существует. Например, у меня есть права доступа. Юзер
может иметь запрет на операцию, разрешение на операцию.
Либо и то и другое, либо ни того ни другого. Юзер может
входить в несколько групп или ни в одну. Та группа тоже
может входить в несколько групп или ни в одну. То есть,
имеем ориентированный граф в общем случае с циклами,
но без контуров. Группы аналогично имеют булевый
флаг разрешения и булевый флаг запрета для каждой
из возможных операций. Это была дискреционная схема.
Есть еще мандатная. Каждый юзер и группа имеют уровень
допуска, а каждая строка таблицы - гриф секретности.

А теперь вопрос, как выяснить с помощью всего одного SQL
запроса, можно ли юзеру в итоге выполнять операцию,
к примеру, на чтение строки в таблице или нельзя ее
выполнять? А делать это нужно для каждой строки каждой
таблицы, участвующей в транзакции. Если, к примеру,
при изменении кучи строк в транзакции мы на самой последней
строке нарываемся на запрет изменения, то вся транзакция
должна быть откачена.

> Можно было бы просто отослать вас к RTFM, но, поскольку мы
> не обсуждаем достоинства и недостатки конкретных серверов
> БД, скажу только о том, что существуют СУБД, позволяющие
> отложить декларативную проверку целостности на конец транзакции.

А какая разница, в начале, в середине или в конце? Важно,
что внутри транзакции. Пока транзакция не завершена,
блокировки удерживаются. А когда транзакция завершилась,
то уже поздно что-то проверять.

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

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

Они у меня длинные просто по факту. По самой постановке
задачи. Пример с вводом накладной я уже приводил. Сложные
проверки логической целостности - еще один фактор влияющий
на количество операций внутри транзакции и ее длительность.
Пример с проверками прав доступа я только-что привел. И это
у меня еще цветочки.

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

Согласен. Не очевидно. Тогда говорим прямое требование
заказчика. В накладной не должно быть только заголовка
или "порций". Либо все целиком, либо ничего. И уже из
этого требования вытекает очевидность использования
одной транзакции.

> Так-так, ну ка, расскажите нам поподробнее о масштабировании,
> особенно в случае самописного сервера приложений, написанного
> на скриптовом языке, желательно в сравнении, скажем,
> с возможностями масштабирования Oracle 10g

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

> Измененный заказчиком функционал, обеспечивающий процессы
> заказчика у вас тоже на дистрибутиве?

Вы спросили "а если не отчет", я ответил, что если изменит ядро
системы, то его легко восстановить. За свой специфичный функционал
заказчик отвечает сам. Если заказчик ЕЖЕМЕСЯЧНО платит много денег
- мы берем ответственность и за поддержку его функционала. Однако,
такая модель бизнеса обычно не катит - очень дорого. Дело в том,
что мы вынуждены будем набирать на постоянную работу сотрудников,
которые будут решать мелкие проблемы этого заказчика раз в год-полгода,
но платить им надо ежемесячно. Спрашивается, зачем, если у заказчика
и так существует свой штат специалистов, которые получают
зарплату, работают там постоянно и хорошо знают специфику
своего предприятия? Существует инструмент по созданию
резервных копий не только данных, но и скриптов сервера
приложений. Выгрузил и положил диск в сейф. Если что-то
не работает - обратно поставили предыдущую рабочую версию.

Существует тестовый сервер, на котором любые изменения
сначала обкатываются, а только потом идут в бой. Эта методика
описана в документации и заказчик с ней ознакомлен. И это
не мое изобретение. Так делают во многих сложных системах.

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

Не вижу противоречий. Написать в короткий срок ТЗ
на большую сложную систему масштаба "1C:Бухгалтерия"
действительно не может. Но вполне может высказать
отдельные требования. Добавить пару колонок в отчет
вполне может. Со временем разбирается и начинает
писать свои более сложные отчеты. Просто "написать
отчет" - это предметная область заказчика. Даже я
не смогу написать отчет, пока месяца за полтора
в специфику заказчика не въеду. А "написать ТЗ" - уже
предметная область софтостроителей и тут как раз
заказчику надо будет познавать тонкости проектирования,
изготовления, доводки, обслуживания для софта и т.д.
(чуть не сказал "утилизации", слава богу, что хоть этого
в софтострении нет :) :)
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33979137
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev(чуть не сказал "утилизации", слава богу, что хоть этого
в софтострении нет :) :)

И это есть. :o) Из соображений безопасности носители информации, которая составляет некую тайну должны утилизироваться установленным образом.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33979222
Фотография !!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. LiseevНе понимаю фразы "интерактивный ввод данных". Почитайте Dmitry V. LiseevИ такого оператора представляю легко. Например, накладная приехала от внешней системы и "оператором" является модуль, который ее автоматически вводит в систему.А это называется "пакетный ввод данных" Dmitry V. Liseev В случае любого
сбоя вся транзакция должна откатиться.А масло называется маслом, потому что оно масляное Dmitry V. Liseev Точно так-же человек
у себя локально может набить все нужные позиции. Пусть
отрывается, пообедает, поспит, важно что в систему накладная
должна быть введена или вся целиком или вообще ничего.Совсем недавно Вы тут рассуждали о блокировках, я ничего не путаю? Хотя, проблема не только и не столько в них.
Dmitry V. LiseevЧего я передергиваю? Да, для чтения тоже такая проблема существует. Например, у меня есть права доступа. Юзер
может иметь запрет на операцию, разрешение на операцию.
Либо и то и другое, либо ни того ни другого. Юзер может
входить в несколько групп или ни в одну. Та группа тоже
может входить в несколько групп или ни в одну. То есть,
имеем ориентированный граф в общем случае с циклами,
но без контуров. Группы аналогично имеют булевый
флаг разрешения и булевый флаг запрета для каждой
из возможных операций. Это была дискреционная схема.
Есть еще мандатная. Каждый юзер и группа имеют уровень
допуска, а каждая строка таблицы - гриф секретности.Т.е., помимо того, что Вы предлагаете реализовать дополнительный слой (читай, внести некоторое количество ошибок) между клиентом и СУБД, Вы еще и собственную систему разграничения доступа реализуете? За все эти Ваши художества клиенты безропотно готовы платить? Стандартные, встроенные в приличные СУБД средства Вас не устраивают? Dmitry V. Liseev
А теперь вопрос, как выяснить с помощью всего одного SQL
запроса, можно ли юзеру в итоге выполнять операцию,
к примеру, на чтение строки в таблице или нельзя ее
выполнять? А делать это нужно для каждой строки каждой
таблицы, участвующей в транзакции. Если, к примеру,
при изменении кучи строк в транзакции мы на самой последней
строке нарываемся на запрет изменения, то вся транзакция
должна быть откачена.
Попробуйте почитать о Fine Grained Access Control

Dmitry V. Liseev>...скажу только о том, что существуют СУБД, позволяющие
> отложить декларативную проверку целостности на конец транзакции.

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

Dmitry V. LiseevТакие СУБД существуют, но толку пока мало. Хорошо, что Oracle об этом не знает Dmitry V. Liseev
Если перелопатив
кучу данных мы в самом конце узнаем, что нарушаем
целостность и транзакцию надо откатывать, то
производительности это не прибавляет. Какой смысл
начинать выполнять работу, если еще не известно, имеем
ли мы право ее выполнять? Да, можно начать выполнять, оценив
вероятность успешного завершения, как достаточно высокую.
Но это еще бабушка надвое сказала, сумеет ли планировщик
транзакций правильно предсказать. Процессоры Pentium тоже
умеют переходы предсказывать, только для них очень грамотный
специально заточенный компилятор требуется.Что такое планировщик транзакций? Вы имеете ввиду "менеджер транзакций"?
Dmitry V. Liseev
> И тут все наконец начинают понимать, что Вы пытаетесь
> проектировать системы с длинными транзакциями, а про то,
> что транзакции могут быть короткими, Вы вероятно не слышали.
> Пора в школу

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

Согласен. Не очевидно. Тогда говорим прямое требование
заказчика. В накладной не должно быть только заголовка
или "порций". Либо все целиком, либо ничего. И уже из
этого требования вытекает очевидность использования
одной транзакции."Одна транзакция" <> "длинная транзакция".

Dmitry V. Liseev
> Так-так, ну ка, расскажите нам поподробнее о масштабировании,
> особенно в случае самописного сервера приложений, написанного
> на скриптовом языке, желательно в сравнении, скажем,
> с возможностями масштабирования Oracle 10g

Тут не топик. Масштабируется прекрасно. Именно по сравнению
с ораклом 10g. Как масштабировалась еще за годы до появления
первого оракла. Такова архитектура СУБД, что она изначально
создана под распределенную обработку данных на многих
дешевых серверах, а не на одном крутом SMP-сервере, как
оракл. Потому от одного компьютера, на котором и сервер
данных и сервер приложений и клиентская часть, можно без
особых затрат со временем дойти до конфигурации с десятками
удаленных друг от друга серверов и тысячами клиентов.Итак, Вы утверждаете, что самописная скриптовая прослойка между клиентом и СУБД обеспечивает лучшие показатели производительности при росте количества активных пользователей и объемов базы, чем ведущие СУБД . Я ничего не перепутал и правильно понял Ваши слова? Dmitry V. Liseev> Измененный заказчиком функционал, обеспечивающий процессы
> заказчика у вас тоже на дистрибутиве?

Вы спросили "а если не отчет", я ответил, что если изменит ядро
системы, то его легко восстановить. За свой специфичный функционал
заказчик отвечает сам. Вы подтверждаете, что не занимаетесь поддержкой своего софта. Могу толко порадоваться за Вас
Dmitry V. LiseevЕсли заказчик ЕЖЕМЕСЯЧНО платит много денег
- мы берем ответственность и за поддержку его функционала. Однако,
такая модель бизнеса обычно не катит - очень дорого. Дело в том,
что мы вынуждены будем набирать на постоянную работу сотрудников,
которые будут решать мелкие проблемы этого заказчика раз в год-полгода,
но платить им надо ежемесячно. Спрашивается, зачем, если у заказчика
и так существует свой штат специалистов, которые получают
зарплату, работают там постоянно и хорошо знают специфику
своего предприятия? Существует инструмент по созданию
резервных копий не только данных, но и скриптов сервера
приложений. Выгрузил и положил диск в сейф. Если что-то
не работает - обратно поставили предыдущую рабочую версию.Гм. У заказчика имеются квалифицированные кадры, которые могут сопровождать чужую нетиражную систему? Расскажете, где Вы находите таких заказчиков? Dmitry V. LiseevСуществует тестовый сервер, на котором любые изменения
сначала обкатываются, а только потом идут в бой. Эта методика
описана в документации и заказчик с ней ознакомлен. И это
не мое изобретение. Так делают во многих сложных системах.А это Вы для чего рассказали? Полагаю, что большинство участников обсуждения знают о правилах разработки и внедрения нового функционала в работающую систему. Dmitry V. Liseev> Вы постоянно противоречите самому себе. То вы отдаете
> заказчику все в исходниках - правь-не хочу, то сначала
> заявляете, что заказчик не может написать ТЗ, но пишет
> требования. Вы уж определитесь сначала, какой именно
> линии собираетесь придерживаться в дискуссии
Не вижу противоречий. Написать в короткий срок ТЗ
на большую сложную систему масштаба "1C:Бухгалтерия"
действительно не может. Но вполне может высказать
отдельные требования. Добавить пару колонок в отчет
вполне может. Со временем разбирается и начинает
писать свои более сложные отчеты. Просто "написать
отчет" - это предметная область заказчика. Т.е., Вы абсолютно уверены в адекватности тех изменений, которые вносит IT-служба заказчика? Что у них никогда не возникнет, скажем, декартова произведения и сервер слегка просядет, выбирая миллиарды записей, после чего Вам выскажут много теплых слов о качестве Вашей разработки? Ах да, Вы уже говорили, что не занимаетесь поддержкой, да и разработкой тоже, все проблемы Ваших заказчиков будут решать простые разработчики Dmitry V. LiseevДаже я
не смогу написать отчет, пока месяца за полтора
в специфику заказчика не въеду."Даже я" - не слишком высокая самооценка?
Dmitry V. Liseev А "написать ТЗ" - уже
предметная область софтостроителей и тут как раз
заказчику надо будет познавать тонкости проектирования,
изготовления, доводки, обслуживания для софта и т.д.
(чуть не сказал "утилизации", слава богу, что хоть этого
в софтострении нет :) :)Ну да, ТЗ это же не требования, поэтому их должен писать... хм... тоже заказчик.
Попробую свести в кототенький список:
1. Заказчик формулирует требования в таком виде, что их можно реализовать, ничего не додумывая и не уточняя
2. По этим требованиям Заказчик (его IT-служба) разрабатывает функционал
3. Разработанный функционал внедряет Заказчик совмесно с Разработчиком, которым является IT-служба Заказчика
4. Поддержкой занимается кто? Правильно, опять Заказчик

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

Может быть Вы приведете примеры успешных внедрений, тогда вопросы отпадут сами собой.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #33981277
Nonsens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry V. Liseev
На счете изначально было 100 баксов.
Тыща юзеров одновременно стартовали свои транзакции
из разных банкоматов и попытались снять по 80 баксов. В слепке
базы на начало каждой транзакции будет остаток в 100 баксов,
в итоге каждый благополучно возьмет бабки. Вопрос в том, что
будет при коммите всех транзакций.

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

А колизии на предмет чего? Нуля на счете? Или на нем больше должно остаться (страховая сумма)? Откуда сервер знает какая? Или какая ещё транзакция пишет туда же? Её подождать (блокировка)? Да и как выяснить в процессе какой произойдет запись в ту же строку?
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #34054578
Nonsens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Е.А колизии на предмет чего? Нуля на счете?
На предмет того, что с момента начала работы транзакции с записью ее версия не изменилась. Это мое предположение, я версионников в глаза не видел.
...
Рейтинг: 0 / 0
Вопросы по реализации 3-х звенного приложения...
    #34056524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nonsensя версионников в глаза не видел.
+ 1 )))))))
я тоже пока :)
...
Рейтинг: 0 / 0
141 сообщений из 141, показаны все 6 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Вопросы по реализации 3-х звенного приложения...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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