powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / В чем прелесть bitslice индексов?
13 сообщений из 13, страница 1 из 1
В чем прелесть bitslice индексов?
    #36258508
Socratdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно в этом и вопрос...
В документации про эти индексы написано мало - я бы даже сказал совсем ни чего!
Сказано, что это специальная форма индекса, которая позволяет очень быстро выполнять некоторые выражения - такие, как сумма и ранжирование. А так же в дальнейшем будут оптимизированы некоторые запросы с использованием таких индексов. Вот собственно и всё.
С тех пор уже прошло довольно много времени, а информации до сих пор ноль.

Может кто-то из знающих подскажет с чем его едят?
Кто-нибудь использует их?
На каких запросах он работает?
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36258962
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36259255
Socratdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CJIECAPb,

Ну с форматом этих индексов всё понятно, теперь осталось разобраться с этим:

Кто-нибудь использует их?
На каких запросах он работает?
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36259483
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SocratdvКто-нибудь использует их?
Наверняка )
Но мы например пока обходимся Bitmap-индексами

SocratdvНа каких запросах он работает?
Что значит "работает"?
Использует ли конкретный запрос данный индекс можно увидеть по плану запроса.
Эффективность этого типа индексов надо оценивать на конкретном наборе данных и конкретном запросе.
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36259832
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SocratdvCJIECAPb,

Ну с форматом этих индексов всё понятно, теперь осталось разобраться с этим:

Кто-нибудь использует их?
На каких запросах он работает?

Иногда используют. Эффективно на операциях типа получить сумму. Если выигрыш на операции два порядка - то почему бы и не пойти на поддержку такого индекса. Смотрите, взвешивайте факторы что у вас в проектах, может оказаться и бесполезно, смотря что у вас за факторы.
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36261220
Socratdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что кто-то их использует это я и так понимаю - не с проста ж их создавали! :)
Вот только кто и для каких целей?
Хотелось бы реальных примеров использования этих индексов на конкретных запросах...

Например, у меня есть такие поля:
Код: plaintext
1.
2.
Count - %Integer
Flag1 - %Integer
Flag2 - %Integer

Хочется быстро получить результат подобного запроса:
Код: plaintext
SELECT SUM(Count) ... WHERE Flag1 =  1  AND Flag2 =  2 
Bitmap индексы на поля Flag1, Flag2 висят.
Суммирование хотелось бы убыстрить.

Какие bitslice индексы можно повесить в данном случае?
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36261286
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Socratdv,

Сомневаюсь, что такой запрос может быть сильно ускорен bitslice-индексами

Они позволяют ускорять прежде всего запросы вида:
Код: plaintext
1.
SELECT COUNT(*) ... WHERE Flag1 =  1  AND Flag2 =  2  AND Flag3 =  234 
В данном случае подразумевается наличие индексов по полям Flag1, Flag2 и Flag3

Фактически, bitslice-индексы служат тем же целям что и bitmap, но занимают меньше места в базе.
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36262305
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SocratdvНу что кто-то их использует это я и так понимаю - не с проста ж их создавали! :)
Вот только кто и для каких целей?
Хотелось бы реальных примеров использования этих индексов на конкретных запросах...

Например, у меня есть такие поля:
Код: plaintext
1.
2.
Count - %Integer
Flag1 - %Integer
Flag2 - %Integer

Хочется быстро получить результат подобного запроса:
Код: plaintext
SELECT SUM(Count) ... WHERE Flag1 =  1  AND Flag2 =  2 
Bitmap индексы на поля Flag1, Flag2 висят.
Суммирование хотелось бы убыстрить.

Какие bitslice индексы можно повесить в данном случае?

Насколько я помню, именно такой запрос будет ускорен.
Для этого вы должны построить bitmap-индексы для Flag1 и Flag2 и bitslice для Count.
Попробуйте выполнить такой запрос без bitslice-индексом и с ним, только нужно будет перестроить индексы между запросами.
Посмотрите время выполнения и план запроса.

