• Non ci sono risultati.

U n al tro me t odo, s fr ut tat o d a Ne o4j p er b i la nc iar e il c ar ico d i la voro, è q uel lo di i mp i e gare l a tec ni ca c hia ma t a Cach e S ha rd ing . Q ue s ta t ec nic a si b a sa s ul fat to c he le q uer ie s ve ngo no e s e guit e più ve lo ce me nt e , s e la po r- zione del grafo di interesse è ancora salvata all’interno della memoria c e ntr al e. I l c ac he S hard ing c o ns i st e ne l di re zio na re le r ic hi e st e ve rs o q uei no di de l c l ust er c he co nte ngo i n me mo r i a ce ntr ale i so t to gr a fi c he se r vo no a sodd i s far le.

Estensioni

Le estensioni consentono di eseguire del codice Java all’interno del server. L’utilizzo delle estensioni permette di estendere la REST API o p- p ure di r i mp i a zz arl a co mp le ta me nt e .

Le e s te ns io ni pre ndo no l a for ma di J AX- RS ann ota te d cl a s se s . U na J AX -R S è una J a va AP I c o str ui ta p er r is or se REST ful , i n a l tre p aro le è un AP I co s tr ui ta p er i l l i ngua ggi o J a va na ta p er i nt er loq uir e co n un ar c hit et t u - r a d i t ipo R E ST .

D a to c he le e st e ns io ni pe r me t to no d i e s e gui r e de l c odi ce J a va all’interno dell’istanza server, l’utilizzo di queste potrebbe avere qualche i mp a t to s ul co mp or ta me nt o d e l G ab ar ge Co l le ct io n de l s er ver.

Vantaggi

T r a n saz io n i Co mp l e s s e : Le es t e nsi o ni pe r me t tono d i e s e guir e a rb itr a -

riamente una complessa sequenza di operazioni all’interno di un’unica t ra ns az io ne.

S c el ta d el le A P I: O gni es t e ns io ne vie ne i ncorpo ra t a a l l ’i nt er no d el c u o -

r e d e l se r ve r d i da tab a se s ot to for ma di r i feri me nt o . Q ue s to c i p er me t t e d i a ver e un ac ce s so to ta l it à de ll e AP I ( Cor e AP I, t ra ver s al fr a me wo r k , gr aph a l go ri t hm p ac ka ge, e C yp her) p er pot er s vil uppar e un’e s te ns io ne pe r so n a- l i zz at a.

I n ca p s u la me n t o: Si ccome o gni e s te ns io ne è nas c o st a a ll ’i nt er no d e ll e

R E ST ful i nte r fa ce , è p os s i bi le ac c re s ce o mo d i fi c are la lo ro i mp l e me nt a - z io ne a p ia c i me nto .

F or ma t o d el le Ri s po st e: Co ns e nt o no di co ntr ol la re i l for ma t o d e ll e r i -

s po s te .

2.3 Il modello dei Dati

I n Neo4j [3 ] l e uni tà fo nd a me nt al i c he co mp o ngono un gr a fo s o no i nodi e l e re la zi o ni .

2.3.1 Nodi

I nod i ve ngo no so li t a ment e i mp e gna t i per r appr es e nt are le ent i tà , ma a s e co nd a de l la s fer a de lle re la zi o ni p o ss o no e s s er e ut i li zz a ti p er sco pi d if- fe re nt i.

A p ar te prop ri et à e re laz io ni , i no di po s so no anc he e s s ere e t ic het t at i c o n zer o o pi ù Labe l .

2.3.2 Relazioni

Le re la z io ni tr ai nod i so no una par t e c hia ve de i da t aba s e a gra fo. Ci p er me t to no d i tr o va re l e i nfor ma z io ni co nne s se . C o me pe r i nod i, l e re l a- z io ni po s so no a vere l e p rop ri et à.

Caratteristiche:

- U na re l az io ne c o nne t te due no di, e po s s ied e se mp r e un nodo d i p a r - t e nza e uno d i arr i vo .

- U na re l az io ne ha se mp r e una di re zio ne

- Le r e la zio ni po s so no e s se re a tt ra ver sa t e i n e nt ramb e le d ire z io ni. C i ò s i gni fic a c he no n vi è b i so gno di a ggi unger e d el le r el az io ni d u - p li ca t e c o n di rez io ne o ppo s ta .

- U n nodo p uò es s er e r el azi o na to co n se s t e s so. - Le r e la zio ni po s so no e s se re di un t ipo (T yp e).

2.3.3 Proprietà

S i a nod i c he r e la zio ni po s so no a vere de ll e pro pri e tà . Le propr i et à so no d el le cop pi e c hi a ve va lor e, d o ve l a c hia ve è una st ri nga. Il va lor e de lle pr opr ie tà p uò e ss er e si a un t ipo d i p ri mi t i va c he un arr a y d i un t ipo di pr i - mi t i va . P er e se mp i o: St ring, i nt a i nt[ ].

