| 
	 | 
| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			задача насколько абстрактная, настолько же реальная 
		
		
		
		
		
		
		
	сеть из 100 магазинов, 100 пользователей через терминал подключаются к базе Navision (Nav4SP3 SQL2005). Основная деятельность - учет товародвижения (транзитные перемещения, реализация, инвентаризация) Скорость учета док-та из 1000 строк в монопольном режиме 1,5 минуты Перемещения (3-5 по 50 строк в день )учитываются равномерно в течении рабочего дня реализация (1 док-т 50 строк) всеми - с 9 до 11 каждый день Как бы проверить - а будет ли работоспособна вся эта кухня ?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А может все-таки попытаться "разнести" на разные сервера? И я не представляю себе какой именно сервер нужно будет соорудить, чтобы 100 Терминальных сессий нормально работали даже на 2003. Цитата: 
	
		
			Основная деятельность - учет товародвижения (транзитные перемещения, реализация, инвентаризация) 
Скорость учета док-та из 1000 строк в монопольном режиме 1,5 минуты Перемещения (3-5 по 50 строк в день )учитываются равномерно в течении рабочего дня реализация (1 док-т 50 строк) всеми - с 9 до 11 каждый день Как бы проверить - а будет ли работоспособна вся эта кухня ? И при этом "отключить" или переделать всякого рода аналитики и переименовки. А так же провести в соответствие последовательность заполнения полей. А потом еще провести, по модному щас скажу, тюнинг самого SQL. А если этого не сделать - будут ну просто постоянные блокировки. {аж страшно представить себе какие}  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
А вот одновременный учет стольких документов.... Хм.. интересно.. А за какой период они должны все это учесть? Т.е. насколько важно учесть реализацию в 10 утра, а не в час ночи Я бы предложил повесить весь учет на NAS, а менеджеры собственно проставляли бы тогда "галочки", какие документы учитывать. И блокировок не будет   Надо будет еще оперативно рассылать сообщения юзерам, что у них в документе ошибка. В итоге вопрос сведется к необходимости "неотложного" учета и далее скорости учета через NAS
		 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Fordewind
			 
 
			В этом то как раз не проблема... отдельный терминальный сервак с 12 - 16 Гиг оперативки и запуском Nav (без рабочего стола). 
		
	А вот одновременный учет стольких документов.... Хм.. интересно.. А за какой период они должны все это учесть? Т.е. насколько важно учесть реализацию в 10 утра, а не в час ночи Я бы предложил повесить весь учет на NAS, а менеджеры собственно проставляли бы тогда "галочки", какие документы учитывать. И блокировок не будет   Надо будет еще оперативно рассылать сообщения юзерам, что у них в документе ошибка. В итоге вопрос сведется к необходимости "неотложного" учета и далее скорости учета через NASА вто про отложенный пакетный учет оч-ч-ч-ень интересно, это не с той же оперы когда народ учет перелопатил все проверки перед учетом отдельно, а пакетный учет отдельно ? Не совсем правда понятно как быть, если 1 яблоко на остатке, а двоим жаждущим (учесть) проверка сначала скажет, что нормуль - можете забирать, а ночью одного пошлет - извините - нема уже.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
но этих блокировок будет на порядок меньше, если они вообще возникнут  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
По поводу MERGE-репликации (по описанию вроде как напоминает это "ВСЕ-ВСЕМ") - по моему мнению не очень правильно. Так как я не знаю всех тонкостей, то могу только предположить, что основные справочники например, товары, должны быть введены в основную БД, а потом реплицироваться. Далее транзиты можно реплицировать по определенному справочнку (небольшая доделка на триггерах). Можно попытаться продумать многоуровнеую звезду, если все завязано на регионах. Продажи можно собирать в ЦО и центральном офисе. P.S. Вы сможете гарантировать себе, что связь у Вас не пропадет ни при каких обстоятельствах?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
всем все (справочники, учетные записи постановки на транзит, документы для учета) выгрузи, умножаем на 50 реальных и процесс уже с трудом умещается в рамки светового дня. А ожидается еще 50 .. Модный "Тюнинг Sql" уже юзается.. Как выход такая вот задумка с терминальной работой  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Резервирование используйте.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Want to believe...  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не думаю если за учет будет отвечать отдельный процесс (NAS) или учет будет происходит по вечерам.  
		
		
		
		
		
		
		
	Если все же возникнут проблемы с блокировками с ними гораздо проще бороться нежели с блокировками при учете. Вплоть до разделения диапазонов Entry No. в Reservation Entry для филиалов (если каждый филиал будет отгружать со своего склада).  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Вот именно, - когда начнут все эти 100 пользователей колбасить заказы, то мы просто получил залоченную 337 таблицу! Цитата: 
	
		
			Если все же возникнут проблемы с блокировками с ними гораздо проще бороться нежели с блокировками при учете.
		
	 
Можно еще много чего придумать под требования. Цитата: 
	
		
			Вплоть до разделения диапазонов Entry No. в Reservation Entry для филиалов (если каждый филиал будет отгружать со своего склада).
		
	 
 | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Но даже если и без - Locktable на резервировании будет мешать снятие резервов. Вывод - при одновременном учете и резервировании вероятность блокировать увеличивается. Цитата: 
	
		
			Сообщение от RedFox
			 
 
			Ну возможно вообще создать временную таблицу со строками, связанными с 37, 5740 и просто заносить туда строки с товарами,  
		
	которые еще можно продавать. И при этом производить сравнение наличия и резерва. А потом уже, отдельным процессом все скопом резервировать.. Можно еще много чего придумать под требования. Интересное решение  . Яблок конечно всем хватит.. но токо до момента учета  . Или есть способ юзеру залесть во временную таблицу другого юзера? В противном случае чем Ваше предложение отличается 32 таблицы (Positive=true - товар которые еще можно продавать) + 337 - резервы на эти товары? [quote=RedFox;364169] А зачем разделять там по диапазонам, если там все под Заказы и так разделяется? [quote=RedFox;364169] К сожалению (или счастью?) номера документа не включен в PK 337 таблицы. Напоминаю тему обсуждения - уменьшить вероятность блокировок. Поясняю свою мысль: 1. Принимаем решение - разделяем 337 на диапазоны по филиалам А - 0..1000000 Б - 10000000..20000000 2. Везде в резервировании заменяем код поиска последнего Entry No. с одновременной блокировкой таблицы (LockTable; Find('+); ) на примерно след. (setfilter("Entry No.", GetFilialFilter); :Locktable; Find('+')); Что получили А и Б одновременно резервируют A: setfilter(0..1000000); find('+'); последняя запись 300 (только ее и (или) на Сиквеле экстент залочит сервер) Б: setfilter(1000000..2000000); find('+'); последняя запись 10000500 (только ее и (или) на Сиквеле экстент залочит сервер) А и Б мешать друг другу не будут. Заметьте - другие пользователи из филиалов буду ждать освобождения своих диапазонов. Вывод: У каждого филиала 337 таблица будет залочена только в своем диапазоне (кроме случаев когда последние записи 2 филиалов будут в одном экстенте - такое будет только при небольшом числе записей в 337, обойти можно также вставив пустышки) и возможно одновременное резервирование Ремарка про склад - locktable все же хорошая функция, позволяет не зарезервировать 2 раза один и тот же товар.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Итак однозначно проблемы будут с блокировками (без переделки) и не факт ,что юзвери в конец не озвереют от постоянных зависаний 
		
		
		
		
		
		
		
	проверить эмпирически не представляется возможным,а опыт подобного у кого-либо нет...  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			С диапазоне уже работаем, каждый работает в своем и всё это сливается в общую базу. Кстати проверяли на одновременный учет - был достигнут немного нестандартным способом. Допустим  База общая + две базы Магазин1 и магазин 2. Убиваем в магазине учетные таблицы 
		
		
		
		
		
		
		
	32, 5802 и т.д. Делаем View этих таблиц, берущую нужный диапазон соответствующей таблицы из общей базы и вуаля- все работает. счастье возможно, но если сделать общим справочник Item надо отключать коррекцию себестоимости в карточке иначе лочка во базе где используется View надо либо убрать все sift-поля, либо на все делать view И счастье заканчивает как только общей становится 83 таблица, где записей мало и лочка цепляет "соседа"  | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от dmites
			 
 
			С диапазоне уже работаем, каждый работает в своем и всё это сливается в общую базу. Кстати проверяли на одновременный учет - был достигнут немного нестандартным способом. Допустим  База общая + две базы Магазин1 и магазин 2. Убиваем в магазине учетные таблицы 32, 5802 и т.д. Делаем View этих таблиц, берущую нужный диапазон соответствующей таблицы из общей базы и вуаля-  все работает. счастье возможно, но 
		
	  Цитата: 
	
		
			если сделать общим справочник Item надо отключать коррекцию себестоимости в карточке иначе лочка
		
	 
Цитата: 
	
		
			во базе где используется View надо либо убрать все sift-поля, либо на все делать view 
И счастье заканчивает как только общей становится 83 таблица, где записей мало и лочка цепляет "соседа"  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от dmites
			 
 
			С диапазоне уже работаем, каждый работает в своем и всё это сливается в общую базу. Кстати проверяли на одновременный учет - был достигнут немного нестандартным способом. Допустим  База общая + две базы Магазин1 и магазин 2. Убиваем в магазине учетные таблицы 
		
	32, 5802 и т.д. Делаем View этих таблиц, берущую нужный диапазон соответствующей таблицы из общей базы и вуаля- все работает. счастье возможно, но если сделать общим справочник Item надо отключать коррекцию себестоимости в карточке иначе лочка во базе где используется View надо либо убрать все sift-поля, либо на все делать view И счастье заканчивает как только общей становится 83 таблица, где записей мало и лочка цепляет "соседа" Но пошел на мой взгляд более простым путем - изменил учетные кодеюниты, так чтобы номера операции брались из своих диапазонов.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			так вот и думаем - с view-ми огород городить накладно, нестандартно и т.д. Если диапазоны сохранить да запустить всех в 1 базу, с учетными таблицами проблем нет -  записей за несколько лет позволяют физически разделяют экстенты пользователей. В каждом диапазоне работает 1 чел. 
		
		
		
		
		
		
		
	Но справочники и журналы то одни,тут блокировок не избежать...  | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  ), но общий смысл понятен.Цитата: 
	
		
			Но справочники и журналы то одни,тут блокировок не избежать...
		
	 
 
		 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			1 пользователь работает набивает один диапазон 0..100 000 
		
		
		
		
		
		
		
	следущий 100 000... 200 000, и т.д. т.к. работают давно у каждого диапазон значительно заполнен, соответственно физически данные разных пользователей относятся к разным экстентам в Sql и блокировка setfilter("Entry No.", GetFilialFilter);Locktable; Find('+')); не мешает работе соседа. Т.к. в одном диапазоне работает только 1 пользователь то именно с учетными таблицами по всей этой теории проблем нет, практика показала то же - добился одновременного учет при общих учетных таблицах, но отдельных остальных. конечно ,что на общих 36,37 измерениях и т.п. проблем не избежать  | 
| 
	
 |