Изменения

Перейти к: навигация, поиск

Quotient filter

593 байта добавлено, 22:08, 6 июня 2015
Нет описания правки
Существует связь между размером хранилища и шансом ложноположительного срабатывания. Поддерживаются операции добавления нового элемента в множество. С увеличением размера хранимого множества повышается вероятность ложного срабатывания.
Структуру разработал Michael Bender в 2011 году<ref>Bender, Michael A.; Farach-Colton, Martin; Johnson, Rob; Kuszmaul, Bradley C.; Medjedovic, Dzejla; Montes, Pablo; Shetty, Pradeep; Spillane, Richard P.; Zadok, Erez (June 2011).[http://vldb.org/pvldb/vol5/p1627_michaelabender_vldb2012.pdf "Don't thrash: how to cache your hash on flash" (PDF)]</ref> как замена [[:Фильтр_Блума|фильтра Блума]]. Фильтр используется для ускорения ответов в хранилище ключ-значение.
 
[[Файл:filter.png|400px|thumb|right|Фильтр используется для ускорения ответов в хранилище ключ-значение. Пары ключ-значение содержатся в хранилище с медленным доступом. Фильтр отфильтровывает ненужные запросы в хранилище (запрос ключа которого точно нет в хранилище), что ускоряет его работу вцелом, но увеличевает потребление памяти]]
==Описание структуры данных==
Пусть мы ищем ключ <tex>K</tex>. Смотрим в его каноническую ячейку <tex>H_q</tex>. Если бит занятости не единица, то элемент точно не содержится в множестве.
Если бит занятости единица, то нам нужно найти пробег для <tex>H_q</tex>. Так как начало нужного пробега может быть сдвинуто, найдем начало кластера. Идем влево от ячейки <tex>H_q</tex> и ищем первую с битом сдвига равным нулю, эта ячейка и будет началом кластера. Пока мы идем влево от <tex>H_q</tex> будем поддерживать счетчик, который бедет показывать сколько пробегов нам нужно будет пропустить от начала кластера. Каждая ячейка с битом занятости равным единице увеличивает счетчик на <tex>1</tex>. После того как мы нашли начало кластера, пойдем от него влево, каждая ячейка с битом продолжения равным нулю говорит о завершении пробега, когда счетчик станет равным нулю мы найдем нужный нам пробег для <tex>H_q</tex>. Если в этом пробеге содержится <tex>H_r</tex>, то <tex>K</tex> ,вероятно, содержится в множестве, иначе <tex>K</tex> точно не содержится в множестве.
=== Вставка ===
41
правка

Навигация