Theory
બે databases, એક પસંદગી
FestConnect Mobile ને cloud માં data સંઘરવો પડે, એટલે કે events અને registrations, અને Firebase તમને બે NoSQL databases માંથી પસંદ કરવા દે છે: Realtime Database અને Cloud Firestore. બંને hosted છે, બંને real time માં sync થાય છે, અને બંને offline પણ ચાલે છે. પણ એ data ને જુદી રીતે ગોઠવે છે અને જુદી જરૂરિયાતોને અનુકૂળ પડે છે.
Storage નો code લખતાં પહેલાં (પછીના એકમમાં) તમારે જાણવું જોઈએ કે કયું પસંદ કરવું અને શા માટે. આ પાઠ બંનેની સરખામણી કરે છે જેથી તમે વિચારીને પસંદ કરી શકો. ટૂંકમાં: Firestore નવો અને વધુ રચનાવાળો વિકલ્પ છે; Realtime Database જૂનો અને વધુ સાદો.
Theory
દરેક data કઈ રીતે સંઘરે છે
Realtime Database આખી app નો data એક મોટા JSON વૃક્ષ તરીકે સંઘરે છે, એટલે કે keys અને કિંમતોની એક જ અંદરોઅંદર ગૂંથાયેલી રચના. પાયાના real time syncing માટે એ સાદું અને અતિશય ઝડપી છે, અને એ ઘણા વખતથી વપરાય છે. નુકસાન એ કે data વધતાં એ એક જ વૃક્ષ બહુ ઊંડે સુધી ગૂંથાઈ જાય અને અઘરું બની જાય, અને એની querying મર્યાદિત છે (સાદી, છીછરી queries), એટલે જટિલ data ને ગોઠવવો અને scale કરવો કઠણ પડે છે.
એને બદલે Cloud Firestore data ને documents નાં collections માં ગોઠવે છે (અને એ documents માં subcollections પણ હોઈ શકે), એટલે કે એ જ ઢાંચો જે તમે web બાજુ જોયો હતો. આ રચના વધુ સમૃદ્ધ queries ને ટેકો આપે છે અને વધુ લવચીક રીતે scale થાય છે, ભલે એની સાથે કામ કરવું થોડું વધારે વિગતવાર હોય. એ નવો અને સામાન્ય રીતે ભલામણ કરાતો વિકલ્પ છે.
At a glance
| પાસું | Realtime Database | Cloud Firestore |
|---|---|---|
| Data નો ઢાંચો | એક મોટું JSON વૃક્ષ | documents નાં collections (subcollections સાથે) |
| Queries | સાદી, મર્યાદિત, છીછરી | વધુ સમૃદ્ધ, વધુ શક્તિશાળી |
| Scaling | ઓછું લવચીક | વધુ સારી રીતે scale થાય |
| પરિપક્વતા | જૂનું, બહુ ઓછો વિલંબ | નવું, નવી apps માટે સામાન્ય રીતે ભલામણ કરાય |
| બંનેમાં | real time sync, offline ટેકો | real time sync, offline ટેકો |
Formula
કયું પસંદ કરવું
મોટા ભાગની નવી apps માટે, જેમાં FestConnect ના events અને registrations જેવો રચનાવાળો data હોય, Firestore સમજદારીભરી મૂળભૂત પસંદગી છે: એનો collections અને documents વાળો ઢાંચો તથા વધુ સમૃદ્ધ queries ખરી app ના data ને બંધ બેસે છે, અને એ સારી રીતે scale પણ થાય છે.
Realtime Database તરફ ત્યારે વળો જ્યારે જરૂરિયાતો બહુ સાદી હોય અને વિલંબ ઓછામાં ઓછો જોઈતો હોય, પાયાનો data સહજ રીતે JSON વૃક્ષમાં બંધ બેસતો હોય, અથવા તમે એના પર જ બનેલા હાલના project સાથે કામ કરતા હો. બંને સારાં છે; નિર્ણય એટલા પર આધારિત છે કે data કેટલો રચનાવાળો છે અને queries કેટલી જટિલ જોઈએ છે. શંકા હોય ત્યારે Firestore વધુ સલામત આધુનિક પસંદગી છે.
Quiz
Cloud Firestore ની સરખામણીએ Firebase Realtime Database app નો data કઈ રીતે સંઘરે છે?
- બંને data ને rows અને columns વાળાં SQL tables તરીકે સંઘરે છે
- Realtime Database બધું એક મોટા JSON વૃક્ષ તરીકે સંઘરે છે, જ્યારે Firestore data ને documents નાં collections માં ગોઠવે છે
- Realtime Database collections અને documents વાપરે છે; Firestore JSON વૃક્ષ વાપરે છે
- બેમાંથી એકેય real time માં data sync કરી શકતું નથી
Show the answer
Realtime Database બધું એક મોટા JSON વૃક્ષ તરીકે સંઘરે છે, જ્યારે Firestore data ને documents નાં collections માં ગોઠવે છે
Realtime Database બધો data એક જ મોટા JSON વૃક્ષ તરીકે સંઘરે છે, જ્યારે Cloud Firestore data ને documents નાં collections માં ગોઠવે છે (અને એ documents માં subcollections પણ હોઈ શકે). વિકલ્પ A ખોટો છે: બંને NoSQL છે, અને એકેય નિશ્ચિત rows તથા columns વાળાં SQL tables વાપરતું નથી. વિકલ્પ C બંનેને ઊંધાં કરી નાખે છે: collections અને documents Firestore વાપરે છે અને JSON વૃક્ષ Realtime Database, નહીં કે ઊલટું. વિકલ્પ D ખોટો છે: બંને databases real time syncing ને ટેકો આપે છે (અને offline ને પણ). મુખ્ય ભેદ data ના ઢાંચામાં છે: એક JSON વૃક્ષ (Realtime Database) સામે રચનાવાળાં collections અને documents (Firestore).
Think first
Firestore નો collections અને documents વાળો ઢાંચો એક JSON વૃક્ષ કરતાં વધુ સારી રીતે scale અને query કેમ કરે છે?
બંને NoSQL છે અને બંને real time માં sync થાય છે. તો વધતી જતી apps માટે Firestore ની રચના ઘણી વાર વધુ સારી કેમ ગણાય? વિચારીને પછી tap કરો.
Show the answer
કારણ કે Firestore નો data ઘણાં નાનાં, સ્વતંત્ર DOCUMENTS માં વહેંચાયેલો હોય છે જે collections માં જૂથબદ્ધ હોય છે, જેથી તમે બરાબર જેટલું જોઈએ એટલું જ મંગાવી અને query કરી શકો, જ્યારે Realtime Database નું એક જ JSON વૃક્ષ ઘણી વાર જોઈએ એના કરતાં વધારે ખેંચી લાવે છે અને ફક્ત છીછરી queries જ આપે છે. Realtime Database માં બધું એક ગૂંથાયેલા વૃક્ષમાં રહે છે, અને queries મર્યાદિત તથા મોટે ભાગે છીછરી હોય છે, એટલે જટિલ data ને ગોઠવવામાં ઘણી વાર અઘરી બાંધછોડ કરવી પડે છે; અને વૃક્ષ એક જ જોડાયેલી રચના હોવાથી એનો કોઈ ભાગ વાંચવા જતાં એવો ગૂંથાયેલો data પણ load કરવો પડે જે તમારે જોઈતો જ નહોતો, જેથી bandwidth વેડફાય અને data વધતાં બધું ધીમું પડે (આ સમસ્યાને ક્યારેક 'fan-out' કહે છે). એને બદલે Firestore data ને collections ની અંદર અલગ documents તરીકે સંઘરે છે: તમે કોઈ collection પર ખરા filters અને ક્રમ સાથે query કરી શકો છો, ફક્ત બંધ બેસતાં documents જ મેળવી શકો છો, અને પરિણામોમાં પાનાં ફેરવી શકો છો, અને એ પણ બિનસંબંધિત data ખેંચ્યા વગર. Documents સ્વતંત્ર એકમો હોવાથી Firestore એમને પોતાના માળખા પર વધુ લવચીક રીતે વહેંચી અને scale પણ કરી શકે છે, અને query ની ઝડપ આખા dataset ના નહીં પણ પરિણામના કદ પર આધાર રાખે છે, એટલે data વધે તો પણ એ ઝડપી રહે છે. Subcollections તમને સંબંધિત data ને અંદર ગોઠવવા દે છે (જેમ કે event નાં registrations) અને એથી ઉપરનું document ફૂલી જતું નથી. બાંધછોડ એટલી કે Firestore સાથે કામ કરવું થોડું વધારે રચનાવાળું છે, અને બહુ સાદી તથા અતિશય ઓછા વિલંબવાળી જરૂરિયાતો માટે Realtime Database હજી પણ જીતી શકે છે. પણ ખરી queries ધરાવતી, વધતી જતી સામાન્ય apps માટે Firestore નો document વાળો ઢાંચો જ કારણ છે કે એ વધુ સારી રીતે scale અને query કરે છે, અને એટલે જ આજે એ સામાન્ય મૂળભૂત પસંદગી છે. Data અને queries વધે ત્યારે નાનાં સ્વતંત્ર documents એક વિરાટ વૃક્ષ કરતાં ચડિયાતાં ઠરે છે.
Summary
Key takeaways
- Firebase બે NoSQL databases આપે છે: Realtime Database અને Cloud Firestore; બંને real time માં sync થાય છે અને offline પણ ચાલે છે.
- Realtime Database બધો data એક મોટા JSON વૃક્ષ તરીકે સંઘરે છે: સાદું અને બહુ ઓછા વિલંબવાળું, પણ querying મર્યાદિત અને scaling ઓછું લવચીક.
- Cloud Firestore data ને documents નાં collections માં ગોઠવે છે (subcollections સાથે): queries વધુ સમૃદ્ધ અને scaling વધુ સારું.
- Firestore નવું છે અને નવી apps માટે સામાન્ય રીતે ભલામણ કરાય છે, ખાસ કરીને રચનાવાળા data સાથે.
- રચનાવાળા data અને જટિલ queries માટે Firestore પસંદ કરો (સામાન્ય મૂળભૂત પસંદગી); બહુ સાદી, ઓછા વિલંબવાળી જરૂરિયાતો કે હાલના projects માટે Realtime Database.
- Firestore વધુ સારી રીતે scale અને query કરે છે કારણ કે સ્વતંત્ર documents તમને બરાબર જોઈએ એટલું જ મંગાવવા દે છે, જ્યારે JSON વૃક્ષ એક જ જોડાયેલી રચના છે.
- યાદ રાખવાની કડી: Realtime Database એટલે એક JSON વૃક્ષ, Firestore એટલે documents નાં collections; Firestore આધુનિક મૂળભૂત પસંદગી છે.