Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 5 6 7 8 9 [10] 11 12 13 14 .. 29   вперед  Ctrl
 Re: Каше vs. Фокс....  [new]
MX -- ALEX
Guest
Sergo Gromov
mir
2 AlexKB

Может, всем нам не стоит приводить уж такие "детсадовские" примеры и аргументы? С такими вот "детсадовскими" выводами (без обид). Это только приводит к деградации уровня обсуждения.


Возможно. Тогда что же приводить в пример ? Если у человека действительно произошло так, и его это удивило - почему бы не послушать ?? Может между строк что-то написано ? :-)

пример из жизни всегда интересно послушать.
человек культурно пишет - зачем рот затыкать .

к деградации приводит подсчет буковок в тексте программы
24 фев 06, 14:24    [2387225]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
mir
Member

Откуда: Томск
Сообщений: 1027
MX -- ALEX
Sergo Gromov
mir
2 AlexKB

Может, всем нам не стоит приводить уж такие "детсадовские" примеры и аргументы? С такими вот "детсадовскими" выводами (без обид). Это только приводит к деградации уровня обсуждения.


Возможно. Тогда что же приводить в пример ? Если у человека действительно произошло так, и его это удивило - почему бы не послушать ?? Может между строк что-то написано ? :-)

пример из жизни всегда интересно послушать.
человек культурно пишет - зачем рот затыкать .

к деградации приводит подсчет буковок в тексте программы
Какая-то у вас реакция неадекватная. Укажите мне, где и когда я затыкал человеку рот? Неужели фраза "Может, всем нам не стоит..." для вас выглядит эквивалентной фразе вроде "Заткни хайло, урод"? Зачем же так-то? Если мой призыв прозвучал впустую, бога ради. Ищите между строк подобных историй великий смысл, не вопрос.
А насчет подсчета буковок, я рад, что вы стали настолько самокритичны. Поскольку вы первый в этой теме начали разговор о супер-"краткости" MUMPS-запросов:
MX -- ALEX
...пока по краткости альтернативы MUMPSу не вижу..
Как говорится, за что боролись...
24 фев 06, 15:31    [2387478]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
MX -- ALEX
Guest
mir
MX -- ALEX
Sergo Gromov
mir
2 AlexKB

Может, всем нам не стоит приводить уж такие "детсадовские" примеры и аргументы? С такими вот "детсадовскими" выводами (без обид). Это только приводит к деградации уровня обсуждения.


Возможно. Тогда что же приводить в пример ? Если у человека действительно произошло так, и его это удивило - почему бы не послушать ?? Может между строк что-то написано ? :-)

пример из жизни всегда интересно послушать.
человек культурно пишет - зачем рот затыкать .

к деградации приводит подсчет буковок в тексте программы
Какая-то у вас реакция неадекватная. Укажите мне, где и когда я затыкал человеку рот? Неужели фраза "Может, всем нам не стоит..." для вас выглядит эквивалентной фразе вроде "Заткни хайло, урод"? Зачем же так-то? Если мой призыв прозвучал впустую, бога ради. Ищите между строк подобных историй великий смысл, не вопрос.
А насчет подсчета буковок, я рад, что вы стали настолько самокритичны. Поскольку вы первый в этой теме начали разговор о супер-"краткости" MUMPS-запросов:
MX -- ALEX
...пока по краткости альтернативы MUMPSу не вижу..
Как говорится, за что боролись...

Ладно..
погорячились
как говорится приношу искренние извинения и прочее..
показалось .. на кореша наезжают..
============
24 фев 06, 16:10    [2387582]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Dimonische
Member

Откуда:
Сообщений: 137
MX -- ALEX
на кореша наезжают..


Вот если бы еще якобы-тюремный жаргон не употребляли....
24 фев 06, 22:23    [2388289]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
c127
Guest
locky

Для неграмотного что q:d, что select c from t - всё одно, закорючки...
с какого такого Вы решили, что усе НЕ понимають М и усе ПОНИМАЮТЬ скл?
или так, специфика сайта навеяла?


Согласен.

Но во-первых я вроде нигде не говорил, что "select c from t" это не закорючка и не предполагал что понимание смысла необходимо для данного сравнения, которое было инициировано сторонниками КЕШ-а. Для сравнения длины кода понимание не важно, достаточно быть уверенным что задача решена и уметь считать символы. Я только против заявлений вида: "каждому же ясно что @#$%35.rd^& это возраст ребенка сотрудника с точностью до дня".

Во-вторых РСУБД занимают значительную часть рынка СУБД, думаю больше 90%, поэтому хотя бы базовое понимание этой технологии и СКЛ-я это ИМХО правило хорошего тона для любого кто работает в области СУБД. Если кеш будет занмать 90% рынка, я буду учить МУМПС.

В-третьих MX -- ALEX заявил, что "То есть для первоначального ознакомления с принципами программирования - нет ничего проще и лучше" МУМПС-а. https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=54920&pg=5#2365896
А также: "классная вещь этот MUMPS берите не прогадаете"
https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=54920&pg=5#2367474
Это значит что он по-видимому имеет понятие хотя бы об основных языках, раз сравнивает, а СКЛ безусловно при нынешней ситуации на рынке относится к основным. Поэтому "select c from t" для него абракадаброй быть никак не может. К тому же MX -- ALEX даже комментировал запрос в смысле его неадекватности МУМПС-овому, так что очевидно понимает.

CesaTheGuest

Думаю стоит пояснить до конца... Мое мнение - нет смысла сравнивать компактность кода на ЛЮБЫХ проектах.


Расскажите это программистам, стучащим по клавишам. На коротких программах типа обсуждаемой действительно не имеет.

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

CesaTheGuest

Кодирование при запуске проекта составляет 10%.


Ух ты, а откуда цифра 10%, может есть какие-нибудь ссылки?



Раз пошла такая пъянка то вот задача, предложенная сторонниками Версанта
https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=138641&pg=2#1206843

Предлагаю дополнить ее уловием что результат должен быть получен в виде текстовгого файла в CSV формате (поля, разделенные запятыми), по одной строке на строку таблицы (о таблице см. условие), запросы читаются из текстового файла в любом удобном формате. Это позволит избежать непонимания с тем, куда попадают результаты работы и откуда в системе берутся запросы (см. обсуждение в том топике). Запросы могут отличаться от тех, которые перечислены в постановке.

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

Как сравнивать решение поговорим когда будет решение от КЕШ-а. Приблизительное СКЛ решение там обсуждается, можно ознакомиться.
25 фев 06, 02:48    [2388599]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
CesaTheGuest
Guest
to c127
Хм... Так и думал что 10% будут обсуждаться :). Я не могу дать Вам ссылки, кроме того, я не утверждаю, что данная цифра истинна или научно обоснованна. Всегда есть крайности. Но так нам преподавали ссылаясь на ГОСТ (безусловно древний). И к такому же выводу я пришел имперически. Разумеется непосредственный кодер, только программирует, и может ему это важно, но есть и другие аргументы, даже для кодера. Я же говорил о проекте в целом, думаю каждый из нас может дать такую оценку исходя из своего опыта. Вот свежий пример: я запрос писал 10 минут, а отчет рисовал 4 часа. Предположим я запрос написал за 5 минут, что это для меня изменит?

