indexeddbAan de slag met indexeddb


Opmerkingen

Deze sectie geeft een overzicht van wat indexeddb is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen indexeddb vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor geïndexeerd DB nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Overzicht

IndexedDB is een API op laag niveau voor client-side opslag van aanzienlijke hoeveelheden gestructureerde gegevens, inclusief bestanden / blobs. Deze API maakt gebruik van indexen om krachtige zoekopdrachten in deze gegevens mogelijk te maken. Hoewel webopslag handig is voor het opslaan van kleinere hoeveelheden gegevens, is het minder handig voor het opslaan van grotere hoeveelheden gestructureerde gegevens. De IndexedDB-standaard is gemaakt om schaalbare, krachtige opslag en het ophalen van Javascript-objecten in een browser mogelijk te maken.

Basics

indexedDB is ontworpen voor het opslaan van Javascript-objectliterals zoals {prop1 : value, prop2 : value} . Bovendien ondersteunen recentere implementaties het opslaan van grote binaire objecten (BLOB's), zoals afbeeldingen, audiobestanden en videobestanden. Bovendien kan geïndexeerde DB objecten opslaan die andere objecten bevatten (geneste objecten), zoals {prop1 : value, prop2 : {nestedprop1 : value, nestedprop2 : value}} .

Hier volgen enkele basisconcepten:

  • Database : een container met objectarchieven en indices. Elke database heeft een naam en een versie.
  • Object store : een container met objecten. Dit is analoog aan een tabel in een relationele database. In geïndexeerde DB komen records overeen met Javascript-objecten en komen kolommen overeen met Javascript-objecteigenschappen. Objecten die aan de winkel zijn toegevoegd, worden opgeslagen in de toegevoegde volgorde. Query's voor de winkel halen objecten in dezelfde volgorde op. U kunt objecten in een objectarchief invoegen, bijwerken of verwijderen.
  • Index : een speciale container voor specifieke objecten in een objectarchief. Indices zijn ook analoog aan tabellen en kunnen worden opgevat als objectopslag met speciale beperkingen. Wanneer een object in een objectarchief wordt ingevoegd, kan het, als het aan bepaalde criteria voldoet, ook in een bijbehorend indexarchief worden ingevoegd. Objecten in een index worden opgeslagen in een volgorde die door de index wordt gedefinieerd. Query's voor een index halen objecten op in de volgorde die door de index is gedefinieerd (hoewel query's kunnen worden geconfigureerd om anders te werken). U kunt geen objecten in een index invoegen, bijwerken of verwijderen (u kunt dit alleen indirect doen door het object in te voegen in de winkel waarop de index is gebaseerd).
  • Cursor : cursors zijn analoog aan zoekopdrachten. Een cursor itereert over de objecten in een objectarchief of een index. Cursors kunnen vooruit of achteruit gaan, zoeken (voorbij objecten springen of vooruitgaan) en naar het volgende of vorige 'unieke' object in de onderliggende winkel / index springen.
  • Sleutelpad : sleutelpaden zijn analoog aan primaire sleutels (of samengestelde primaire sleutels) van een tabel in een relationele database. In het algemeen, wanneer u geïndexeerde DB opdraagt een objectarchief in een bepaalde database te maken, definieert u ook het sleutelpad voor het archief. U kunt het sleutelpad gebruiken om snel een bepaald object te krijgen, vergelijkbaar met het gebruik van een primaire sleutel om een record in een relationele tabel te selecteren. U kunt optioneel sleutels gebruiken om ervoor te zorgen dat latere pogingen om een object in een objectarchief in te voegen dat al een object met dezelfde sleutel bevat, een foutmelding geven.
  • Transacties en verzoeken : verzoeken zijn analoog aan individuele SQL-vragen. Er zijn specifieke API-methoden voor het invoegen van een object, het verwijderen van een object, het bijwerken van een object en het herhalen van een of meer objecten. Elke methodeaanroep komt overeen met een enkele aanvraag. Elk verzoek vindt plaats in het kader van een transactie. Met andere woorden, meerdere verzoeken kunnen in één transactie voorkomen. Individuele verzoeken kunnen om verschillende redenen mislukken. Bij het uitvoeren van meerdere aanvragen in een enkele transactie, worden de aanvragen niet volledig vastgelegd totdat alle aanvragen als succesvol worden beschouwd. Op deze manier kan, als zich een probleem voordoet in een later verzoek, de gehele transactie worden "teruggedraaid" zodat de status van het onderliggende objectarchief dezelfde is als vóór het optreden van het eerste verzoek in de transactie.

Async versus Sync

Javascript API van indexedDB maakt gebruik van asynchrone technieken. Bij directe interactie met de API, en niet met een externe bibliotheek van een hoger niveau, vereist de API het gebruik van Javascript-callbacks. Het asynchrone ontwerp helpt voorkomen dat grotere gegevensverwerkingsbewerkingen de belangrijkste Javascript-thread blokkeren, waardoor wordt voorkomen dat de gebruikersinterface (wat u in de browser ziet) bevroren / schokkerig / laggy wordt weergegeven.

Ondersteuning

Ga naar http://caniuse.com/#feat=indexeddb .

Kom meer te weten

Geïndexeerd DB Request-overzicht

voer hier de afbeeldingsbeschrijving in

Zoals te zien op de bovenstaande afbeelding, in geïndexeerde DB om toegang te krijgen tot de gegevens die u nodig hebt:

  1. Open een verbinding met de gewenste database
  2. Open een transactie die alleen-lezen of lezen schrijven is
  3. Open een cursor of index die kan worden gebruikt voor het filteren van de gegevens
  4. In de cursor request - onsuccess-gebeurtenis hebt u toegang tot uw gegevens

Geïndexeerd DB-schema

Geïndexeerd DB-schema

Zoals te zien is op de bovenstaande afbeelding, kunnen we in een enkele applicatie het volgende maken:

  • Meerdere databases
  • Elke database kan meerdere objectopslag (tabellen) hebben
  • Elke objectopslag kan meerdere objecten hebben opgeslagen

Installatie of instellingen

Gedetailleerde instructies voor het instellen of installeren van geïndexeerde DB.