powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / правильное создание класса
13 сообщений из 13, страница 1 из 1
правильное создание класса
    #37836162
alex171069
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте господа знатоки cache !!!
Я опять набрался наглости и смею вас побеспокоить...
Не судите строго неразумного школяра, мне просто нужно знать наверняка!

Есть два вопроса :

1) Как правильно создать класс в какой либо области cache, так что бы имея Default Storage, к этому классу можно было бы обратиться как к объекту имеющему несколько индексов в узле а не один как это делается по умолчанию т.е. так чтобы обращение к глобалу выглядело бы вот так ^CacheSpace.Global(id, id, "СТРОКА", id) а не как по умолчанию ^CacheSpace.Global(id) ?

2) КАк получить Id когда обращаетесь через класс который имеет много id в узле
т.е. По умолчанию я получаю id записи вот так s obj= ##class(Cache.Space).OpenId(id)
А как то же самое делать если у глобала несколько индексов определяющих строку ?

Спасибо господа знатоки, еще раз извиняюсь, что посмел вас побеспокоить.
...
Рейтинг: 0 / 0
правильное создание класса
    #37836341
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069, судя по вопросам, вам нужно смотреть в сторону SQL Storage, т.е создавать обычный класс, потом переопределять ему хранение на SQLStorage в соответствии с унаследованной структурой данных. Читать можно здесь , подробнее с примерами здесь

Создавать новые классы с нестандартной структурой хранения можно, но так не делают, по разным причинам:
- Стандартная прозрачна и, в большинстве случаев, достаточно универсальна
- Стандартная поддерживается производителем, а не вами
...
Рейтинг: 0 / 0
правильное создание класса
    #37836421
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintно так не делают, по разным причинам
И сторадж уже не тот, что был ранее... Его "мастер" уж точно. Обкоцали по самые не балуй.
...
Рейтинг: 0 / 0
правильное создание класса
    #37836423
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069так чтобы обращение к глобалу выглядело бы вот так ^CacheSpace.Global(id, id, "СТРОКА", id)
Про SQL можешь сразу забыть...
Т.о. имею встречный вопрос:
- Зачем тогда тебе классы?
...
Рейтинг: 0 / 0
правильное создание класса
    #37836459
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaalex171069так чтобы обращение к глобалу выглядело бы вот так ^CacheSpace.Global(id, id, "СТРОКА", id)
Про SQL можешь сразу забыть...

Видимо, имелись в виду (надеюсь) id объектов разных классов, например (id организации, id отдела, "СТРОКА", id чего-нибудь)
...
Рейтинг: 0 / 0
правильное создание класса
    #37836475
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintВидимо, имелись в виду (надеюсь) id объектов разных классов
Это без разницы...
Там все эти ИД объявляются примарикеями и велся перебор всего и вся. Я тестил в свое время такие варианты - лучше сразу такое забыть.
У нас свое хранение с "вложениями", так вот пытался перевести на классы + индексы описать... Вывод - оно того не стоит.
...
Рейтинг: 0 / 0
правильное создание класса
    #37836695
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069 ,

Вы ранее уже создали три топика с похожим вопросом:

12556343

12271341

12238818

Решения не помогли?

PS:
IdKeys Now Have <Indexname>Exists and <Indexname>Open Methods
Открытие Экземпляра по Индексу
...
Рейтинг: 0 / 0
правильное создание класса
    #37837204
alex171069
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot servit] alex171069 ,

Вы ранее уже создали три топика с похожим вопросом:

12556343

12271341

12238818

Решения не помогли?


