Indici - informatică, programare

Acesta se va concentra pe algoritmi și structuri de date, organizarea și sprijinul lor. Indicele termen este apoi utilizat strict în scopul desemnării structurilor de căutare și de optimizare suplimentare. Limba principală a exemplelor selectate limba oreion. Dacă este posibil, utilizați sintaxa strandartny, în unele cazuri excepționale, pentru mai multe lizibilitate aplică Script Cache Object - expansiune. Utilizarea lor este limitată și permite o alternativă pentru a înlocui expresii echivalente în alte OREIONUL dialecte.

Indici - este structura de date fiind aranjate paralel și menținute în principalele structuri de date sincronismului și având scopul principal de a menține structuri de date orientate pentru a accelera căutarea sau optimizarea stocarea datelor principale. Aici, sub master de date se referă la stocarea datelor și activitatea pe care este scopul principal al sistemului de baze de date.

Când se utilizează sistemul de baze de date master de date efectuează inserare, căutare, ștergeți și schimbați în matrice de date de master. Atunci când se utilizează structuri de index suplimentare sistem paralel actualizează structura indicelui la schimbarea (insera, actualiza și șterge) datele de bază și, în unele cazuri, este capabil de a utiliza structura indicelui, axat pe datele de căutare. Această posibilitate depinde de caracteristicile indicelui.

După cum se poate observa din cele de mai sus, introducerea de indici într-un sistem de baze de date agravează operațiunea asociată cu modificări ale datelor, dar accelerează operațiunile legate de căutare, și, ca de obicei, o consecință a acestui fapt, eșantionul de date.

Structuri Index în sine nu sunt de obicei necesare pentru funcționarea sistemului de baze de date. Utilizarea lor este determinată de către administratorul de sistem sau programator.

Cele mai multe sisteme de baze de date comune de sprijin structurilor de index și utilizarea acestora se realizează prin mijloace automate. În această lucrare, vom fi structuri și algoritmi care pot fi utilizate este automată și utiliza pe deplin orice limitări ale sistemului de baze de date. Despre ca și în cazul în care, în parte puse în aplicare mecanismele interne ale unui sistem mare, dar într-o versiune oarecum simplificată.

Un mecanism generalizat pentru a sprijini indicele.

Structura indicelui de starea lor trebuie să respecte starea datelor indexate. Prin urmare, operațiunea de actualizare indicele este de obicei împărțit în două grupuri - dinamice structuri de actualizare de indexare în actualizarea înregistrărilor și de masă operațiunea de ștergere / construcție a indicilor.

În continuare considerăm șirurile de date, aranjate pentru simplitate, după cum urmează:

Obținem înregistrare nod ID incrementului ^ Date

înregistrând valoarea stocată în nodul ^ Date (id)

înregistrare este format din câmpuri delimitate

înregistrările index sunt stocate cu globale ^ Index

în înregistrare domenii își asumă - o cifră, culoare, cantitate

structura generală a înregistrării: ^ Date (id) = Figura

operațiuni Dynamic Update indexează pot fi incorporate sub forma unei operațiuni de înregistrare și actualizare de apel, fie să preceadă păstrarea efectivă de înregistrare primară sau urmați-l, sau cofrare. De exemplu:

; simplu persistența obiect

i „+ $ g (id) s id = $ i (^ Data)

; actualizați indexul înainte de a salva

; încadrare actualizarea indexuri la salvarea

i „+ $ g (id) s id = $ i (^ Data)

Aici DeletIndices șterge intrările de index pentru acest obiect, și InsertIndices le creează. În acest caz, se referă la un simplu format pentru stocarea înregistrărilor - într-o singură linie, care este interpretată fie ca un șir de caractere sau ca o listă delimitată. În ciuda faptului că cele trei metode în cele din urmă se obține același rezultat, există o diferență între ele este cât de bine va rula un (simultan pentru mai multe procese) de acces competitiv la date și indicii. În cazul stocării datelor numai la această întrebare aproape că nu este necesară, deoarece funcționarea atomică set. În cazul structurilor paralele indici există un moment între statele în care nu există nici o înregistrare, dar există un index, sau indicele este, dar nu există nici o înregistrare. Această problemă este rezolvată de obicei prin utilizarea de încuietori. Operațiunea a seta o nouă valoare record de echipe flancate

Și funcțiile din interiorul șterge / introduce intrări index sunt, de asemenea, introduse de flancare de blocare. încuietori Disponibilitate în special critice în cazul executării de cod în contextul tranzacțiilor și posibilitatea de trollback operare.

Diferența în reconstrucția modul index, și anume faptul că înainte de a apare în baza de date - înregistrare index sau scrie date, vă permite să construiască într-un anumit sens, un sistem de auto-vindecare, care va fi capabil să vosstanovitsya în caz de eșec în linia de date de scriere. În cazul în care indicele este construit mai devreme, în timp ce la preluarea funcției de eșantionare a datelor de index poate determina că există intrarea din index, dar nu se potrivește cu șirul de date. În cazul ecluze în înregistrările operație de actualizare vom proba funcție putem încerca, de asemenea, pentru a bloca aceeași înregistrare, iar dacă blocarea a fost de succes, dar nu există nici o înregistrare, sau de stat nu se potrivește cu valoarea indicelui, aceasta înseamnă că cea mai mare parte operațiunea șir de date de scriere nu a avut succes și ar trebui să fie ușor de îndepărtat înregistrare index. Mecanismul destul de greoaie, dar într-o situație în care, din motive de eficiență nu doresc să utilizeze tranzacția poate fi utilă. index Intrebare actualizări de strategie de selecție atunci când actualizarea înregistrărilor părăsi programator.

Operațiunea reconstrui indexul este redus la eliminarea tuturor intrărilor de index și căutarea tuturor înregistrărilor de date disponibile și construirea intrările de index pentru fiecare înregistrări de date disponibile. Noi credem că funcția DeleteIndex pentru a șterge toate intrările de index într-un singur index. Apoi reconstrui indexul ar putea arata ca

s id = "" f s id = $ o (^ Date (id), ObjValue) q: id = "" d

articole similare