I l va lor e N U LL no n è val id o per le pro pri e tà. I l va lo re NU LL p uò es s e - r e i mp le me nt a t a c o n l ’ass e nz a d el la prop ri e tà (o vve ro de ll a c hia ve).

2.3.4 Labels

U na l abe l è un “na me d gr ap h co ns tr uc t ” , vie ne us a ta per ra ggr up par e i no di i n s ot to i nsi e mi ; t utt i i nod i et i c he t ta ti co n la s te s s a l abe l fa nno par te d el lo s t es s o i nsi e me .

D i ver s e q uer y po s so no l a vor are c o n q ue s ti ins i e mi i nve ce c he con l’intera totalità del grafo, rendendo le interrogazioni più facili da scrivere e p i ù e ffic ie nt i. U n nodo p uò e s ser e et ic he tt a to c o n un d i ver s o nume ro di La b el s, i nc l us a ne s s una , re nd e ndo l e c os ì un a ggiunt a op zio na le a l gra fo .

Le la be l ve ng o no us at e q ua ndo s i vo gl io no defi ni re c o nst ra i nt e a g - gi unge r e i nd ic i s ull e p ropr i et à.

U n e s e mp io : Lab e l: U ser  p uò e s ser e i mp i e gat a p er e ti c het ta re t ut ti q uei nodi c he r appr e se nta no un ut e nte . I n q ue s to mo d o, si p uò c hi ed ere a N eo 4j di e se guir e de l le op er az io ne sol o s ui que i nod i ut e nte , co me ad e s e mp io c erc ar e t ut t i gli ut e nt i co n un d ato no me .

T ut ta vi a, l e l abe l po s so no e s s ere i mp ie ga te p er a lt r i s cop i . P er e s e mp io, po s so no es s er e a ggi unte o tol t e i n fa se di r unt ime , o vvero p o s so no e s sere i mp i e ga te p er ma r ca re temp o ra ne a me nt e i nod i, pe r i nd ica r ne uno s ta to. Si può creare un label “Offli ne” per marcare tutti i telefoni offline, oppure “Happy” per gli animali felici, e così via.

I l ma s s i mo nume r o di lab el c he po s so no e s ser e pr e se nt i ne l da tab a se s o - no 2 mi l i ard i , pe rc hè po ss e ggo no o gnuna un id, i q ual i s o no d i t ipo i nt.

2.3.4 Percorsi (Path)

U n p a t h è uno o pi ù no di co nne s si d a r el az io ni, t ip ic a me nt e re c upe rab i le d a una q ue r y. I l p er cor so p i ù cor to po s si bi le ha l unghe z za z ero e d è co st i - t ui to da un so lo no do s enz a re la z io ni usc e nti o in arr i vo ( un nodo a se) . U n p erc or so ha l unghe zz a 1 s e è co st i t ui to da d ue nod i co nne s si da una r el a- z io ne, opp ure un no do co n un re la zi o ne c he co nne t te se s te s so .

2.4 Gli Indici

G l i i nd ic i so no p ar ti co lar i s tr ut t ur e d at i c he c o nse nto un rap ido a cc e s so a d un so tto i ns ie me de l da t aba s e . N eo4j co nse nt e d i i nd ic i zz are i da t i, ma al c o nt rar io di mo l te a ltr e te c no lo gie , e ss o po s s ie de d ue ca t e gor ie d i i nd ic i:

S c h e ma I n de x ,

N o n- Sc h e ma I n de x ( Luce ne I nd e x e s) .

2.4.1 Schema Index

Le per for ma nc e ve ngo no a ume nt a t e cre a ndo gli s c hem a i nde x , i q ual i a ume nt a no l a ve loc i tà di ri ce rc a d ei nod i ne l d a tab a se. U na vo lt a sp ec i fic a- t a q ual e prop ri et à di una de t er mi na t a Lab e l è da ind ic i zz are , N eo4j ma n t e r- r à i t uoi i nd i ci a ggior na ti e i n l i ne a c o n l ’e vol ver s i d el gra fo. Al c une op e - r az io ni d i r ic er ca d e i nod i at tr a ve rs o r ece nt i p rop ri et à i nd ic iz za te , si mo - s t re ra nno una s i gni fic a nte sp i nt a d e l r e nd i me nto .

G l i Sc he ma I nd e x i n neo4j so no “ev en tua ll y ava il ab le ” (d i spon ib il i con

i l t em po ). S t a a s igni fi c ar e c h e q ua ndo vi e ne cre at o un i nd ice,

l’operazione viene eseguita immediatamente (hai subito un risco n- t ro /r i s ul t ato ), o vvero viene cr ea to i mme d i at a me nte . L’i ndi ce , per ò, vi e ne po pol at o i n b ac kgro und e no n è s ub ito d i spo nib il e pe r l e i nte rro gaz ioni . C o n i l te mp o d i ve nter à onl i ne, e q ua ndo verr à c omp l e t a me nt e po pol a to sa - r à pr o nt o p er e s ser e ut il iz za to da l le q ue ri e s.