Решения помогли но слегка для другого.
Если вы внимательно прочитаете предыдущие топики, то легко поймете, что клоню я мягко говоря не в ту сторону.
Да действительно id используемые в запросе глобала это обращение к другим классам имеющим связи с этим классом.
Я лишь пытаюсь разобраться, как правильно создавать классы имеющие нестандартные индексы узлов (id,id, "Строка", id.....)
используя стандартную по Default структуру хранения, естественно ее переработав...
А стремление создать класс с нестандартными индексами доступа к строке родилось у меня исходя из того, что поиск конкретной строки в стандартной форме хранения представляется весьма не удобным на уровне классов и глобалов.
Имея строку глобала GLOBAL(id) нужно пройтись по нему $Order() перебрав все его строки для того чтобы найти нужное значение в $LB("", дата, " нечто"..... ) это крайне не рациональный способ поиска информации ...
Вы конечно же сейчас упрекнете меня в том, что я не использую SQL в котором все это оптимизированно ... - это все так конечно же, можно использовать и SQL и все сильно упростится...все это конечно же так, но простите это же не реляционная база данных.
По этому хочется использовать более прогрессивные технологии тем более, что они лежат в основе CACHE.
На мой взгляд создав оптимальную структуру хранения в классе я получу преимущество в скорости и удобстве доступа к данным которыми я манипулирую. Все это конечно же относится к классам и глобалам как наиболее быстрым и продуктивным формам доступа к данным. Я в текущей практике имею дело с объемами данных для которых SQL форма доступа уже очень медленная....
...
Рейтинг: 0 / 0
правильное создание класса
    #37837260
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069Имея строку глобала GLOBAL(id) нужно пройтись по нему $Order() перебрав все его строки для того чтобы найти нужное значение в $LB("", дата, " нечто"..... ) это крайне не рациональный способ поиска информации ...
Уже давно придуманы индексы...
...
Рейтинг: 0 / 0
правильное создание класса
    #37837262
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069По этому хочется использовать более прогрессивные технологии тем более, что они лежат в основе CACHE.
Ты явно роешь не в ту сторону...
Забудь про классы придумай свою "прогрессивную" систему хранения и работай с ней.

Но не стоит мучить классы...
...
Рейтинг: 0 / 0
правильное создание класса
    #37837265
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069но простите это же не реляционная база данных
Тут вообще я не понял...
Какую систему хранения и структуру сделаешь именно ты - такой она и станет. Сделаешь реляционную - будет таковой. Замаклачишь древовидную - будет такой.
...
Рейтинг: 0 / 0
правильное создание класса
    #37837272
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069 , у меня встречное предложение...
Было бы гораздо проще озвучивать что именно хочется записать в БД. Т.о. можно будет предложить разные варианты решений по классам ли, по глобалам ли...
Иначе вариант тупиковый. И ты рискуешь перейти на "темную сторону силы", потом будешь везде писать как тебя обмануло Каше... Как ты намучился с ним...
Ну и далее в таком же духе.
...
Рейтинг: 0 / 0
правильное создание класса
    #37837421
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex171069 ,

Данные для класса со стандартной схемой хранения лежат не только в глобале вида global D , но и в global I , global S и global C .
Как справедливо заметил krvsa , Вам нужно смотреть в сторону индексов: Структура хранения индексов в хранимых классах
Если индекс уникальный, то Вы можете использовать методы класса, описанные в предыдущем посте. Иначе - работать с глобалом напрямую или через SQL.

alex171069Вы конечно же сейчас упрекнете меня в том, что я не использую SQL в котором все это оптимизированно ... - это все так конечно же, можно использовать и SQL и все сильно упростится ...все это конечно же так, но простите это же не реляционная база данных. Язык SQL прекрасно подходит не только для РСУБД:
Код: sql
1.
SELECT что-то FROM откуда-то WHERE что-то удовлетворяет неким условиям

Под "что-то" и "откуда-то" подставьте любой источник данных, например:

SQL for WMI ( WQL );

jdbc for image ;

jdbc for file access (text, csv, etc.).

Когда Вы пишете код, использующий объекты, при компиляции он разворачивается в команды set, $get, kill, ...
Когда Вы пишете код, использующий SQL, при компиляции он разворачивается в команды set, $get, kill, ...
Странно, что Вы не хотите использовать преимущества архитектуры СУБД Caché :Цитата из документацииThe object and relational database systems talk directly to the database engine for extremely efficient operation; there is no object-relational middleware or SQL-to-object bridge technology.
alex171069Я в текущей практике имею дело с объемами данных для которых SQL форма доступа уже очень медленная....Текущая практика основана на СУБД Caché?

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


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