powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Bitmap индекс
16 сообщений из 16, страница 1 из 1
Bitmap индекс
    #34767389
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть битмап индекс по полю Name.
выглядит он так:
^test.classI("IndName","Name0",1) = "Ђ"_$c(0)_"?"_$c(31,0,0,1,2,24,0,0,2,0,8,0,16......................
^test.classI("IndName","Name0",2) = "‚"_$c(0)_"@"_$c(31,0)_"Ђ"_$c..............
^test.classI("IndName","Name0",3) = "Ѓ"_$c(0)_"?"_$c(31,4,0,0,0)_"Ќ"_$c........
........
^test.classI("IndName","Name1",1) = "„"_$c(0)_"?"_$c(31)_"$"_$c(0)_"(".............

вопрос вот в чем:
1. как узнать номер блока?
2. как узнать ID объекта, удовлетворяющего условию "Name0" в битовой карте, учитывая что блоков много?
...
Рейтинг: 0 / 0
Bitmap индекс
    #34767472
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRover , он (индекс) не для этого испольуется

Номер какого блока?
id узнается по позиции 1 в битовой "раскладке". Т.е. если имеем:
0000010010011
Значит нам подходят id 6, 9, 12 и 13

Зачем тебе этот индекс? :)
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Bitmap индекс
    #34767792
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что мне нужно именно прямым доступом получить эти самые ID.
...
Рейтинг: 0 / 0
Bitmap индекс
    #34767809
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я спрашиваю
- Че ты имено к этому (битмап) индексу пристал? :)
Мало тебе других индексов?... Сделай еще один... Не битмап и будет тебе счастье.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Bitmap индекс
    #34767815
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А номер блока - это
^test.classI("IndName","Name0", 1 )
^test.classI("IndName","Name0", 2 )

вот его и нужно узнать.

еще я не очень понимаю как вообще работать с этой битовой картой..
я знаю, что к ней применяются всякие $B, $BitCount и тп..
но вот допустим, есть у меня этот индекс и надо узнать ID объектов с именем "Name0".

Как это сделать, используя прямой доступ??
...
Рейтинг: 0 / 0
Bitmap индекс
    #34767832
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaЯ спрашиваю
- Че ты имено к этому (битмап) индексу пристал? :)
Мало тебе других индексов?... Сделай еще один... Не битмап и будет тебе счастье.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT


Потому что у нас все реализовано на битовых индексах..

в общем, мне действительно нужен именно битмап! честно)))
...
Рейтинг: 0 / 0
Bitmap индекс
    #34767975
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Битмап индекс разрабатывался не для этого... Он разрабатывался для ускорения SQL запросов...
Вы не там ищете ускорение в прямом доступе. это все равно что рыть подземный ход на чердак...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Bitmap индекс
    #34768086
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
См:
Caché Development Guides -> Using Caché Multidimensional Storage -> SQL and Object Use of Multidimensional Storage -> Bitmap Indices
...
Рейтинг: 0 / 0
Bitmap индекс
    #34768174
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hampster-MumpsterСм:
Caché Development Guides -> Using Caché Multidimensional Storage -> SQL and Object Use of Multidimensional Storage -> Bitmap Indices

это по-моему единственное упоминание в каши о битовых индексах...
эта статейка уже изучена вдоль и поперек..
...
Рейтинг: 0 / 0
Bitmap индекс
    #34768330
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда что конкретно не получилось? Пример вычисления SELECT COUNT(*) "вручную" там есть, осталось его творчески переработать... Кстати, можно подсмотреть решение и в коде SQL-запросов, если, конечно, его (код) сохранять.
...
Рейтинг: 0 / 0
Bitmap индекс
    #34768552
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hampster-MumpsterТогда что конкретно не получилось? Пример вычисления SELECT COUNT(*) "вручную" там есть, осталось его творчески переработать... Кстати, можно подсмотреть решение и в коде SQL-запросов, если, конечно, его (код) сохранять.

я не знаю как получить ID объекта, удовлетворяющего например name="Name0"... мне надо через прямой доступ, а не sql запрос.. так как когда в бд больше 30 млн записей, SQL - не катит!!!!!
...
Рейтинг: 0 / 0
Bitmap индекс
    #34768709
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRover , сделай обычный индекс и не муч себя... Скажу больше... Даже SQL получит хорошее ускорение
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Bitmap индекс
    #34768879
Hampster-Mumpster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL-запросы компилируются в обычный код на COS. Для динамического SQL формируются программы с именами вида CacheSql*. Для статического SQL - просто INT-код своей же проги. Здесь и надо подсматривать :) Кстати, качество генерируемого кода весьма хорошее, и всерьез ускорить едва ли удастся, если используется стандартная схема хранения данных.
...
Рейтинг: 0 / 0
Bitmap индекс
    #34769285
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRover
я не знаю как получить ID объекта, удовлетворяющего например name="Name0"... мне надо через прямой доступ, а не sql запрос.. так как когда в бд больше 30 млн записей, SQL - не катит!!!!!
Так может "забить" на объекты и SQL и мыслить на уровне М ? Быстрее точно не полчуится ;-) Заодно и переносимость появится (Cache не последняя М-система ;-))
...
Рейтинг: 0 / 0
Bitmap индекс
    #34771992
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если посмотришь во что компилируется твой класс, то увидишь примерно следующее:
Код: plaintext
1.
2.
3.
4.
5.
	s pidchunk=id\ 64000 + 1 ,pidoffset=id# 64000 + 1 
	s %d1=$g(^Messages.MessageD(id)),%a3=$lg(%d1, 8 ),%a2=$lg(%d1, 7 ),%a1=$lg(%d1, 2 )
        ..............................
        i $li(sHandle, 2 )=- 1  s $bit(^Messages.MessageI("AutorIndex",%a1,pidchunk),pidoffset)= 1 
        ...............................
Тоесть если тебе нужно выбрать id всех объектов по заданному значению Val свойства Name, надо действовать примерно следующим образом:
Обходить все "блоки", как ты их называешь

S key=$O(^test.classI("IndName",Val,key))

Для каждого key искать все установленные биты и вычислять id:
Код: plaintext
1.
2.
3.
4.
5.
6.
        S pos=$BITFIND(^test.classI("IndName",Val,key), 1 )
        WHILE pos> 0 
        {
                S id=(key- 1 )* 64000 +pos- 1 
                S pos=$BITFIND(^test.classI("IndName",Val,key), 1 ,pos)
        }
...
Рейтинг: 0 / 0
Bitmap индекс
    #34772402
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое!!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Bitmap индекс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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