Вадим
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #36262383
VadimF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько слайдов про bitslice-индексы есть в моей презентации "Решение задачи BI и BAM на платформе для интеграции и разработки приложений InterSystems Ensemble" на конференции корпоративные базы данных 2007.
Посмотрите скрытые слайды 34-43 про bitmap- и bitslice-индексы.

Bitslice-индексы уже сейчас используются SQL-оптимизатором Cache' для ограниченного ряда запросов.
Постепенно количество запросов, в которых bitslice-индексы могут помочь, увеличивается.

Собственная реализация BitSlice-индексов применяется в свободно распространяемом продукте Hyperindex с открытым кодом, предназначенном для создании витрин данных, и в продукте InterSystems DeepSee для создания real-time BI-приложений.

Вот фрагмент документации какой-то старой версии Hyperindex на эту тему:
Код: plaintext
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.
There are two types of index that you can create with HyperIndex – BitMap and BitSlice.  BitMap indices allow you to search, count, select and drilldown, BitSlice indices allow you to total, minimum, maximum and average the values of data field. A field can be indexed in either or both of these ways.


 6 . 3 	BitSlice Indices

If you wish to be able to sum, maximum, minimum or average a property (much faster than the equivalent SQL functions can do), then you need to add some BitSlice indices We will use the property Amount, assumed to be a float with  2  decimals, in our examples

To define a BitSlice index for the Amount field we add a BitSlice parameter:

Property TotalAmount As %Float;
	Parameter HiTotalAmount = ”BitSlice[Amount]( 2 )”

This tells the system to create a BitSlice index on the TotalAmount field, under the Category ‘Amount’ (which must be unique !), and to scale the value by  2  places (i.e.  100 )

In the case of a BitSlice index, rather than indexing on each value of the Amount property, the value is broken down into its binary value and then indexed on each bit of that value.

For example, if the TotalAmount for one record is  0 . 83 , this is scaled to  83  and then broken down into the binary value ‘ 1010011 ’ and the record is indexed under
	Amount bit  7  is set
	Amount bit  5  is set
	Amount bit  2  is set
	Amount bit  1  is set

This indexing is stored along with the BitMap indices, but a note is made that the Category ‘Amount’ here is a BitSlice category.





В следующих версиях Cache' bitslice-индексы будут более активно применяться SQL-оптимизатором. DeepSee в следующих версиях будет использовать стандартные bitslice-индексы, те же, что использует SQL-оптимизатор.

В DeepSee также появится язык запросов MDX, который является стандартным для BI-продуктов, но это уже другая тема...

Вадим
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
В чем прелесть bitslice индексов?
    #37055907
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал сделать Bitslice индекс, пока лыжи не едут

Index Status On Status;
Index StatusSlice On Status [ Type = bitslice ];

select count(*) from table1 where status=0

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

Подскажите, как задействовать новый индекс, какие запросы для этого нужны?
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #37056359
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. ,

Class del.b Extends %Persistent
{
Index ia1 On a [ Type = index ];
Index ia2 On a [ Type = bitslice ];
Index ia3 On a [ Type = bitmap ];
Index iStatus On Status [ Type = bitmap ];
Property a As %Integer;
Property Status As %Boolean;

ClassMethod Fill(N As %Integer = {1e6}) As %Status
{
  do DISABLE^%SYS.NOJRN
  do ##class(del.b).%KillExtent()
  set ^del.bD=N
  for i=1:1:N set ^del.bD(i)=$listbuild("",$r(1e2),$r(2))
  do ##class(del.b).%BuildIndices()
  do $system.SQL.TuneTable("del.b",1)
  do ENABLE^%SYS.NOJRN
  quit $$$OK
}
}

Посмотрите используемые индексы для запросов:
Код: plaintext
1.
2.
3.
4.
select count(*) from del.b
select count(a) from del.b
select sum(a) from del.b
select avg(a) from del.b
select count(*) from del.b where Status= 0 
...
Рейтинг: 0 / 0
В чем прелесть bitslice индексов?
    #37060242
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, все равно не понимаю
bitslice индекс включился только на запросе
Код: plaintext
select sum(a) from del.b
при добавлении других условий используется битмап.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
В чем прелесть bitslice индексов?
    #38334505
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. ,

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


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