Se qualcosa dovesse andare storto con l’indice, esso finirebbe in un “failed state”. Quando fallisce, non può essere impiegato per velocizzare l e q uer y. P e r si s te ma r lo, bi so gna ca nce l lar lo (DR O P ) e ri cr ear lo ( C RE A- T E). E ’ b uo na nor ma t ene re so t to o s ser va zio ne i lo gs p er a ver e i ndi z i r i - gua rdo a i fa ll i me nt i .

P e r te ner t ra cc ia de l lo st a to de gl i i nd ic i bi so gna ut i li zz are le AP I a d i - s po s iz io ne ( s he ll , too l s, e t c), per c hé c o n C yp her no n è po s s ibi le farl o.

G l i S c he ma I nd e x ve ngono de fi ni ti pe r me z zo d e l l i ngua ggio C yp her :

CREATE INDEX ON :name-of-label(proprety-name)

C o n q ue sto co mma nd o vi e ne cre a to un i ndi ce s ul l ’a tt rib uto s fr ut t ando l’etichetta indicat a.

2.4.1 Non-Schema Index (Lucene)

N eo 4j co nse nt e d i i mp l eme nt a r e gli i nd i ci “co muni c a ndo ” d ir et ta me nt e c o n il co mp o ne nte c he for ni s ce i l se r viz io d i d e fi ni z io ne e co s tr uzi o ne d e - gl i i nd ic i. Q ue sto co mp o ne nte pr e nd e il no me d i Luce ne ( ne o4j -l uc e ne - i nde x) . Luce ne è i nt e gr at o a ll ’i nte r no de l lo s ta nd ard do wnl o ad d i Ne o4j e p er me t t e la de fi niz io ne di d i ve r se t ipo lo gie di i ndi c i.

La cre az io ne d e gl i i nd ic i No n -S c he ma vi e ne effe t t ua ta p er me z zo di c hi a ma t e P O ST al la R EST AP I di Ne o4j e, a l co ntr ar io de gl i S c he ma In - d e x, e s si no n verr a nno ma nt e nut i a ggi or nat i d al DB MS , ma sa rà co mp ito dell’amministratore aggiungere e togliere i nodi e le relazioni da indici z- z ar e.

I No n -S c he ma I nde x sono mo l to i mpor t at i pe rc hé ve ngo no i mp i e ga ti d al la c la us ol a ST ART d i C yp he r.

2.5 Constraint

N eo 4j co nse nt e d i t e nere i d a ti “i n ord i ne ”. Lo fa uti l iz za nd o l e co n -

s t r ai n t , le q ua li p er me t to no di sp ec i fic are le re go le c he i da t i do vr a nno ri -

N eo 4j co ns e nt e d i r a ffor zar e l ’i nte gr i tà de i da ti co n l ’us o d el l e co n -

s t r ai nt s. La u ni q ue co ns t rai n t s è l ’uni ca for ni ta pe r or a d a Neo 4j . E s sa

vi e ne i mp i e ga ta pe r a s s ic ura r si c he il va lor e d i una pr opr ie tà si a unic a per t ut t i i nod i co n una sp ec i fi ca LAB E L. La uni q ue co ns tra i nt no n si gn i fica c he t ut ti i nod i de l gra fo co n la Labe l i nd ic at a, de vo no per for za po s sedere l a prop ri et à sp ec i fic a ta, l a q ua le do vr à e s ser e uni q ue ( uni voc o) , ma che t ut t i i no di d el la Lab el d i i nt ere s s e c he po s se ggo no a nc he la pro pri e tà su c ui è st at o co st r ui t a la co ns tr ai nt , do vra nno at te ne r si a l le re gol e d e l vi nc o - l o. O vvero , l a co ns tr a i nt no n vi nco la l a to t al i tà de i nodi , ma sol o q ue l so t- t oi ns i e me di e s s i, c he sodd i s fa no le s ue car at t er is t i c he . Q ui ndi , i nod i se n - z a la pro pri e tà o/ e la l abe l s pe ci fi ca ta ne l la co ns t r ai nt no n so no s o gge t ti a q ue st a r e go la .

Aggi unge r e co nst ra i nt s è un’op era zi o ne a to mi c a c he ri c hied e d e l te mp o – tutti i dati esistenti devono essere visionati prima da Neo4j , il quale , una vol t a ver i fic at i i d ati , p uò re nde re l a co ns tr ai nt “o n” ( at t i va ) . Aggi u n - ge ndo una co ns tr ai nt di uni c i tà s u una pr opr ie tà , verr à a ggi unta a nc he un S c he ma I nde x . El i mi na ndo l a co ns tr ai nt s i e li mi ne rà a nc he l ’i nd ic e; s e s i vo rrà ma nt e ner e l ’i nd ic e s ul l a propr i et à, do vr à es s e re r ic re ato . S i po s so no a ver e p i ù di una uniq u e c o nst ra i nt p er una da ta LAB E L.

2.6 Cypher

Documenti correlati