powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Индекс на x__classname
16 сообщений из 41, страница 2 из 2
Индекс на x__classname
    #39703982
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Number уникален только в пределах одного конечного класса. Объект типа Tiger идентифицируется Number-ом, но если какой-то другой объект, Event Log например, ссылается на базовый класс Animal, то одного Number уже не достаточно.

>А индекс по Classname достигается через Extent индекс, его хватит чтобы sql запросы не перебирали все объекты classA
Да, но Extent индекс нужно будет завести для каждого конечного класса. В чем нет необходимости, если Classname будет содержаться в Primary Key
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704277
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor ... Только этот индекс не поможет в SQL запросе ... Так аlatalo и не просил этого, в его спецификации таких требований нет

alatalo ... что classname (a.k.a x__classname, %%CLASSNAME) ... Третий раз повторяю, обратите наконец внимание: classname '= x__classname !!!
classname - имя текущего класса , например "alatalo.baseB"
x__classname - ЦЕПОЧКА НАСЛЕДОВАНИЯ , например "~alatalo.baseA~alatalo.baseB~", служебное поле Cache, используется в системном методе %IsA
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704317
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alataloДа, именно так. Собственно весь вопрос этой темы в том, можно ли сообщить Каше, что classname (a.k.a x__classname, %%CLASSNAME) хранится в Primary Key. Таким образом, Primary Key будет одновременно и Extent индексом.Такое не получится сделать, да и смысл так делать пока все равно не ясен.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704387
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Третий раз повторяю...
Честно сказать, вы могли бы и в превый раз этого не говорить.

Мы не собираемся писать то, что я здесь называю classname, в Primary Index сами. Речь в этой теме про то, каким образом (и возможно ли это в принципе), сообщить Каше, что та "ЦЕПОЧКА НАСЛЕДОВАНИЯ", которую он подефолту пишет здесь:

Storage Default
{
<Value name="1">
<Value>%%CLASSNAME</Value>
...

находится в первом сабскрипте Primary Index.

Если это возможно, то 'select * from classB' может обойтись без перебора всей таблицы даже без Extent индекса
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704390
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

> да и смысл так делать пока все равно не ясен
смотри, у тебя 120 производных класса, зачем заводить 120 Extent индексов, если их роль может выполнить Primary Key?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704608
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... могли бы и в превый раз этого не говорить... 4. Цепочка наследования - служебное поле. Т.е предназначено и используется производителем СУБД в его собственных целях ( ..%IsA ), невидимое для большиства подсистем. Его нельзя указать в качестве свойства при определении индекса. :)
alatalo %%CLASSNAME ...находится в первом сабскрипте ... Нет, %%CLASSNAME находится в первой позиции $lb().
Хранение по умолчанию ( Cache Storage ) хранит данные в формате ^package.classD(ID)=$lb(%%CLASNAME, props...).
Соответственно, реализация вашей идеи приведет к полному сканированию глобали.
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39704790
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>...Его нельзя указать в качестве свойства при определении индекса
очень возможно что нельзя, но я не вижу принципиальных препятсвий почему "служебное поле предназначенное и используемое производителем СУБД в его собственных целях ( ..%IsA ), невидимое для большиства подсистем" может использоваться при определении хранения (%%CLASSNAME), но не может использоваться в индексе: его значение не меняется и известно на момент первой записи в базу.

>Нет, %%CLASSNAME находится в первой позиции $lb().
вы меня неправильно поняли: он там находится по умолчанию, но я хочу его в первый сабскрипт индекса

>Соответственно, реализация вашей идеи приведет к полному сканированию глобали
в каком сценарии?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705110
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo но я не вижу принципиальных препятствий Навскидку - совместимость и универсальность.
alatalo но я хочу его в первый сабскрипт индекса Если вам нужно другое поведение, то вы или заказываете его у производителя , или реализуете самостоятельно с помощью предоставленных производителем возможностей - собственные поля, индексы или альтернативные схемы хранения
alataloв каком сценарии? В сценарии со схемой хранения, когда цепочка наследования ( 5. которая не эквивалентна имени класса ) находится в первом ключе или в первой позиции глобали
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705194
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Навскидку - совместимость и универсальность.
очень вероятно, что какие-нибудь фундаментальные проблемы с этим действительное есть, но точно не с совместимостью и универсальностью, поскольку возможность писать classname еще и в индекс помимо его обычного места ни на что из перечисленного не влияет. Ровно тоже, что и с возможностью хранить в индексе копии обычных полей.

>Если вам нужно другое поведение, то вы или заказываете его у производителя, или реализуете самостоятельно с помощью предоставленных производителем возможностей
да ну?! еще один совершенно бесценный совет :)

>В сценарии со схемой хранения, когда цепочка наследования ( 5. которая не эквивалентна имени класса ) находится в первом ключе или в первой позиции глобали
в каком сценарии (поиск объекта, чтение его полей etc) копия classname в индексе приведет к какому-либо дополнительному "сканированию глобали"?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705334
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo возможность писать classname еще и в индекс помимо его обычного места, ни на что из перечисленного не влияет 6. classname не тоже самое, что и %%CLASSNAME
Предполагаемую глубину наследования вы не оговаривали.
Можете дать свою оценку размера строки ( цепочки наследования ), которую надо поместить как в индекс, так и в данные?
alatalo да ну?! Не благодарите. Наносить добро, причинять пользу :) Так какой путь выбираете - самостоятельно или в WRC?alatalo в каком сценарии копия classname в индексе приведет к какому-либо дополнительному "сканированию глобали"?7. %%CLASSNAME сборная строка с именами классов, т.е промежуточная информация, которую еще нужно обработать.
Поэтому в любом, в котором будет необходимость использовать такой индекс ( за исключением, пожалуй, запроса "найди все id, с такой же цепочкой наследования" )
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705369
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>classname не тоже самое, что и %%CLASSNAME
в этой теме classname=%%CLASSNAME=цепочка наследования

>Можете дать свою оценку размера строки ( цепочки наследования ), которую надо поместить как в индекс, так и в данные?
нет здесь никакой проблемы: если помещается в $lb(%%CLASSNAME, ...) то поместится и в индекс

>Так какой путь выбираете - самостоятельно или в WRC?
вне темы

> запроса "найди все id, с такой же цепочкой наследования"
это единственный вид запроса, который меня интересует. Но даже если нужно искать инстансы промежуточного класса, этот индекс можно использоваться не менее эффективно
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705403
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... в этой теме classname=%%CLASSNAME=цепочка наследования ... давайте тогда называть его classeslist, что бы все таки отличать.alatalo нет здесь никакой проблемы: если помещается в $lb(%%CLASSNAME, ...) то поместится и в индекс Уверены? alatalo Но даже если нужно искать инстансы промежуточного класса, этот индекс можно использоваться не менее эффективно Приведете пример кода для function( classeslist, classname ){}?
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705435
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>давайте тогда называть его classeslist, что бы все таки отличать
в этой теме я назыаю его classname

>Уверены?
Если вы можете записать ^a=$lb(classname, ...), то в чем проблема записать ^b=classname?

>Приведете пример кода для function( classeslist, classname ){}?
classnamePrev=classname-1 ; условно, формируем предыдущее значение classname
перебираем индекс ордером начиная с classnamePrev пока строка начинается с classname
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39705489
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo ... в чем проблема записать ^b=classname? ... alatalo ... но я хочу его в первый сабскрипт индекса ... ???
Приведите, пожалуйста, пример того, как вашему мнению, должна выглядеть индексная глобаль?

alatalo перебираем индекс ордером начиная с classnamePrev пока строка начинается с classname alatalo ... Но даже если нужно искать инстансы промежуточного класса ... не менее эффективно ???
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39707113
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

>Приведите, пожалуйста, пример того, как вашему мнению, должна выглядеть индексная глобаль?
как уже многократно повторялось: ^data(classname,number)=data ; $lb(classname,...)

>??
да, первым ордером попадаем сразу на первый промежуточный класс. Последущие перебираем до тех пор, пока classname начинается с искомой строки. Минимальные издержки, даже не учитывая, что в реальной системе очень ограниченное число классов
...
Рейтинг: 0 / 0
Индекс на x__classname
    #39711841
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alatalo,
classname еще и в индекс
Код: vbnet
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.
ClassMethod test(){

	s inheritance = $lb(
		"Class.can.be.subclassed.to.a.depth.of50.but.not.further",
		"The.full.name.of.class.member.including.the.full.class.name.must.be.less.than.or.equal.to220.characters",
		"The.total.length.of.a.global.reference.is.limited.to511.encoded.characters",
		"If.you.must.have.long.subscript.or.global.names",
		"it.is.helpful.to.avoid.a.large.number.of.subscript.levels",
		"If.you.are.using.multiple.subscript.levels",
		"avoid.long.global.names.and.long.subscripts",
		"Because.you.may.not.be.able.to.control.the.character.sets.you.are.using",
		"it.is.useful.to.keep.global.names.and.subscripts.shorter"
	)
	#define isOk( %bool ) $case( %bool, 1:"OK. ",:"FAIL. " )
	s pointer = 0, class = "", ok = 1
	while $listnext( inheritance, pointer, class ){
		s valid = $system.OBJ.IsValidClassname( class )
		w !, $$$isOk( valid ), class
		s ok = ok && valid
	}
	
	w !, "Classes: ", $$$isOk( ok )
	s depth = $ll( inheritance ) w !, "Depth: ", depth
	s classes = "~" _ $lts( inheritance, "~" )_ "~" w !,"Length: ", $l( classes )
	s test = 1
	
	try {
		s data = $lb( classes, "нет здесь никакой проблемы", "точно не с совместимостью и универсальностью" )
		s ^alatolo.has.idea(classes, 1) = data
	} catch e {
		zw e s test = 0	
	}
	Q test
}

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


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