Что сравнения решений на предложенную задачу, чтож будет неплохо посмотреть, на решение Cash. Вот дождемся ли... И кроме того, не скажут ли нам, что не будет вам решения потому как и программировать не надо :(. Или что решение такое изящной, что незачем его и делать...
25 фев 06, 09:10    [2388662]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
StalkerS
Member

Откуда: Melbourne
Сообщений: 1344
вообще говоря, время конструирования варьируется очень сильно (от 10 до 80 %), и очень зависит это от объемности проекта и прикладной области, для которого он создается, т.к. для разных случаев должны применяться разные подходы к его созданию...
25 фев 06, 12:17    [2388740]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
c127, SergSuper

Вот решение [url=https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=138641&pg=2#1206843 ]задачи сторонников Версанта[/url], предложенная c127


Для лучшего понимания в коде использованы русскоязычные идентификаторы. Комментарии тоже старался писать

Также как и SergSuper в своем решении не совсем понял чем отличается маршрут от рейса ... поэтому маршрут был исключен из условий задачи

Код абсолютно работоспособен - только что проверил на контрольном примере. Затраченное время - около 40 минут
/*
 	Структура данных
 	
	^САМОЛЕТ(тип самолета,место)=класс места
	^РАСПИСАНИЕ(дата,рейс)=тип самолета
	^БИЛЕТЫ(дата,рейс,место)=имя пассажира
	^БИЛЕТЫ(дата,рейс,место,"статус")=выкуплен|бронирован
*/

 ///Цена билета - функция от даты рейса, номера рейса, класса места
ЦЕНАБИЛЕТА(дата,рейс,классместа)
{
	quit $RANDOM(20000)	
}

 /// Информация по билетам
 /// На входе: дата рейса, номер рейса
 /// На выходе массивы свободно,занято 
 /// 
СТАТИСТИКА(дата,рейс, свободно, занято)
 {
	set типсамолета=^РАСПИСАНИЕ(дата,рейс)   ;тип самолета

	kill место
	
	for {
		set место=$ORDER(^САМОЛЕТ(типсамолета,место))   ;обходим все места в самолете
 		quit:место=""
		set классместа=^(место)      			;класс места 
		if '$DATA(^БИЛЕТЫ(дата,рейс,место)) {
			If $INCREMENT(свободно(классместа))  ;счетчик выкупленных мест с группировкой по классу места
			set свободно(классместа,место)=""     ;свободные персонально
		} else {
			If $INCREMENT(занято(классместа)) ;счетчик свободных мест с группировкой по классу места
		  	set занято(классместа,место)=^БИЛЕТЫ(дата,рейс,место)    ;имя пассажира 
		}
	}
	
}

ОТЧЕТЫ(дата,рейс)
{
	
	do СТАТИСТИКА(дата,рейс,.свободно,.занято)
	
	write !,"Отчет по наличии свободных мест по классам:"
	
	kill классместа
	
	for  {
		set классместа=$ORDER(свободно(классместа)) 
		quit:классместа=""
		write !,"Рейс:",рейс," класс:",классместа," количество:",свободно(классместа)
	}
	
	write !,"Отчет по свободным местам:"
	
	kill классместа
	
	for  {
		set классместа=$ORDER(свободно(классместа)) 
		quit:классместа=""
		
		kill место
		
		for {
			set место=$ORDER(свободно(классместа,место)) 
			quit:место=""
			write !,"Рейс:",рейс," место:",место," класс:",классместа," цена:",$$ЦЕНАБИЛЕТА(дата,рейс,классместа)
		}
	}
	
	write !,"Отчет по купленным билетам:"
	
	kill место
		
	for {
		set место=$ORDER(^БИЛЕТЫ(дата,рейс,место)) 
		quit:место=""
		write !,"Рейс:",рейс," место:",место," пассажир:",^(место)," статус билета:",^(место,"статус")
	}
}

 ///Бронирование билета
БРОНИРОВАТЬ(дата,рейс,место,пассажир)
 {
	tstart
	set ^БИЛЕТЫ(дата,рейс,место)=пассажир
	set ^(место,"статус")=1   ;признак "бонирован"
	tcommit
 }
 
 /// На входе дата  номер рейса, и массив данных на нескольких пассажиров со структурой
 /// данные(место)=пассажир
БРОНИРОВАТЬНЕСКОЛЬКО(дата,рейс,данные)
 {
	 for {
		 set место=$ORDER(данные(место))
		 quit:место=""
		 do БРОНИРОВАТЬ(дата,рейс,место,данные(место))
		}
 }
25 фев 06, 18:10    [2389080]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
???
Guest
Че-то мне не верица шо mir,c127,CesaTheGuest программили на мампсе и им че-то не понравилось и они начали скулить (програмить на скуле). Но зачем тада трепаца про то шо кто-то двадцать лет програмил как-то так, а теперь, как-то эдак; про @#$%35.rd^& (натуральный бред); про ожидание решения какого-то Cash ? Тема-то как называеца ? Пусть грят те кто че-то может сравнить. Кто хотел разобраца уж давно бы разобрался. А эти только трепяца.
25 фев 06, 18:13    [2389082]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
SergSuper
Допустим есть такая структура - начальник- подчинённые, у каждого подчинённого могут быть свои подчиненные, вложенность неопределена. Требуется вывести список всех сотрудников вместе с суммарной зарплатой всех их подчинённых. Собственно я много кому эту задвчу предлагаю. Вроде типично иерархическая задача. На чистом SQL она решается не очень красиво. Хотелось бы посмотреть как она решается на языках учитывающих специфику древовидной организации данных . Никто из сторонников М так решения и не привёл. Если не трудно - было бы интересно посмотреть.


пример вроде как привели ... собственно весь алгоритм базируется на свойствах функции $QUERY которая умеет выполнять левый и правый обходы дерева ... а уж просуммировать з/п не составляет труда :)


