IndexedDB er en JavaScript - applikationsprogrammeringsgrænseflade ( API ) til lagring på klientsiden af store mængder strukturerede data, inklusive filer / blobs . Det er med andre ord et NoSQL -datalager i JSON-format inde i browseren . Standarden er udviklet af W3C og implementeret i browsere siden 2011. [en]
Understøttelse af IndexedDB blev tilføjet i Firefox version 4, [2] Google Chrome version 11, [3] og Internet Explorer version 10. [4] Safari tilføjede til sidst support i version 8. [5]
Web SQL-databasen var en forgænger API udviklet af Apple . [6] Men Mozilla modsatte sig standardiseringen, fordi der ikke blev tilbudt alternativer til SQLite -motoren . [7] [8] Som sådan er det blevet forældet til fordel for IndexedDB .
I databasen kan IndexedDB- websteder permanent gemme og læse klientlagerdata. Hvert domæne har sit eget lagerområde, adgang til data gemt på et andet domæne gives ikke i overensstemmelse med Same Origin Policy . Mængden af tilgængelig hukommelse varierer efter browser, der er normalt en fast grænse, der ikke kan overskrides, og en blød grænse, hvorfra brugeren først skal acceptere lagring. [9] I princippet er lagring permanent, men browsere giver deres brugere mulighed for at slette lagrede data. [ti]
En database er en objektdatabase, typisk lagrede JavaScript-objekter, med en af posterne som nøglen, hvormed data kan hentes. Indekser kan også oprettes på andre lagrede objektposter for at muliggøre effektive opslag.
Databaseadgang er asynkron: klienten foretager en anmodning og registrerer tilbagekaldsfunktioner. Så snart resultatet af anmodningen er kendt, vil han blive informeret om det, og i tilfælde af succes, vil de ønskede data blive oplyst, i tilfælde af fejl, årsagen. Ved adgang bruges transaktioner til at sikre datakonsistens, også selvom f.eks. to samtidigt åbne faner har uafhængig adgang til databasen.
Den nøjagtige implementering af databasen er ikke fast, men det er et B-træ . Alle moderne browsere understøtter standarden, da den hele tiden udvikler sig, ikke altid i den aktuelle version. I Microsoft-browsere er grænsefladen kun delvist implementeret. [10] Ældre versioner af browser-API'en er stadig delvist præfikset af udvikleren. [elleve]
Web Storage er et meget enklere alternativ til datalagring, men med færre funktioner, designet til en lille mængde data.
En alternativ standard, som er en database, der kan tilgås via SQL - forespørgsler, var Web SQL . Denne standard blev dog kun implementeret i nogle få browsere, så den blev afbrudt til fordel for IndexedDB . [12]
I ældre browsere kan IndexedDB modelleres med polyfills . [13]