Бx-стабло

С Википедије, слободне енциклопедије

У информатици, Бx стабло је засновано на Б+ стаблу и представља индексну струкутру за покретне објекте.

Структура индекса[уреди | уреди извор]

Основна структура Бx-стабла представља Б+ стабло унутар кога чворови служе као директоријуми и сваки чвор садржи показивач ка свом десном комшији. У претходној верзиији Бx-стабла, [1] листови су садржали локације индексирања покретног-објекта и одговарајуће време индексирања. У оптимизованој верзији,[2] сваки унос у лист садржи идентификатор, брзину, једнодимензионалну вредност мапирања и последње ажурирано време објекта. Дистрибуција се повећава нечувањем положаја покретних објеката, јер се они добијају из мапираних вредности.

Коришћење Б+ стабла за покретне објекте[уреди | уреди извор]

Пример Бx-стабла са бројем партиција једнаким 2 са једним интервалом максималног ажурирања. У овом примеру, највише 3 партиције могу да постоје у исто време. После линеаризације, локација објекта унесена за време 0 је индексирана у партицији 0 са ознаком временског печата 0.5tmu, локације објекта ажуриране времена 0 на 0.5tmu су индексиране у партицији 1 са ознаком временског печата tmu, и тако даље(показано стрелицом). Како време пролази, понављајући први опсег истиче(осенчено подручје), а нови опсег се додаје(испрекидана линија).

Као и за друге индексе објеката у покрету, дводимензионално кретање објекта је моделовано као линеарна функција O = ((x, y), (vx, vy), t ), где су (x, y) и (vx, vy) локација и брзина објеката у датом временском тренутку t, нпр. време последњег ажурирања. Б+ стабло је структура за индексирање једнодимензионалних података. Како би се Б+ стабло усвојило као индекс покретног објекта, Бx-стабло користи технику линеарности која помаже да се интегрише локација објекта за време t у једнодимензионалну вредност. Конкретно, објекти се прво класификују по времену ажурирања. За објекте из те класе, Бx-стабло складисти њихове локације у датом тренутку које су процењене помоћу линеарне интрерполације. На тај начин Бx-стабло чува доследан приказ свих објеката из исте класе без чувања времена ажурирања објеката.

Друго, простор је подељен мрежом и локација објекта је линеаризована унутар партиције према кривој која испуњава простор, нпр. Пеанова или Хилбертова крива.

Коначно, са комбинацијом броја партиције (временска информација) и линеарног реда (информација о локацији), објекат се индексира у Бx-стабло једнодимензионалним кључем индекса Бx вредност:

Овде је индекс партиција индекс партиција одређена временом ажурирања а xrep је вредност криве која попуњава простор позиције објекта у ундексном времену, означава бинарну вредност x, а “+” означава конкатенацију.

За дати објекат O ((7, 2), (-0.1,0.05), 10), tmu = 120, Бx вредност за O може бити израчуната као што следи.

  1. О је индексиран у партицији 0, као што је поменуто. Стога, партиција индекса = (00)2.
  2. Позиција О на етикети временског пецата партиције 0 је (1,5).
  3. Користећи Z криву са редом = 3, Z-вредност од O, нпр, xrep је (010011)2.
  4. Конкатенацијом индекс партиције и xrep-а, Бx вредност је (00010011)2=19.

Унос, ажурирање и брисање[уреди | уреди извор]

Када је дат нови објекат, његов индексни кључ се израчунава и уноси у Бx-стабло као у Б+ стабло. Ажурирање се састоји од брисања које прати нови унос. Задатак помоћне структуре је да чува последњи кључ сваког индекса како би објекат био обрисан тражењем кључа. Индексни кључ се израчунава пре утицаја на стабло. На овај начин Бx-стабло директно задржава добра својства Б+ стабла, и постиже ефикасне перформансе ажурирања.

Упити[уреди | уреди извор]

Опсег упита[уреди | уреди извор]

Опсег упита преузима све објекте чија локација потпада под правоугаони опсег у време не пре садашњег времена.

Бx-стабло користи технику проширења прозора упита како би одговорило на упите. Пошто Бx-стабло чува локацију објекта нешто после ажурирања времена, проширење обухвата два случаја: локација се мора или вратити на раније време или напредовати на касније. Главна идеја је да се прозор упита увећа како би обухватао све објекте чија позиција није у оквиру прозора упита на његовој ознаци временског печата, али ће ући у прозор упита на временски печат упита.

Након проширења, партиције Бx-дрвета треба да се укрсте како би пронашле објекте који спадају у проширени прозор упита. У свакој партицији, употреба криве која испуњава простор значи да опсег упита у природном, дводимензионалном простору постаје скуп опсега упита у трансформисаном, једнодимензионалном простору. [1]

Како би се избегао превелики опсег упита након експанзије у искошеном скупу података, постоји оптимизација алгоритма упита, [3] која побољшава ефикасност упита избегавајући непотребно проширење истог.

K најближи сусед упита[уреди | уреди извор]

K најближи сусед упита је израчунат итеративним представљањем опсега упита са инкрементало увећаним регионом за претраживање док се к одговора не добије. Друга могућност је потражити сличне идеје о упитима у The iDistance Technique.

Остали упити[уреди | уреди извор]

Опсег упита и К најближи сусед упита алгоритам може лако да се прошири како би подржавао интервале упита, континуиране упите, итд. [2]

Прилагођавање релационе базе података за смештај покретних објеката[уреди | уреди извор]

Пошто је Бx-стабло индекс изграђен над Б+ стаблом, све операције у Бx-стаблу, укључујући унос, брисање и тражење су исте као у Б+ стаблу. Нема потребе да се имплементације ових операција мењају. Једина разлика је спровођење поступка извођења индексног кључа као ускладиштена процедура у постојећем ДМБС. Стога се Бx-стабло лако може интегрисати у постојећи ДМБС без додиривања кернела.

SРADE[4] је управљачки систем за покретне објекте изграђен на врху популарне релационе базе података MySQL, која користи Бx-стабло за индексирање објеката. У реализацији, подаци о покретном објекту се трансформишу и чувају директно у MySQL-у, упити се транформишу у стандардне SQL извештаје који су ефикасно обрађени у релационој бази. Најважније, све то се постиже уредно и независно без мешања у MySQL кернел.

Подешавање перформанси[уреди | уреди извор]

Могући проблеми са искошеним подацима[уреди | уреди извор]

Бx стабло користи мрежу за просторно дељење док мапира дводимензионалне локације у једнодимензионални кључ. Ово може довести до смањења перформанси како упита тако и радњи ажурирања док се ради са искошеним подацима. Ако је мрежна ћелија превелика, у ћелији се налазе многи објекти. Пошто индекс не разликује објекте у ћелији, у основи Б+ стабла налазиће се неки преоптерећени чворови. Постојање пренатрпаних ћелија не само да нарушавају равнотежу стабла, већ повећавају трошкове ажурирања. Што се тиче упита, за дату област упита, велике ћелије остварују више лажних детекција и време обраде. Са друге стране, ако је простор подељен финијом мрежом, односно са мање ћелија, свака ћелија садржи неколико објеката. Тешко долази до преоптерећења, па је време ажурирања минимизовано. Мање лажних детекција се преузима у упиту. Међутим, треба претражити већи број ћелија. Повећање броја ћелија такође повећава оптерећење упита.

Подешавање индекса[уреди | уреди извор]

ST2Б-стабло [5] уводи оквир за самостално подешавање перформанси код подешавања перформанси Бx-стабла када се бави искошеним подацима у простору и променом података времена. С намером да обрађује искошене податке у простору, ST2Б-стабло дели цео простор у рејоне са различитом збијеношћу објеката користећи скуп референтних тачака. Сваки рејон користи посебну мрежу чија је ћелија одређена збијеношћу објеката унутар ћелије.

Бx-стабло има многе партиције које се односе на различите временске интервале. Како време пролази, свака партиција се скупља и шири наизменично. ST2Б-стабло користи ову функцију за подешавање индекса у мрежи, да би прилагодио дељење простора како би се простор прилагодио временом на промене података. Нарочито, како се партиција скупља до испражњења и почиње да расте, бира нови сет референтних тачака и нову мрежу за сваку референтну тачку према њиховој збијености података. Подешавање се заснива на најновијим статистичким подацима прикупљеним током одређеног временског периода, тако да дељење партиције треба највише да одговара последњем уносу података. На тај начин ST2Б-стабло треба да минимизује ефекат који је настао изобличавањем података у простору и промене података настале временом.

Видите такође[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ а б Christian S. Jensen, Dan Lin, and Beng Chin Ooi. Query and Update Efficient B+tree based Indexing of Moving Objects. In Proceedings of 30th International Conference on Very Large Data Bases (VLDB), pages 768-779, 2004.
  2. ^ а б Dan Lin. Indexing and Querying Moving Objects Databases, PhD thesis, National University of Singapore, 2006.
  3. ^ Jensen, C.S., D. Tiesyte, N. Tradisauskas, Robust B+-Tree-Based Indexing of Moving Objects, in Proceedings of the Seventh International Conference on Mobile Data Management, Nara, Japan, 9 pages, May 9–12, 2006.
  4. ^ SpADE Архивирано на сајту Wayback Machine (2. јануар 2009): A SPatio-temporal Autonomic Database Engine for location-aware services.
  5. ^ Su Chen, Beng Chin Ooi, Kan-Lee. Tan, and Mario A. Nacismento, ST2B-tree: A Self-Tunable Spatio-Temporal B+-tree for Moving Objects Архивирано на сајту Wayback Machine (11. јун 2011). In Proceedings of ACM SIGMOD International Conference on Management of Data (SIGMOD), page 29-42, 2008.

Шаблон:CS-Trees