SergSuper

Если существует расщепление блока, то должна быть и обратная операция, да и балансировка индекса. Либо надо индекс периодически перестраивать. Чего-то Вы тут недоговариваете :)


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

SergSuper

Rus000

И еще. Если долго работать с деревьями, то начинаешь думать и проектировать деревьями, и даже обладая базисом рел.алгебры потом трудно уже себя заставить думать ее (алгебры) концепциями.

Вот объясните в чем разница. Допустим таже структура: Цех/Работник/Дети. Можно сделать это деревом и обращаться к этому условно $A('Литейный цех','Иванов','Вася').
А можно тоже самое представить таблицей с соответствующими полями и обращаться как select * from tbl where Цех='Литейный цех' and Работник='Иванов' and Дети='Вася'. Получается разница только в синтаксисе. Мне чего-то не уловить концепцию проектирования деревьями


Согласитесь, что в реальном мире многие сущности имеют естественный иерархический характер - отношение подчиненности в работе, административное деление, структура предприятий и т.п.
БЕЗУСЛОВНО все эти отношения могут быть линеризованы во множество отношений, но, имхо, гораздо понятнее реальная иерархия накладывается на иерархию в реализации, т.е. древовидная организация дает как бы дополнительную самантику, как бы частично инкапсулируя в себя схему организации данных. Хороший пример XML - ярко выраженная иерерхическая структура ... а он ведь (общепризнанно ) является лучшим кандидатом на формат самоописания данных. По большому счету абсолютно произвольный xml документ может быть загружен одним и тем же кодом в дерево разве это не здорово?
25 фев 06, 18:33    [2389090]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
???

так неприятно читать в стиле "...ца" просто глаз режет

неужели сложно уважать посетителей форума и излагать нормальным языком?
25 фев 06, 18:37    [2389092]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
okdoky
Member

Откуда:
Сообщений: 349
Rus000: Возможно я не понимаю потому, что не читал другие сообщения. Что означает такой способ записи ^A(B,C)=D ? Можно ли это связать как-то с таблицей или деревом? Например, правильно ли будет, если я скажу, что
^САМОЛЕТ(тип самолета,место)=класс места
это таблица САМОЛЕТ(тип самолета,место,класс места) с ключевыми столбцами тип самолета, место?
25 фев 06, 22:12    [2389277]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
c127
Guest
StalkerS
вообще говоря, время конструирования варьируется очень сильно (от 10 до 80 %), и очень зависит это от объемности проекта и прикладной области, для которого он создается, т.к. для разных случаев должны применяться разные подходы к его созданию...


Вот с этим согласен, от размеров проекта зависит очень сильно.
25 фев 06, 23:42    [2389368]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
c127
Guest
Rus000
c127, SergSuper

Вот решение [url=https://www.sql.ru/forum/actualthread.aspx?bid=10&tid=138641&pg=2#1206843 ]задачи сторонников Версанта[/url], предложенная c127


Для лучшего понимания в коде использованы русскоязычные идентификаторы. Комментарии тоже старался писать

Также как и SergSuper в своем решении не совсем понял чем отличается маршрут от рейса ... поэтому маршрут был исключен из условий задачи

Код абсолютно работоспособен - только что проверил на контрольном примере. Затраченное время - около 40 минут
.................


Ну вот, это уже другое дело.

А где ввод-вывод в-из текстового файла?

С остальным сейчас буду разбираться.
25 фев 06, 23:51    [2389377]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Ц4
Guest
код абсолютно работоспособен? а отчёт не будет врать, если будет запущен одновременно с бронированием?
26 фев 06, 00:53    [2389446]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
okdoky
Rus000: Возможно я не понимаю потому, что не читал другие сообщения. Что означает такой способ записи ^A(B,C)=D ? Можно ли это связать как-то с таблицей или деревом? Например, правильно ли будет, если я скажу, что
^САМОЛЕТ(тип самолета,место)=класс места
это таблица САМОЛЕТ(тип самолета,место,класс места) с ключевыми столбцами тип самолета, место?


абсолютно правильно!

таблица TABLE(A,B,C) с первичным ключом А может быть предcтавлена как
^TABLE(A)=B_{разделитель}_C, где
или
^TABLE(A,"ATTR1")=B
^TABLE(A,"ATTR2")=C

таблица TABLE(A,B,C) с первичным ключом А,B может быть предcтавлена как

^TABLE(A,B)=C - иерархия
или
^TABLE(A_{разделитель}_B)=C - линейное представление, "а-ля" таблица
26 фев 06, 10:13    [2389819]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
c127

Ну вот, это уже другое дело.
А где ввод-вывод в-из текстового файла?
С остальным сейчас буду разбираться.


вывод в процедуре ОТЧЕТЫ хотя вроде как ввод/вывод не принято показывать ...

ввод не стал показывать, просто сэмулировал пару типов самолетов, десяток рейсов, случайно заполнил купленные билеты ... привести код?
26 фев 06, 10:39    [2389900]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
Ц4
код абсолютно работоспособен? а отчёт не будет врать, если будет запущен одновременно с бронированием?


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

Если хотите могу модифицировать код с учетом этой специфики
26 фев 06, 10:44    [2389917]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Ц4
Guest
2 Rus000 : испугало слово "абсолютно" - ничего более не хотел сказать
26 фев 06, 10:55    [2389954]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Rus000

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

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

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

Ой ли? Допустим у я занимаюсь торговлей ценными бумагами на разных биржах. Есть у меня некие результаты торгов. И вот каким деревом мне это представлять? (дата, биржа, бумага) либо ( бумага,дата, биржа) либо еще 4 варианта могут быть. В зависимости от того какую информацию я буду выбирать мне это дерево нужно по разному строить. Наверняка те же проблемы и со СНиП-ами были
На мой взгляд замыкаясь на иерархии вы ограничиваете свои возможности
Rus000

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

XML ... Лет 5 назад была у меня эйфория от него...
XML годиться только для передачи информации, либо для её хранения. Для работы с ним как с данными - вещь совершенно неудобная.

А за примеры спасибо, довольно интересно. Вопросы:

$DATA, $INCREMENT и вообще индентифокаторы с $ - это какие-то системные функции? Что они значат?

такой кусок
	kill классместа
		for  {
		set классместа=$ORDER(свободно(классместа)) 
я так понимаю "классместа" удаляем, но тут же исполузуем как параметр -$ORDER(свободно(классместа)). Как это так?
26 фев 06, 11:01    [2389985]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Maksim UM
Member

Откуда: SPb
Сообщений: 432
SergSuper
На мой взгляд замыкаясь на иерархии вы ограничиваете свои возможности

Хотелось бы уточнить, что, если речь идет о Cache, то
в нем можно использовать и SQL, точно так же как и в других
базах. А MUMPS (COS) это дополнение или замена SQL, если это нужно
(целесообразно). Таким образом можно выиграть в скорости, за счет прямого доступа к данным.

SergSuper

А за примеры спасибо, довольно интересно. Вопросы:

$DATA, $INCREMENT и вообще индентифокаторы с $ - это какие-то системные функции? Что они значат?

такой кусок
	kill классместа
		for  {
		set классместа=$ORDER(свободно(классместа)) 
я так понимаю "классместа" удаляем, но тут же исполузуем как параметр -$ORDER(свободно(классместа)). Как это так?

kill классместа - очистка переменной для получения первого идентификатора
Можно было написать: set классместа=""
26 фев 06, 12:19    [2390314]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
Rus000
Member

Откуда: Красноярск
Сообщений: 317
SergSuper

Rus000

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

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


я и не говорил что все :)) Было написано реальном мире многие сущности имеют естественный иерархический характер

SergSuper

Rus000

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

Ой ли? Допустим у я занимаюсь торговлей ценными бумагами на разных биржах. Есть у меня некие результаты торгов. И вот каким деревом мне это представлять? (дата, биржа, бумага) либо ( бумага,дата, биржа) либо еще 4 варианта могут быть. В зависимости от того какую информацию я буду выбирать мне это дерево нужно по разному строить. Наверняка те же проблемы и со СНиП-ами были
На мой взгляд замыкаясь на иерархии вы ограничиваете свои возможности


я не говояю, что ВСЕ нужно представлять иерархией, а только там где она естественна с точки зрения сложившихся представлений, стереотипов.

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

SergSuper

XML ... Лет 5 назад была у меня эйфория от него...
XML годиться только для передачи информации, либо для её хранения. Для работы с ним как с данными - вещь совершенно неудобная.


именно передачи данных между разнородными ИС его как правило и используют.
хранение и обработка - по производительности вещи спорные, хотя уже голову поднимают (например native xml-dbms ) со стандартом xquery ...

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


SergSuper

$DATA, $INCREMENT и вообще индентифокаторы с $ - это какие-то системные функции? Что они значат?


$DATA(path) - возвращает отличное от нуля значение в случае, если существует узел (node) в дереве по указанному пути path.
При этом под path понимается совокупность ключевых атрибутов (ветвей) которая ведет к нужному узлу дерева.

В нашем примере
if '$DATA(^БИЛЕТЫ(дата,рейс,место)) 
букавально озанчает "ЕСЛИ НЕТ КУПЛЕННОГО/БРОНИРОВАННОГО БИЛЕТА на заданную дату, рейс и место, то ..."

Примечание: Символ апострофа (') в коде означает отрицание (NOT)

SergSuper

	kill классместа
		for  {
		set классместа=$ORDER(свободно(классместа)) 
я так понимаю "классместа" удаляем, но тут же исполузуем как параметр -$ORDER(свободно(классместа)). Как это так?


Kill VAR - это просто один из способов очистить переменную. С таким же успехом можно было бы использовать код
set классместа=""


теперь про $ORDER. Эта встроенная функция является одной из основных для обхода дерева на одном уровне по заданному пути. Она возвращает "брата" справа или слева от заданного, причем если в качестве начального значения задано пусто ("") то $ORDER возвращает первого "брата" слева, т.е.
set var=$ORDER(path(""),1) возвращает первый в сортирующей последовательности дочерний для path узел  

set var=$ORDER(path(""),-1) возвращает последний в сортирующей последовательности дочерний для path узел  

В куске кода который Вы привели применяется классический прием обхода одного уровня локальной переменной , которая тоже является деревом выражаемым одномерным массивом свободно(классместа)

Мы еще не вышли за пределы темы топика? :))
26 фев 06, 12:27    [2390342]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
c127
Guest
Maksim UM
SergSuper
На мой взгляд замыкаясь на иерархии вы ограничиваете свои возможности

Хотелось бы уточнить, что, если речь идет о Cache, то
в нем можно использовать и SQL, точно так же как и в других
базах. А MUMPS (COS) это дополнение или замена SQL, если это нужно
(целесообразно). Таким образом можно выиграть в скорости, за счет прямого доступа к данным.

Обсуждалось уже раз 300. СКЛ СКЛ-ю рознь. Как доходит до конкретики, так оказывается что и то нельзя и это нельзя и оптимизатор толкьо rule based.

Вопрос первый: какой стандарт СКЛ-я поддерживаетс кеш?



Rus000
c127

Ну вот, это уже другое дело.
А где ввод-вывод в-из текстового файла?
С остальным сейчас буду разбираться.


вывод в процедуре ОТЧЕТЫ хотя вроде как ввод/вывод не принято показывать ...

ввод не стал показывать, просто сэмулировал пару типов самолетов, десяток рейсов, случайно заполнил купленные билеты ... привести код?


Все еще разбираюсь, времени нет.

Речь шла о вводе запросов, о вводе данных я забыл, их тоже нужно было бы включить. Но если Вы не будете придираться к СКЛ-ю, что там нет ввода-вывода, как это делали сторонники Версанта в упомянутом топике, то ввод-вывод можно проигнорировать. В сайбейзовском варианте СКЛ-я это одна строчка кода на вывод, по одной строке на ввод в одну таблицу и одна строчка командной строки на выполнение запроса, текст которого хранится в файле.

Теперь вопросы:

Что за
/*
Структура данных

^САМОЛЕТ(тип самолета,место)=класс места
^РАСПИСАНИЕ(дата,рейс)=тип самолета
^БИЛЕТЫ(дата,рейс,место)=имя пассажира
^БИЛЕТЫ(дата,рейс,место,"статус")=выкуплен|бронирован
*/

?

Это же комментарий как я понимаю, а где реально задана структура данных?

Типы данных как-нибудь задаются? В программе есть строка
set ^(место,"статус")=1 ;признак "бонирован"
откуда известно что там должно быть "1", а не "t","f", например

Можно ли в
set ^БИЛЕТЫ(дата,рейс,место)=пассажир
ввести "рейс" либо "место" которых нет?

Что делает функция $ORDER?

Покажите пример использования индекса если это несложно. Например по полю "рейс" в ^БИЛЕТЫ(дата,рейс,место)

Насколько я понял часть "Отчет по купленным билетам:" возвращает забронированные или купленные билеты (в смысле объединение множеств). Если это так, то создайте отчет по купленным билетам и покажите как его можно ускорить в смысле отфильтровки забронированных билетов. Если не трудно разумеется. Заодно возможно продемонстрируете пример повторно используемого кода (reusable code).
27 фев 06, 00:49    [2392797]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
c127
Guest
Об $ORDER уже прочитал.
27 фев 06, 00:55    [2392802]     Ответить | Цитировать Сообщить модератору
 Re: Каше vs. Фокс....  [new]
luser
Member [заблокирован]

Откуда: Пердыщево
Сообщений: 1246
Бедные, как же вы все это гавно отлаживаете :)
27 фев 06, 02:17    [2392831]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 5 6 7 8 9 [10] 11 12 13 14 .. 29   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить