Filme porno

Categorii

Advertising

Baza de date Firebase in timp real Schema de relatii intre multe si multe

Baza de date Firebase in timp real Schema Multe la Multe

Puteti citi acest articol si pe site-ul meu blog Xcoding With Alfian folosind linkul de mai jos.

Firebase Realtime Database este un serviciu de baze de date NoSQL Cloud complet gestionat, care este furnizat pe platforma mobila Firebase Google ca unul dintre produsele lor de baza. Este construit sub infrastructura Google, astfel incat dezvoltatorii fara expertiza backend / dev-ops pot construi aplicatii rapid fara a va face griji prea mari despre scalabilitate si doar sa va concentrati pe crearea celor mai bune aplicatii. Firebase ofera, de asemenea, o noua baza de date in timp real numita Cloud Firestore, care este inca in versiune beta, care este si mai scalabila, dar diferita in ceea ce priveste designul schemei in comparatie cu baza de date in timp real Firebase.

Baza de date in timp real (RTDB) stocheaza datele ca arborele JSON. Ofera multe SDK-uri pentru clienti de pe iOS, Android si Web. Baza de date in timp real utilizeaza tehnologia WebSocket sub capota pentru sincronizare, astfel incat toti clientii conectati pot primi actualizari in timp real atunci cand datele din server se schimba si invers, astfel incat atunci cand clientul actualizeaza datele, serverul primeste si actualizarile in latenta de milisecunde (bidirectionala) comunicare). De asemenea, ofera suport offline, astfel incat clientul sa poata afisa datele chiar si atunci cand nu exista conexiune la internet si poate sincroniza automat datele cand conexiunea este revenita.

In timp ce baza de date in timp real ofera libertatea dezvoltatorilor de a proiecta schema pentru aplicatia lor datorita naturii sale NoSQL, dezvoltatorii inca mai trebuie sa proiecteze schema cu atentie, astfel incat aplicatia lor sa poata scala cu adevarat eficient din punct de vedere al costurilor atunci cand datele din aplicatie devin mai mari dezvolta.

Una dintre numeroasele intrebari obisnuite pe care multi dezvoltatori le pun atunci cand utilizeaza baza de date Firebase Realtime este cum sa proiectati schema pentru modelul cu relatii de la multi la multi in mod eficient. In acest caz, voi folosi o multime de relatii intre elevi si clase. Un singur elev se poate inscrie la multe clase si o clasa poate avea multi studenti.

Array

In baza de date SQL, putem rezolva acest lucru cu usurinta utilizand tabelul de inscriere numit inscrieri care stocheaza ID-ul studentului si ID-ul clasei ca chei straine.

Schema SQL

Dar cum traducem schema de proiectare SQL in arborele JSON Firebase Realtime Database ?. S-ar putea sa incercam sa cream 2 noduri de nivel superior, clase si studenti, apoi in fiecare clasa / copil elev incorporam clasele sau elevii din fiecare copil asa:

clase:

clasa1:

studenti: elev1

: adevarat

clasa2:

studenti:

student1: adevarat

elev2: adevarat

elevi:

elev1:

clase:

clasa1: adevarat

clasa2: adevarat elev2

:

clase:

clasa2: adevarat

Acesta nu este un model recomandat de utilizat atunci cand se manipuleaza un model de relatie intre mai multi si mai multi din cauza naturii sale imbricate. Iata dezavantajele atunci cand utilizati acest model:

  1. Cand interogam copiii, de exemplu student1 sau clasa1, toate datele pentru inscrieri vor fi preluate si de pe server, desi nu este nevoie sa le folosim.
  2. Trebuie sa interogam fiecare clasa de copii sau elevi pentru a obtine evenimentul de inscriere, desi nu avem nevoie de metadate pentru copil.

Aceste contra fac ca baza de date sa nu fie eficienta si scalabila atunci cand avem zece mii de studenti sau clase. Interogarea va deveni mai lenta pe masura ce datele cresc si costul utilizarii bazei de date va fi mult mai mare.

