A Google Táblázatok adatbázisként való használata (felelősségteljesen)

míg az adatbázis-technológia és más eszközök hosszú utat tettek meg, még mindig nehéz legyőzni a szerény táblázatkezelő sokoldalúságát és intuitivitását. Bár érzékeny, kritikus alkalmazásokhoz, például a COVID-19 betegadatok tárolásához nem tanácsos használni őket, az a tény, hogy mindenki tudja, hogyan kell használni a táblázatot, azt jelenti, hogy kiválóan alkalmasak kisebb, keresztfunkcionális projektekhez, ahol egy nem fejlesztőnek esetleg meg kell vizsgálnia vagy szerkesztenie kell az adatokat.

ebben az útmutatóban megmutatom, hogyan kell használni a Google táblázatokat adatbázisként, kiegészítve egy API felülettel, amely HTTP-n keresztül érhető el. Autokódot fogunk használni, egy csomópontot.js API fejlesztési platform és szerkesztő beépített automatikus kiegészítéssel, egy egyszerű alkalmazás telepítéséhez és a Google hitelesítési folyamatának kezeléséhez. Meg fogom vizsgálni a Google Táblázatok korlátait is, beleértve a méretezhetőséget, és ahol van értelme összetettebb alternatívákat keresni.

# 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'

az induláshoz nem kell más, mint egy Google-fiók és egy ingyenes Autocode-fiók. Gyerünk!

először klónoznia kell a sablon saját példányát Google Sheet ide kattintva, majd nyomja meg a gombot sablon használata a jobb felső sarokban. Ez hozzáadja a minta táblázatot a személyes Google-Fiókjához.

miután ezt megtette, kattintson ide a starter alkalmazás megnyitásához az Autocode alkalmazásban. Ha szeretné, keresse meg a forráskódot, majd telepítse az alkalmazást az Autocode fiókjába a zöld gomb megnyomásával. Amikor a rendszer kéri a Google-lap összekapcsolását, kövesse a folyamat utasításait a Google-Fiók összekapcsolásához, majd válassza ki az imént klónozott táblázatot.

ezt követően az alkalmazásnak készen kell állnia az indulásra! Próbáljon meg hozzáférni néhány végponthoz az URL-eken keresztül, és nézze meg, mi kerül vissza/mi történik az új táblázatkezelő adatbázissal. Megnézheti az alábbiEndpoints szakaszt, például hívásokat.

korlátozások

Ez a tl;dr könnyű volt, igaz? Akkor miért nem épül fel minden a Google táblázatokra?

bár egy 30 másodpercet igénybe vevő backend beállítása rendkívül vonzó, van néhány nyilvánvaló korlátozás. A táblázat, mint a fent leírt adatbázis, természetesen nem támogatja a több táblát vagy a sorok közötti kapcsolatokat. Nincs koncepció egy adott oszlop, tranzakciók, beépített biztonsági mentések vagy titkosítás típusainak érvényesítésére, így az érzékeny / kritikus adatokat (például a COVID-19 betegadatait) valószínűleg máshol lehet a legjobban tárolni.

a skálázhatóság szempontjából a Google Táblázatok kemény határa 5 000 000 cella (beleértve az üres cellákat is). Amikor megpróbáltam ezt ellenőrizni egy ilyen sok értékkel rendelkező táblázat létrehozásával, azonban jelentős problémákat tapasztaltam a teljesítményben a küszöb előtt:

a tömeges műveletek, mint például a nagyszámú sejt beillesztése, lelassultak, majd 1 millió cellánál kezdtek meghibásodni. A navigáció általában lassú volt.

az API-hívások kezdeményezésével kapcsolatos kísérleteim hasonló eredményeket hoztak. Úgy tűnt, hogy a lekérdezési sebesség lineárisan skálázódik a cellák számával:

a lekérdezések gyakorlatilag lassúvá váltak az 500 000 cellajel körül, de még mindig 2 másodperc alatt voltak egy 100 000 cellás lekérdezéshez. Ezért, ha néhány százezer cellánál nagyobb adatkészletre számít, valószínűleg okos lenne egy skálázhatóbb opciót választani.

hogyan működik

amikor összekapcsolja a klónozott Google-lapot az alkalmazásával, majd telepíti a fiókjával, az Autocode automatikusan kezeli az alkalmazás és a Google-fiók közötti hitelesítést az alkalmazás tokenjével (lásd aconst lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN}) sort az összes végpont tetején).

a tényleges lekérdezések esetében minden végpont csomópontot tartalmaz.js kód, amely meghív egy módszert a googlesheets – ből.lekérdezés API. Ezek az API-k egy range nevű paramétert vesznek fel A1 jelöléssel, amely megfelel a táblázat azon részének, amelyet az API-hívásnak az adatbázis részeként figyelembe kell vennie.

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

arangeértékeA:E lényegében rövidítése “használja az összes sort oszlopok a-E a táblázatban, mint az én adatbázis”. A lekérdezés az adott tartomány minden oszlopának első sorát értelmezi az adott oszlop értékeinek mezőnéveként. A klónozott sablon alapján a fenti lekérdezés ellenőrzi az A oszlop összes értékét (Name néven) a lekérdezésnek megfelelő értékkel rendelkező sorok számára.

Ezek az API-hívások a KeyQL lekérdezési nyelvet használják. Ha érdekel egy mély merülés, akkor nézd meg további példákat.

hívás végpontok

mint korábban említettük, ezek a végpontok HTTP-n keresztül érhetők el, így hívásokat kezdeményezhet velük fetchcURL, vagy bármilyen más HTTP kliens segítségével. A webböngészőt közvetlenül is használhatja:

és még ugyanazt a lib-node csomópont csomagot is használhatja, amelyet a végpontok használnak a Google Táblázatok API-k hívásához:

a végpontok válaszolnak a GET vagy POST kérésekre. A paramétereket a lekérdezési kérések lekérdezési stringjéből, a POST kérések kérési törzséből elemezzük. Az egyértelműség érdekében minden végpont alapértelmezett paraméterekkel rendelkezik. Az alábbiakban példákat talál az egyes végpontokra.

végpontok

funkciók/kiválasztás/feladat/tartalmaz.js

Ez a végpont egy contains KeyQL lekérdezés példája. Olyan sorokat keres a linkelt Google-lapon, ahol a Job mező tartalmaz egy alszöveget (nagybetűérzékeny), amely megfelel a queryparaméternek. A mintalapból visszatér:

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

functions/select/born_on/date_gt.js

Ez a végpont egy date_gt KeyQL lekérdezés példája. Olyan sorokat keres a csatolt Google-lapon, ahol a Born On mező a query paraméter után van, formázva 2000/01/01. A mintalapból visszatér:

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

functions/select/name/istartswith.js

Ez a végpont egy istartswith KeyQL lekérdezés példája. Olyan sorokat keres a linkelt Google-lapon, ahol a Name mező a query paraméterrel kezdődik (kisbetűérzékeny). A mintalapból visszatér:

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

funkciók/beszúrás.js

Ez a végpont egy példa egy beszúrási lekérdezésre. A bemeneti paramétereket a googlesheets fieldsets paraméterébe továbbítja.lekérdezés.beszúrás
API. Például a Bill Gates hozzáadásához a táblázathoz a következő kérést teheti meg (minden paraméter kisbetűs):

$ 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/'

Megjegyzés: Az autocode API-k nem válaszolnak kizárólag az egyik HTTP-módszerre a másikkal szemben, hanem a leíró elnevezésre támaszkodnak, hogy elkerüljék a funkcionalitással kapcsolatos félreértéseket.

funkciók / frissítés.js

Ez a végpont egy frissítési lekérdezés példája. Beállítja aUpdated At azon személyek mezőjét, akiknek a neve pontosan megegyezik aname paraméterrel, és frissíti a többi mezőt a bemeneti paraméterek alapján. Használja a googlesheets.lekérdezés.API frissítése.
például a Jobmező Bilbo Bagginsa Ring Bearera táblázatban a következő kérést teheti meg (minden paraméter kisbetűs):

$ 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/'

megjegyzés: ez több sort is érinthet, ha egynél több sor felel meg a lekérdezési feltételeknek.

funkciók / törlés.js

Ez a végpont egy törlési lekérdezés példája. Eltávolítja sorok
az emberek, akiknek a neve pontosan egyezik a name paraméter. Használja a googlesheets.lekérdezés.API törlése. Például aBilbo Baggins eltávolításához a táblázatból a következő kérést teheti:

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

Megjegyzés: Ez több sort is érinthet, ha egynél több sor felel meg a lekérdezési feltételeknek.

köszönöm!

Ha bármilyen kérdése vagy visszajelzése van, a legjobb, ha csatlakozik az Autocode community Slack csatornához. Meghívót kaphat a webhely felső sávjában található közösség fülről. Azt is elérheti, hogy nekem közvetlenül a Twitter @Hacubu.

ha naprakészen szeretné tartani az Autocode legújabb verzióját, kövesse az @AutocodeHQ parancsot. Boldog hackelés!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.