NOTA Acesta nu este un produs Google acceptat oficial.
Prezentare generala
Indexul cucului (CI) este o structura de index secundara usoara care reprezinta relatia de mai multi la multi dintre taste si partitiile coloanelor intr-un mod foarte eficient din punct de vedere spatial. In esenta, CI asociaza amprente de dimensiuni variabile intr-un filtru Cuc cu harti de biti comprimate care indica partitii calificate.
Ce problema rezolva?
Problema gasirii tuturor partitiilor care contin probabil o anumita cheie de cautare este rezolvata in mod traditional prin mentinerea unui filtru (de exemplu, un filtru Bloom) per partitie care indexeaza toate valorile cheii unice continute in aceasta partitie:
Pentru a identifica toate partitiile care contin o cheie, trebuie sa analizam toate filtrele per-partitie (care ar putea fi multe). Deoarece un filtru Bloom poate returna pozitive false, exista sansa (de ex. 1%) sa identificam accidental o partitie negativa ca fiind pozitiva. In exemplul de mai sus, o cautare pentru cheia A poate returna partitia 0 (adevarat pozitiv) si 1 (fals pozitiv). In functie de mediul de stocare, o partitie fals pozitiva poate fi foarte costisitoare (de exemplu, multe milisecunde pe disc).
Mai mult, coloanele secundare contin de obicei multe dubluri (de asemenea, pe partitii). Cu designul filtrului pe partitii, aceste duplicate pot fi indexate in filtre multiple (in cel mai rau caz, in toate filtrele). In exemplul de mai sus, cheia B este indexata redundant in filtrele Bloom 0 si 1.
Cuckoo Index abordeaza ambele dezavantaje ale filtrelor pe partitii.
Caracteristici
- Rezultate 100% corecte pentru cautari cu chei care apar (spre deosebire de filtrele pe fiecare partitie).
- Rata de scanare configurabila (raportul partitiilor fals pozitive) pentru cautari cu chei care nu apar.
- Marime de amprenta mult mai mica decat indexurile depline care stocheaza chei de dimensiuni mari.
- Dimensiune de amprenta mai mica decat filtrele per partitie pentru coloanele de cardinalitate joasa pana la medie.
Limitari
- Necesita acces la toate cheile in momentul construirii.
- Timp de constructie relativ ridicat (in O (n), dar cu un factor constant ridicat) comparativ cu, de exemplu, filtrele Bloom per-partitie.
- Odata construit, CI este imuabil, dar rapid de interogat (foloseste o structura de sustinere a rangului pentru apeluri de rang eficiente).
Rularea experimentelor
Pregatiti un set de date intr-un format CSV pe care urmeaza sa il utilizati.
argentina follada travestis dotadas
paginas videos porno gratis lesbianasx
porno español trios cinema gropers
hermanos españoles follando me corro en la boca de mama
porno jovencitas españolas trios gays
xxx orgias coñosxxx
halle berry desnuda corridas en la playa
peliculas eroticas alemanas mamada de rodillas
incesto x mature.com
parejas pilladas en la calle pajas de madres
porno peludas españolas pelis porno francesas
tetonas cubanas escenas porno en cine convencional
comicxxx porno chileno
madura tetona orgias familiares
corridas a chorro mía kalifa
viejas tetonas aventura en pelotas xxx
tetas puntiagudas argentina follada
porno de abuelas desnudas en la cocina
porno flash videdos porno
videos sexo gratis super tetudas
Unul dintre seturile de date pe care le-am folosit a fost inregistrarile de vehicule, snowmobile si barci DMV.
Pentru experimentele de amprenta, rulati urmatoarea comanda, specificand calea catre fisierul de date, coloanele de testat si testele de rulat.
Pentru experimentele de performanta de cautare, rulati urmatoarea comanda, specificand calea catre fisierul de date si coloanele de testat.
NOTA Este posibil sa doriti sa utilizati mai putine randuri pentru experimentele de cautare, deoarece criteriile de referinta consuma destul de mult timp.
Organizarea codului
Cadrul de evaluare
- Evaluare (evaluate.h): Punct de intrare (binar) in cadrul nostru de evaluare cu instantierea tuturor indexurilor.
- Evaluator (evaluator.h): Cadrul de evaluare.
- Tabel / Coloana (data.h): Coloane intregi pe care executam parametrii de referinta (coloanele sirului sunt codificate dict).
- IndexStructure (index_structure.h): interfata partajata intre toti indexurile.
Indicele Cucului
- CuckooIndex (cuckoo_index.h): clasa principala a indexului cucului.
- CuckooKicker (cuckoo_kicker.h): o euristica care gaseste o atribuire aproape de optima a cheilor catre galeti (in ceea ce priveste raportul articolelor care locuiesc in galeti primare).
- FingerprintStore (fingerprint_store.h): stocheaza amprente de dimensiuni variabile in format pachet de biti.
- RleBitmap (rle_bitmap.h): o reprezentare bitmap bazata pe RLE (in functie de biti, nealiniata) (pentru bitmapuri rare folosim liste de pozitii).
- BitPackedReader (bit_packing.h): O clasa de asistenta pentru stocarea si recuperarea de date bitpacked.
Cita
Va rugam sa citati lucrarea noastra VLDB 2020 daca utilizati acest cod in propria dvs. lucrare:








