Andrise programmeerimisalane WIKI
Tutvustus
Google App Engine ei kasuta ühtegi „tavakäibes“ olevat andmebaasi nagu näiteks MySQL, MSSQL või Oracle, vaid selle asemel on kasutusel Google poolt välja töötatud mitte-relatsiooniline andmebaas BigTable. Andmete salvestamiseks pole võimalik alternatiivina kasutada isegi tekstifaile - Google App Engine on keelanud aplikatsioonidele kettale kirjutamise õigused - ning seega tuleb absoluutselt kõik püsiv info (ajutise info jaoks saab kasutada ka näiteks memcache teeki) teenuse poolt võimaldatud andmebaasi panna.
Google App Engine käsutuses on BigTable andmebaasiga suhtlemiseks Datastore API. Antud API võimaldab siis defineerida andmebaasitabeleid, lisada andmebaasi uusi kirjeid ja neid sealt pärida. Andmete pärimine ongi BigTable üheks suurimaks plussiks - hoolimata andmebaasis olevate andmete hulgast, on pärimine alati sama kiire. Üks peamine kiiruse võimaldaja on tõenäoliselt andmebaasi nuditud olek võrrelduna näiteks MySQL andmebaasiga. JOIN lauseid teha ei saa, WHERE parameetrid on väga piiratud ulatusega, kõik päringud peavad olema eelnevalt indekseeritud jne. (lihtsamad indeksid lisab GAE ise, aga keerukamate puhul tuleb need defineerida index.yaml failis).
Teisalt kirjutamine on jälle väga aeglane. Google App Engine on hajutatud teenus, see tähendab, et aplikatsiooni andmed on korraga mitmes eri serveris, seega andmete kirjutamisel tuleb need samuti erinevate sihtkohtade vahel replitseerida. Samuti nõuab oma aja indekseerimine. See aga teeb kirjutamise suhteliselt aeglaseks, muutududes suuremate andmemahtude korral tõsiseks probleemiks. Juhul kui on vaja lisada palju kirjeid, siis on üsna tõenäoline, et ennem lõppeb skriptile antud aeg, kui kirjed baasi saavad pandud ning see lõppeb veateatega. Kusjuures juttu ei ole mitte tuhandetest, vaid sadadest kirjetest. Korraga üle 100 rea andmebaasi lisamine ei ole reeglina Google App Engine juures hea mõte.
Katkiste andmete sisestamise vastu on mõningane abi andmebaasi transaktsioonidest - juhul kui andmebaasiga suhtlemine on vormistatud transaktsioonina, siis mingi päringu ebaõnnestumisel võtab server tagasi kõik transaktsiooni käigus tehtud muudatused - nii lisamised kui kustutamised. Transaktsioone saab siiski sooritada vaid kindlate tabelitega - tegelikult isegi mitte kindlate tabelitega vaid kindlate andmebaasi ridadega - eri tabelite read peavad viitama kõik ühe juurelemendi juurde. Sellisel juhul teab BigTable antud kirjed kettal lähestikku panna ja see teeb võimalikuks ka transaktsioonide kasutamise.
Andmebaasi rea maksimaalseks suuruseks saab olla 1 MB. See tähendab, et suuremaid elemente andmebaasi panna ei õnnestu. Kuna aga andmebaasi kasutatakse lisaks tava-andmetele ka näiteks failide salvestamiseks, tähendab see suuremate failide korral mõningaid probleeme.
Käidud rada: • django_muutujad • django_tsueklid • registreerimine • python_tutvustus • django_tutvustus • bigtable_indeksid • django_parilikkus • keele_struktuurid • sms_bulletin_board • bigtable_tutvustus