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

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

Default Database for Routines .
Они как правило совпадают, но Вы можете их поменять.
...
Рейтинг: 0 / 0
02.08.2012, 18:58
    #37902536
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Там еще нужно отмапить некоторые глобалы, которые по недоразумению запихиваются в область с данными. Типа mcq
...
Рейтинг: 0 / 0
02.08.2012, 19:19
    #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
02.08.2012, 20:04
    #37902607
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Хм, спасибо. Это хорошая новость, так как с ним иногда случались ошибки.
Но последняя попытка перейти на 2011 провалилась, пока сидим на 2009.
...
Рейтинг: 0 / 0
03.08.2012, 05:59
    #37902780
helldriver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Спасибо, servit, воспользовался предложенным Вами способом.
...
Рейтинг: 0 / 0
03.08.2012, 06:35
    #37902792
D_De1mos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Блок А.Н.Но последняя попытка перейти на 2011 провалилась, пока сидим на 2009.
Расскажите пожалуйста подробнее, с какими проблемами столкнулись? а то сейчас тоже переходим с 2010.2 на 2011.1
...
Рейтинг: 0 / 0
03.08.2012, 11:44
    #37903153
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Заклинивание клиента. При этом сам сервер продолжает работать нормально. В логах каше ошибок нет, в логах шлюза тоже криминала не увидели. Есть только ошибки в логе IIS.
Версии техподдержки ИС - потери пакетов на плохом канале, неправильная работа IE с протоколом http.
Я, в принципе, может где-то и верю, но 2009 ведет себя гораздо стабильнее.
Кстати, 2009 шлюз тоже падает при работе с IS, и это где-то в в WRC зафиксировано и даже пофиксено, так что у нас на рабочей системе стоит каше 2009.1 с шлюзом от 2010.2

У нас из особенностей - очень много идет гиперевентов, несколько десятков в минуту, причем в разных фреймах они могут идти параллельно.
...
Рейтинг: 0 / 0
03.08.2012, 12:13
    #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
03.08.2012, 13:33
    #37903400
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Несколько десятков в минуту - это на клинта у нас. А клиентов несколько десятков онлайн.
Апач ставил, но у нас там каталоги есть с точкой, это апач не понял. И, кажется, по стабильности он был получше, но недостоверно, т.е. вроде иногда получше, иногда так же.
Кстати, у нас потоков шлюза не очень много было, кажется.
...
Рейтинг: 0 / 0
21.08.2012, 05:05
    #37923856
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Блок А.Н.Там еще нужно отмапить некоторые глобалы, которые по недоразумению запихиваются в область с данными. Типа mcq
Мы примерно так и делаем.
Но.
1. ^mcq как показал опыт, лучше удалить в момент переключения и кеш запросов почистить.
2. Отмапить обязательно нужно ^odd* (из бд с обновленной версией кода в область с новым приложением).
3. Осторожно с измененными/обновленными индексами! Мы собираем слепки описания индексов текущей версии, новой версии, сравниваем и перестраиваем вновь появившиеся или измененные индексы. Тут еще один подводный камень - плавающее значение свойства SequenceNumber описания индекса - оно по какой-то причине "гуляет". Т.е. его при создании слепка лучше не учитывать.
А в общем схема рабочая - обновление версии зачастую пользователь вообще не замечает, и делать это можно в любой момент, когда есть необходимость.
...
Рейтинг: 0 / 0
21.08.2012, 06:58
    #37923870
D_De1mos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
kolesov3. Осторожно с измененными/обновленными индексами! Мы собираем слепки описания индексов текущей версии, новой версии, сравниваем и перестраиваем вновь появившиеся или измененные индексы.
Мы при обновлении версии подменяем CACHE.DAT с кодом + все разработчики при добавлении индекса добавляют перестройку в отдельный класс обновлений. Но тут тоже был подводный камень: при создании первого bitmap-индекса создается дополнительно bitmap-extent индекс, когда нашли добавили условие его перестройки при обновлении, но до этого было много вообще непонятных проблем.
Ваш способ мне кажется правильнее, расскажите, как вы делаете слепки?
...
Рейтинг: 0 / 0
21.08.2012, 09:37
    #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
21.08.2012, 10:11
    #37924008
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Наше приложение состоит из нескольких БД, от 13 штук
специально выделена БД под наш код и код под конкретный проект, весь код всегда берется из БД с нашим кодом, а код под проект в конкретных пакетах классов и мапатся в отдельную БД
по остальным БД раскиданы всевозможные данные
клиенту в качестве обновления предоставляется бд с нашим кодом ~300Mb. и с уже подключенной свежей БД кода, запускает установку обновлений. так как изменения в структуре данных классов меняется очень редко а в структуре индексов и того меньше, поэтому насчет индексов сильно не заморачиваемся
...
Рейтинг: 0 / 0
21.08.2012, 12:50
    #37924342
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
kolesov2. Отмапить обязательно нужно ^odd* (из бд с обновленной версией кода в область с новым приложением)Вообще-то Cache сама мапит эти глобалы. Чтобы убедиться в этом, достаточно взглянуть на действующий в области маппинг:
Код: javascript
1.
do SHOW^%NSP

Будь это не так, в областях, отличных от %SYS, невозможно было бы редактировать %-ные классы.
...
Рейтинг: 0 / 0
21.08.2012, 14:45
    #37924642
D_De1mos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
kolesov, спасибо!
...
Рейтинг: 0 / 0
22.08.2012, 08:28
    #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
22.08.2012, 11:48
    #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
23.08.2012, 04:50
    #37927307
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вынесение исходного кода в отдельную БД
Alexey Maslov,

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

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


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