powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вынесение исходного кода в отдельную БД
19 сообщений из 19, страница 1 из 1
Вынесение исходного кода в отдельную БД
    #37901251
helldriver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, никто не знает, какие глобалы надо перенести в отдельную БД, чтобы в ней хранился только исходный(и скомпилированный тоже) код, написанный на COS. Нужно это для того, чтобы упростить обновление версий нашей программы на филиалах(т.е. обновление серверной части программы сводилось бы к примонтированию обновленного файла CACHE.DAT с исходниками)
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37901266
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helldriver ,

Посмотрите настройки Области .
Там уже есть такие параметры как:
Default Database for Globals ;

Default Database for Routines .
Они как правило совпадают, но Вы можете их поменять.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37902536
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там еще нужно отмапить некоторые глобалы, которые по недоразумению запихиваются в область с данными. Типа mcq
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37902564
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Там еще нужно отмапить некоторые глобалы, которые по недоразумению запихиваются в область с данными. Типа mcqCaché 2010.2 Upgrade ChecklistThe global, ^mcq, is no longer used to hold cached queries and is no longer a reserved global name.

Источник: Cached Query Changes
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37902607
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, спасибо. Это хорошая новость, так как с ним иногда случались ошибки.
Но последняя попытка перейти на 2011 провалилась, пока сидим на 2009.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37902780
helldriver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, servit, воспользовался предложенным Вами способом.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37902792
D_De1mos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Но последняя попытка перейти на 2011 провалилась, пока сидим на 2009.
Расскажите пожалуйста подробнее, с какими проблемами столкнулись? а то сейчас тоже переходим с 2010.2 на 2011.1
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37903153
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заклинивание клиента. При этом сам сервер продолжает работать нормально. В логах каше ошибок нет, в логах шлюза тоже криминала не увидели. Есть только ошибки в логе IIS.
Версии техподдержки ИС - потери пакетов на плохом канале, неправильная работа IE с протоколом http.
Я, в принципе, может где-то и верю, но 2009 ведет себя гораздо стабильнее.
Кстати, 2009 шлюз тоже падает при работе с IS, и это где-то в в WRC зафиксировано и даже пофиксено, так что у нас на рабочей системе стоит каше 2009.1 с шлюзом от 2010.2

У нас из особенностей - очень много идет гиперевентов, несколько десятков в минуту, причем в разных фреймах они могут идти параллельно.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37903224
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Заклинивание клиента. При этом сам сервер продолжает работать нормально. В логах каше ошибок нет, в логах шлюза тоже криминала не увидели. Есть только ошибки в логе IIS.
Версии техподдержки ИС - потери пакетов на плохом канале, неправильная работа IE с протоколом http.
Я, в принципе, может где-то и верю, но 2009 ведет себя гораздо стабильнее.
Кстати, 2009 шлюз тоже падает при работе с IS, и это где-то в в WRC зафиксировано и даже пофиксено, так что у нас на рабочей системе стоит каше 2009.1 с шлюзом от 2010.2

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

нам пришлось на нагруженных проектах из-за проблем в связке CSPGateway+IIS на нагруженных проектах уходить на Apache
CSPGateway часто просто вешал IIS намертво, и мы сначала не понимали что происходило, а там было какое то ограничение на количество потоков, которое было разное на серверах с разным количеством ядер, вроде 50 штук на ядро, после превышения которого IIS умирал.

у нас по статистике Apache в среднем доходит до 170 запросов в секунду, на самых нагруженных проектах, правда их них может приходится где-то половину на Cache.
правда сейчас наш apache что-то расшалился и показывает что то очень странное
авторCurrent Time: Friday, 03-Aug-2012 11:08:55 FLE Daylight Time
Restart Time: Wednesday, 25-Jul-2012 22:02:16 FLE Daylight Time
Parent Server Generation: 138
Server uptime: 8 days 13 hours 6 minutes 39 seconds
Total accesses: 4157565096 - Total Traffic: 19865263028.0 GB
5630 requests/sec - 3.2 GB/second - 3.4 GB/request
872 requests currently being processed, 1628 idle workers
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37903400
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько десятков в минуту - это на клинта у нас. А клиентов несколько десятков онлайн.
Апач ставил, но у нас там каталоги есть с точкой, это апач не понял. И, кажется, по стабильности он был получше, но недостоверно, т.е. вроде иногда получше, иногда так же.
Кстати, у нас потоков шлюза не очень много было, кажется.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37923856
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Там еще нужно отмапить некоторые глобалы, которые по недоразумению запихиваются в область с данными. Типа mcq
Мы примерно так и делаем.
Но.
1. ^mcq как показал опыт, лучше удалить в момент переключения и кеш запросов почистить.
2. Отмапить обязательно нужно ^odd* (из бд с обновленной версией кода в область с новым приложением).
3. Осторожно с измененными/обновленными индексами! Мы собираем слепки описания индексов текущей версии, новой версии, сравниваем и перестраиваем вновь появившиеся или измененные индексы. Тут еще один подводный камень - плавающее значение свойства SequenceNumber описания индекса - оно по какой-то причине "гуляет". Т.е. его при создании слепка лучше не учитывать.
А в общем схема рабочая - обновление версии зачастую пользователь вообще не замечает, и делать это можно в любой момент, когда есть необходимость.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37923870
D_De1mos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov3. Осторожно с измененными/обновленными индексами! Мы собираем слепки описания индексов текущей версии, новой версии, сравниваем и перестраиваем вновь появившиеся или измененные индексы.
Мы при обновлении версии подменяем CACHE.DAT с кодом + все разработчики при добавлении индекса добавляют перестройку в отдельный класс обновлений. Но тут тоже был подводный камень: при создании первого bitmap-индекса создается дополнительно bitmap-extent индекс, когда нашли добавили условие его перестройки при обновлении, но до этого было много вообще непонятных проблем.
Ваш способ мне кажется правильнее, расскажите, как вы делаете слепки?
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37923955
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_De1mos,

Есть такой код, который объект, описывающий индекс, представляет в виде текстового слепка (он в программе сборки, потому не в методах, а в метках программы):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
getObjText(obj)
	s retText = ""
	s sqlProp = "SELECT Name,Relationship FROM %Dictionary.CompiledProperty WHERE parent->Name = '%Dictionary.CompiledIndex' AND Private = 0"
	s resultProp = ##class(%ResultSet.SQL).%Prepare(.sqlProp,.errProp,"")
	if '$ISOBJECT(errProp) {
		While resultProp.%Next() {
			s value = $zobjproperty(obj,resultProp.%Get("Name"))
			s valueText = $$getPropertyText(value)
			s retText = retText_$s(retText="":"",1:"#")_resultProp.%Get("Name")_"="_valueText
		}
	}
	q retText