Una dintre cele mai recomandate solutii este denormalizarea si aplatizarea datelor in 4 noduri de nivel superior:

  1. clase: Stocati metadatele pentru fiecare clasa ca si copii.
  2. studenti: Stocati metadatele pentru fiecare elev ca si copiii.
  3. class_enrolments: Stocati relatia dintre fiecare clasa de copii si elevi ca si copiii. Folosim acest lucru pentru a cauta inscrierile studentilor pentru o clasa.

  4. student_enrolments: Stocati relatia dintre fiecare copil student si cursuri ca si copiii. Folosim acest lucru pentru a cauta inscrierile la cursuri pentru un student.

clase:

clasa1:

clasa2:

studenti:

student1:

student2:

clasa_inscrieri:

clasa1:

student1: adevarat

student2: adevarata

clasa2:

student2: adevarata_inscrieri student

:

student1:

clasa1: adevarat

student2:

clasa1: adevarat

clasa2: adevarat

Folosind aceasta schema, putem gasi relatia dintre studentii dintr-o clasa si cursurile pentru un elev fara a efectua interogari si doar folosind o singura cautare prin cheie, care este foarte eficienta in special pentru seturi de date imense.

Pentru a lega relatia dintre o clasa si un student, trebuie sa folosim strategia de fanout a bazei de date in timp real pentru a actualiza simultan mai multe noduri. In acest caz, trebuie sa actualizam copiii din nodurile de nivel superior student_enrolments si class_enrolments cu ID-ul clasei si ID-ul studentului respectiv.

let student1Id = ‘student1’

let class1Id = ‘class1’let updates = {

[`student_enrolments / $ {student1Id} / $ {class1Id}”]: adevarat,

[`class_enrolments / $ {class1Id} / $ {student1Id}”]: true

} firebase.database (). ref (). actualizare (actualizari)

Pentru deconectare, folosim aceeasi strategie ca link-ul, dar in acest caz setam valoarea cheilor respective la nul pentru a le elimina din nodurile parinte.

let student1Id = ‘student1’

let class1Id = ‘class1’let updates = {

[`student_enrolments / $ {student1Id} / $ {class1Id}”]: nul,

[`class_enrolments / $ {class1Id} / $ {student1Id}”]: nul

} // Actualizati simultan la ambele noduri (fanout)

firebase.database (). ref (). actualizare (actualizari)

Pentru a obtine lista studentilor pentru o clasa sau invers, trebuie doar sa efectuam cautarea prin cheia respectiva astfel:

let student1Id = ‘student1’

let class1Id = ‘class1’let database = firebase.database () // Listeaza inscrierile studentilor pentru o

baza de date de clasa.ref (`class_enrolments / $ {class1Id}`) .once (‘ value ‘)

.then ((instantaneu) => {

console.log (snapshot.val ())

}) // Listeaza inscrierile la clasa pentru o

baza de date student.ref (`student_enrolments / $ {student1Id}` .once (‘valoare’)

.then (( instantaneu) => {

console.log (instantaneu.val ())

})

Recuperarea metadatelor reale pentru un singur elev sau o singura clasa este destul de simpla folosind o cautare simpla:

let student1Id = ‘student1’

let class1Id = ‘class1’let database = firebase.database () // Obtineti metadatele clasei folosind classId

database.ref (`classes / $ {class1Id}`) .once (‘ value ‘)

.then ( (instantaneu) => {

console.log (snapshot.val ())

}) // Obtineti metadatele studentilor folosind studentId

database.ref (`studenti / $ {student1Id}` .once (‘valoare’

) => {

console.log (snapshot.val ())

})

Exista, de asemenea, cazuri suplimentare care trebuie luate in considerare daca o scoala sau un angajat este sters in legatura cu datele din nodurile relatiei. Puteti cauta in declansatorul Firebase Function Database pentru a rezolva aceasta problema. Cand nodul este sters, va fi declansata o functie pe care o putem folosi pentru a efectua curatarea nodurilor relatiei.

Proiectarea schemei pentru baza de date in timp real Firebase nu este destul de simpla, trebuie sa analizam cu adevarat cazul de utilizare al aplicatiei si sa o proiectam cu atentie. Costul utilizarii bazei de date in timp real Firebase poate fi destul de ridicat si interogarea poate fi lenta daca nu proiectati schema in mod eficient.

Video Description:

Baza de date Firebase in timp real Schema Multe la MultePuteti citi acest articol si pe site-ul meu blog Xcoding With Alfian folosind linkul de mai jos.Firebase Realtime Database este un serviciu de baze de date NoSQL Cloud complet gestionat, care este furnizat pe platforma mobila Firebase Google ca unul dintre produsele lor de baza. Este construit sub infrastructura Google, astfel incat dezvoltatorii fara expertiza backend / dev-ops pot construi aplicatii rapid fara a va face griji prea mari despre scalabilitate si doar sa va concentrati pe crearea celor mai bune aplicatii. Firebase ofera, de asemenea, o noua baza de date in timp real numita Cloud Firestore, care este inca in versiune beta, care este si mai scalabila, dar diferita in ceea ce priveste designul schemei in comparatie cu baza de date in timp real Firebase.Baza de date in timp real (RTDB) stocheaza datele ca arborele JSON. Ofera multe SDK-uri pentru clienti de pe iOS, Android si Web. Baza de date in timp real utilizeaza tehnologia WebSocket sub capota pentru sincronizare, astfel incat toti clientii conectati pot primi actualizari in timp real atunci cand datele din server se schimba si invers, astfel incat atunci cand clientul actualizeaza datele, serverul primeste si actualizarile in latenta de milisecunde (bidirectionala) comunicare). De asemenea, ofera suport offline, astfel incat clientul sa poata afisa datele chiar si atunci cand nu exista conexiune la internet si poate sincroniza automat datele cand conexiunea este revenita.In timp ce baza de date in timp real ofera libertatea dezvoltatorilor de a proiecta schema pentru aplicatia lor datorita naturii sale NoSQL, dezvoltatorii inca mai trebuie sa proiecteze schema cu atentie, astfel incat aplicatia lor sa poata scala cu adevarat eficient din punct de vedere al costurilor atunci cand datele din aplicatie devin mai mari dezvolta.Una dintre numeroasele intrebari obisnuite pe care multi dezvoltatori le pun atunci cand utilizeaza baza de date Firebase Realtime este cum sa proiectati schema pentru modelul cu relatii de la multi la multi in mod eficient. In acest caz, voi folosi o multime de relatii intre elevi si clase. Un singur elev se poate inscrie la multe clase si o clasa poate avea multi studenti. Array In baza de date SQL, putem rezolva acest lucru cu usurinta utilizand tabelul de inscriere numit inscrieri care stocheaza ID-ul studentului si ID-ul clasei ca chei straine.Schema SQLDar cum traducem schema de proiectare SQL in arborele JSON Firebase Realtime Database ?. S-ar putea sa incercam sa cream 2 noduri de nivel superior, clase si studenti, apoi in fiecare clasa / copil elev incorporam clasele sau elevii din fiecare copil asa:clase: clasa1: studenti: elev1 : adevarat clasa2: studenti: student1: adevarat elev2: adevarat elevi: elev1: clase: clasa1: adevarat clasa2: adevarat elev2 : clase: clasa2: adevaratAcesta nu este un model recomandat de utilizat atunci cand se manipuleaza un model de relatie intre mai multi si mai multi din cauza naturii sale imbricate. Iata dezavantajele atunci cand utilizati acest model:Cand interogam copiii, de exemplu student1 sau clasa1, toate datele pentru inscrieri vor fi preluate si de pe server, desi nu este nevoie sa le folosim.Trebuie sa interogam fiecare clasa de copii sau elevi pentru a obtine evenimentul de inscriere, desi nu avem nevoie de metadate pentru copil.Aceste contra fac ca baza de date sa nu fie eficienta si scalabila atunci cand avem zece mii de studenti sau clase. Interogarea va deveni mai lenta pe masura ce datele cresc si costul utilizarii bazei de date va fi mult mai mare.Una dintre cele mai recomandate solutii este denormalizarea si aplatizarea datelor in 4 noduri de nivel superior:clase: Stocati metadatele pentru fiecare clasa ca si copii.studenti: Stocati metadatele pentru fiecare elev ca si copiii.class_enrolments: Stocati relatia dintre fiecare clasa de copii si elevi ca si copiii. Folosim acest lucru pentru a cauta inscrierile studentilor pentru o clasa. film porno entier evalutrak.com porno ejaculation interne pkeithlaw.com kelly vedovelli porno godgiven.nu animaux porno healthfitnessexpo.org new porno www.parshav.org porno gay dad seeyoulateralligator.com video porno perfect insurancefl.com porno avec des animaux cmc-bio.net porno insolite belopavilion.org porno xvideo kanam.info porno hut www.lidonuts.com porno père fille j77.floridafirstinsurance.com porno en foret www.annesemmes.com dragon ball porno fishtankdvd.com voglio porno www.c2c.co.nz heure porno protocow.com porno rigolo prudentialhealthcare.biz vrai porno alcosta.net porno espanol www.maharam.ms porno gay hetero questrecruitment.com.au student_enrolments: Stocati relatia dintre fiecare copil student si cursuri ca si copiii. Folosim acest lucru pentru a cauta inscrierile la cursuri pentru un student.clase: clasa1: ... clasa2: ... studenti: student1: ... student2: ... clasa_inscrieri: clasa1: student1: adevarat student2: adevarata clasa2: student2: adevarata_inscrieri student : student1: clasa1: adevarat student2: clasa1: adevarat clasa2: adevaratFolosind aceasta schema, putem gasi relatia dintre studentii dintr-o clasa si cursurile pentru un elev fara a efectua interogari si doar folosind o singura cautare prin cheie, care este foarte eficienta in special pentru seturi de date imense.Pentru a lega relatia dintre o clasa si un student, trebuie sa folosim strategia de fanout a bazei de date in timp real pentru a actualiza simultan mai multe noduri. In acest caz, trebuie sa actualizam copiii din nodurile de nivel superior student_enrolments si class_enrolments cu ID-ul clasei si ID-ul studentului respectiv.let student1Id = 'student1' let class1Id = 'class1'let updates = { [`student_enrolments / $ {student1Id} / $ {class1Id}"]: adevarat, [`class_enrolments / $ {class1Id} / $ {student1Id}"]: true } firebase.database (). ref (). actualizare (actualizari)Pentru deconectare, folosim aceeasi strategie ca link-ul, dar in acest caz setam valoarea cheilor respective la nul pentru a le elimina din nodurile parinte.let student1Id = 'student1' let class1Id = 'class1'let updates = { [`student_enrolments / $ {student1Id} / $ {class1Id}"]: nul, [`class_enrolments / $ {class1Id} / $ {student1Id}"]: nul } // Actualizati simultan la ambele noduri (fanout) firebase.database (). ref (). actualizare (actualizari)Pentru a obtine lista studentilor pentru o clasa sau invers, trebuie doar sa efectuam cautarea prin cheia respectiva astfel:let student1Id = 'student1' let class1Id = 'class1'let database = firebase.database () // Listeaza inscrierile studentilor pentru o baza de date de clasa.ref (`class_enrolments / $ {class1Id}`) .once (' value ') .then ((instantaneu) => { console.log (snapshot.val ()) }) // Listeaza inscrierile la clasa pentru o baza de date student.ref (`student_enrolments / $ {student1Id}` .once ('valoare') .then (( instantaneu) => { console.log (instantaneu.val ()) })Recuperarea metadatelor reale pentru un singur elev sau o singura clasa este destul de simpla folosind o cautare simpla:let student1Id = 'student1' let class1Id = 'class1'let database = firebase.database () // Obtineti metadatele clasei folosind classId database.ref (`classes / $ {class1Id}`) .once (' value ') .then ( (instantaneu) => { console.log (snapshot.val ()) }) // Obtineti metadatele studentilor folosind studentId database.ref (`studenti / $ {student1Id}` .once ('valoare' ) => { console.log (snapshot.val ()) })Exista, de asemenea, cazuri suplimentare care trebuie luate in considerare daca o scoala sau un angajat este sters in legatura cu datele din nodurile relatiei. Puteti cauta in declansatorul Firebase Function Database pentru a rezolva aceasta problema. Cand nodul este sters, va fi declansata o functie pe care o putem folosi pentru a efectua curatarea nodurilor relatiei.Proiectarea schemei pentru baza de date in timp real Firebase nu este destul de simpla, trebuie sa analizam cu adevarat cazul de utilizare al aplicatiei si sa o proiectam cu atentie. Costul utilizarii bazei de date in timp real Firebase poate fi destul de ridicat si interogarea poate fi lenta daca nu proiectati schema in mod eficient.

Categorie:
Taguri:
Data adaugarii: