Cum se utilizează foi de calcul Google ca bază de date (responsabil)

în timp ce tehnologia bazei de date și alte instrumente au parcurs un drum lung, este încă greu să învingi versatilitatea și intuitivitatea umilei foi de calcul. În timp ce le folosiți pentru aplicații sensibile, critice, cum ar fi stocarea datelor despre pacienții COVID-19, este prost recomandat, faptul că toată lumea știe să folosească o foaie de calcul înseamnă că sunt excelente pentru proiecte mai mici, inter-funcționale, în care un non-Dezvoltator ar putea avea nevoie să examineze sau să editeze date.

în acest ghid, vă voi arăta cum să utilizați foi de calcul Google ca bază de date, completată cu o interfață API accesibilă prin HTTP. Vom folosi Autocode, un nod.js platforma de dezvoltare API și editor cu built-in autocomplete, pentru a implementa o aplicație simplă și se ocupe de procesul de autentificare Google. De asemenea, voi explora limitările foilor de calcul Google, inclusiv scalabilitatea și unde are sens să începeți să căutați alternative mai complexe.

# Returns all people in the database whose names start # with "bil", case-insensitive$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/name/istartswith/?query=bil'

nu aveți nevoie de nimic altceva decât un Cont Google și un cont Autocode gratuit pentru a începe. Să mergem!

Mai întâi, va trebui să clonați propria copie a șablonului foaie Google făcând clic aici, apoi apăsând Utilizați șablonul în partea dreaptă sus. Aceasta va adăuga foaia de calcul eșantion în contul dvs. personal Google.

după ce ați făcut acest lucru, faceți clic aici pentru a deschide aplicația starter în Autocode. Poke în jurul valorii de codul sursă, dacă doriți, apoi instalați aplicația în contul Autocode apăsând butonul verde. Când vi se solicită să conectați o foaie Google, urmați instrucțiunile din flux pentru a vă conecta contul Google, apoi selectați foaia de calcul pe care tocmai ați clonat-o.

după aceea, aplicația dvs. ar trebui să fie gata de plecare! Încercați să accesați câteva dintre punctele finale prin adresele URL ale acestora și vedeți ce este returnat/ce se întâmplă cu noua dvs. Bază de date cu foi de calcul. Puteți consulta secțiunea Endpoints de mai jos, de exemplu, apeluri.

limitări

că tl; dr a fost ușor, nu? Deci, de ce nu este totul construit pe foi de calcul Google? în timp ce un backend care durează 30 de secunde pentru a configura și că toată lumea poate interacționa cu este extrem de atrăgătoare, există unele limitări evidente. O foaie de calcul ca bază de date așa cum este descris mai sus nu acceptă în mod natural mai multe tabele sau relații între rânduri. De asemenea, nu există niciun concept de aplicare a tipurilor pentru o anumită coloană, tranzacții, copii de rezervă încorporate sau criptare, astfel încât datele sensibile/critice (cum ar fi datele pacientului COVID-19) sunt probabil cel mai bine stocate în altă parte.

în ceea ce privește scalabilitatea, foi de calcul Google are o limită dură de 5.000.000 de celule (inclusiv celule goale). Cu toate acestea, când am încercat să verific acest lucru prin crearea unei foi de calcul cu atât de multe valori, am întâmpinat probleme semnificative în performanță înainte de acest prag:

operațiunile de masă, cum ar fi lipirea unui număr mare de celule, au încetinit, apoi au început să eșueze la aproximativ 1m celule. Navigarea a fost în general lentă.

experimentele mele în jurul efectuării apelurilor API au dat rezultate similare. Viteza de interogare părea să se scaleze liniar cu numărul de celule:

interogările au devenit impractic lente în jurul valorii de 500.000 de celule, dar au fost încă sub 2 secunde pentru o interogare de 100.000 de celule. Prin urmare, dacă anticipați un set de date mai mare de câteva sute de mii de celule, probabil că ar fi inteligent să alegeți o opțiune mai scalabilă.

cum funcționează

când conectați foaia Google clonată la aplicația dvs. și o instalați în contul dvs., Autocode gestionează automat autentificarea între aplicația dvs. și contul Google utilizând simbolul aplicației dvs. (consultați liniaconst lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN}) din partea de sus a tuturor punctelor finale).

pentru interogările reale, fiecare punct final conține nod.codul js care solicită o metodă de googlesheets.interogare API. Aceste API-uri iau un parametru numit range formatat în notație A1 care corespunde părții foii de calcul pe care apelul API ar trebui să o ia în considerare ca parte a bazei de date.

let queryResult = await lib.googlesheets.query.select({ range: `A:E`, bounds: 'FULL_RANGE', where: });

arangevaloareaA:E este în esență prescurtare pentru „Utilizați toate rândurile din coloanele de la A la E din foaia de calcul ca baza mea de date”. Interogarea interpretează primul rând al fiecărei coloane din acel interval ca nume de câmp al valorilor din acea coloană. Având în vedere șablonul pe care l-ați clonat, interogarea de mai sus va verifica toate valorile din coloana A (denumită Name) pentru rândurile cu o valoare care corespunde interogării.

aceste apeluri API utilizează limbajul de interogare KeyQL. Dacă sunteți interesat de o scufundare profundă, o puteți verifica pentru mai multe exemple.

puncte finale de apelare

după cum am menționat anterior, aceste puncte finale sunt accesibile prin HTTP, astfel încât să le puteți efectua apeluri prinfetchcURL sau orice alt client HTTP preferați. Puteți utiliza browserul dvs. web direct:

și puteți chiar să utilizați același pachet de noduri lib-node pe care îl folosesc punctele finale pentru a apela API-urile foi de calcul Google:

punctele finale vor răspunde fie solicitărilor GET, fie celor POST. Parametrii sunt analizate din querystring pentru cereri GET și corpul cerere pentru cereri POST. Fiecare punct final are parametrii impliciți setați din motive de claritate. Mai jos puteți găsi exemple pentru fiecare punct final.

obiective

funcții/selectare/lucrare / conține.js

acest punct final este un exemplu decontains interogare KeyQL. Se caută rânduri în foaia Google legată unde câmpulJob conține un subșir (sensibil la majuscule) care se potrivește cu parametrul query. Din foaia de probă, se întoarce:

$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/job/contains/?query=ist'

funcții/select/born_on/date_gt.js

acest punct final este un exemplu dedate_gt interogare KeyQL. Se caută rânduri în foaia Google legată unde câmpulBorn On este după parametrul query, formatat ca 2000/01/01. Din foaia de probă, se întoarce:

$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/born_on/date_gt/?query=2000/01/01'

funcții/selectați/Nume/istartswith.js

acest punct final este un exemplu deistartswith interogare KeyQL. Se caută rânduri în foaia Google legată unde parametrul Nameîncepe cu parametrulquery (insensibil la majuscule). Din foaia de probă, se întoarce:

$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/name/istartswith/?query=bil'

funcții/Inserare.js

acest punct final este un exemplu de interogare de inserare. Acesta trece parametrii de intrare înfieldsets parametrul googlesheets.interogare.introduceți
API. De exemplu, pentru a adăugaBill Gates la foaia de calcul, puteți face următoarea solicitare (toți parametrii sunt minuscule):

$ curl --request POST \ --header "Content-Type: application/json" \ --data '{"name":"Bill Gates","job":"CEO","fictional":false,"bornOn":"10/28/1955"}' \ --url 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/insert/'

notă: API-urile Autocode nu răspund exclusiv unei metode HTTP peste alta și, în schimb, se bazează pe denumirea descriptivă pentru a evita confuzia asupra funcționalității.

funcții / actualizare.js

acest punct final este un exemplu de interogare de actualizare. SeteazăUpdated At câmpul persoanelor ale căror nume se potrivesc exact cu parametrulname și actualizează alte câmpuri pe baza parametrilor de intrare. Acesta utilizează googlesheets.interogare.actualizare API.
De exemplu, pentru a actualiza Job câmpul Bilbo Baggins la Ring Bearer în foaia de calcul, puteți face următoarea solicitare (toți parametrii sunt minuscule):

$ curl --request POST \ --header "Content-Type: application/json" \ --data '{"name":"Bilbo Baggins","job":"Ring Bearer"}' \ --url 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/update/'

Notă: Acest lucru poate afecta mai multe rânduri dacă mai multe rânduri corespund condițiilor de interogare.

funcții / șterge.js

acest punct final este un exemplu de interogare de ștergere. Se elimină rânduri
de persoane ale căror nume se potrivesc exact name parametru. Acesta utilizează googlesheets.interogare.șterge API. De exemplu, pentru a elimina Bilbo Baggins din foaia de calcul, puteți face următoarea solicitare:

$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/delete/?name=Bilbo%20Baggins'

Notă: Acest lucru poate afecta mai multe rânduri dacă mai multe rânduri corespund condițiilor de interogare.

mulțumesc!

Dacă aveți întrebări sau feedback, cel mai bun lucru de făcut este să vă alăturați canalului Slack al Comunității Autocode. Puteți obține o invitație din fila Comunitate din bara de sus a site-ului web. De asemenea, puteți ajunge la mine direct pe Twitter @Hacubu.

Dacă doriți să fiți la curent cu cele mai recente de la Autocode, puteți urmări @AutocodeHQ. Hacking fericit!

Lasă un răspuns

Adresa ta de email nu va fi publicată.