getPropertyText(value)
	s ret = ""
	// Возвращает текстовый "слепок" свойства
	q:value="" ""
	// Скаляры
	q:'$ISOBJECT(value) value
	s Class = ##class(%Dictionary.CompiledClass).%OpenId(value.%ClassName(1))
	// Коллекции
	if value.%ClassName(1) [ "%Collection" {
		s key = ""
		s ret = ""
		f  {
			s ret = ret_$s(ret="":"",1:",")_value.GetNext(.key)
			q:key=""
		} 
		q ret
	}
	// Хранимые
	q:Class.ClassType["persistent" value.%Id()
	// Отношения
	if value.%ClassName(1) [ "%Library.RelationshipObject" {
		s key = ""
		s ret = ""
		f  {
			s elem = value.GetNext(.key)
			s elem = $$getPropertyText(elem)
			s ret = ret_$s(ret="":"",1:",")_elem
			q:key=""
		} 
		q ret
	}
	// Если свойство не обработано, отдаем заведомо "неповторимый" результат
	// (чтобы индекс перестроился в этом случае)
	q "NotValidProperty "_$RANDOM(1000000)
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37924008
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наше приложение состоит из нескольких БД, от 13 штук
специально выделена БД под наш код и код под конкретный проект, весь код всегда берется из БД с нашим кодом, а код под проект в конкретных пакетах классов и мапатся в отдельную БД
по остальным БД раскиданы всевозможные данные
клиенту в качестве обновления предоставляется бд с нашим кодом ~300Mb. и с уже подключенной свежей БД кода, запускает установку обновлений. так как изменения в структуре данных классов меняется очень редко а в структуре индексов и того меньше, поэтому насчет индексов сильно не заморачиваемся
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37924342
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov2. Отмапить обязательно нужно ^odd* (из бд с обновленной версией кода в область с новым приложением)Вообще-то Cache сама мапит эти глобалы. Чтобы убедиться в этом, достаточно взглянуть на действующий в области маппинг:
Код: javascript
1.
do SHOW^%NSP

Будь это не так, в областях, отличных от %SYS, невозможно было бы редактировать %-ные классы.
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37924642
D_De1mos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov, спасибо!
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37925561
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslovkolesov2. Отмапить обязательно нужно ^odd* (из бд с обновленной версией кода в область с новым приложением)Вообще-то Cache сама мапит эти глобалы. Чтобы убедиться в этом, достаточно взглянуть на действующий в области маппинг:
Код: javascript
1.
do SHOW^%NSP

Будь это не так, в областях, отличных от %SYS, невозможно было бы редактировать %-ные классы.

Не понял:

do SHOW^%NSP...
oddDEF
[("%"):("%SYS."))
-> c:\intersystems\cache\mgr\cachelib\
[("%SYS."):("%SYS/"))
-> c:\intersystems\cache\mgr\
[("%SYS/"):("%Z"))
-> c:\intersystems\cache\mgr\cachelib\
[("%Z"):("%ZEN."))
-> c:\intersystems\cache\mgr\
[("%ZEN."):("%ZEN/"))
-> c:\intersystems\cache\mgr\cachelib\
[("%ZEN/"):("%["))
-> c:\intersystems\cache\mgr\
[("%["):("%sqlcq.USER."))
-> c:\intersystems\cache\mgr\cachelib\
[("%sqlcq.USER."):("%sqlcq.USER/"))
-> c:\intersystems\cache\mgr\cache\
[("%sqlcq.USER/"):("%z"))
-> c:\intersystems\cache\mgr\cachelib\
[("%z"):("%{")) -> c:\intersystems\cache\mgr\
[("%{"):("&")) -> c:\intersystems\cache\mgr\cachelib\
...
и т.п.


По подузлам монтируется только часть подузлов odd*... Про редактирование процентных классов в несистемных областях - это изыск мне непонятный, простите ;)
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37925937
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovПо подузлам монтируется только часть подузлов odd*...Маппируется ровно то, что надо. А остальная часть odd* маппируются в БД с программами, без каких-либо дополнительных телодвижений со стороны "настройщика". Вот простой пример. В области YNQMS:
База данных по умолчанию для глобалов: YNQMS
База данных по умолчанию для программ: USER
Дополнительный маппинг глобалов не настраивался. См.:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
do SHOW^%NSP
 
*******************************************************************************
Namespace: YNQMS
Default globals location:  directory d:\bases\ynqms\ (local)
Default % routines location: directory d:\intersystems\cache11\mgr\ (local) 
...
[odd:oddCOM]        ->           d:\intersystems\cache11\mgr\user\
                           *>           d:\intersystems\cache11\mgr\user\
(oddCOM:oddDEF]   ->           d:\intersystems\cache11\mgr\user\
                           *>           d:\intersystems\cache11\mgr\user\
       [("%"):("%SYS."))
                       ->           d:\intersystems\cache11\mgr\cachelib\
       ...
 
...
Рейтинг: 0 / 0
Вынесение исходного кода в отдельную БД
    #37927307
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

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

Спасибо.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вынесение исходного кода в отдельную БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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