--- title: IndexedDB slug: Web/API/IndexedDB_API translation_of: Web/API/IndexedDB_API ---
IndexedDB é uma API para armazenamento client-side de quantidades significantes de informações e buscas com alta performance por índices. Enquanto DOM Storage é útil para armazenamento de pequenas quantidade de dados, IndexedDB é a solução para grande porção de dados estruturados.
Esta página basicamente é o ponto de entrada para uma descrição técnica dos objetos da API. Precisando de suporte ainda mais inicial consulte os Conceitos Básicos sobre IndexedDb. Para mais detalhes sobre a implementação, veja Usando IndexedDB.
IndexedDB provém APIs separadas para acesso tanto síncrono quanto assíncrono. As APIs síncronas devem ser utilizadas apenas dentro de Web Workers, apesar de não ser implementada por nenhum navegador atualmente. A API assíncrona funciona tanto com ou sem Web Workers, sendo que o Firefox ainda não implementou este.
Os métodos da API assíncrona são chamados sem bloquear a thread que os chama. Para obter acesso assíncrono à database, chame open() no atributo indexedDB do objeto window, que retornará um objeto {{domxref("IDBRequest")}}. Operações assíncronas comunicam-se com a aplicação que os chamam executando eventos nos objetos {{domxref("IDBRequest")}}.
Nota: O objeto indexedDB é prefixado em navegadores mais antigos (propriedade mozIndexedDB em Gecko < 16, webkitIndexedDb em Chrome e msIndexedDB no IE 10).
As interfaces da API assíncrona do IndexedDB são:
Uma versão anterior da especificação também define estas interfaces agora removidas. Elas ainda estão documentadas caso você precise atualizar códigos escritos anteriormente:
Nota: há também a versão síncrona da API. A versão síncrona não tem implementação em qualquer navegador. É feita para ser utilizada com WebWorkers.
Não há qualquer limite em um único elemento da database. Entretanto podem haver limites quanto ao tamanho de cada banco de dados. Este limite (e a maneira com qual o usuário chega a ele) pode variar de um navegador para outro:
Firefox: não há limite no tamanho do banco de dados. A interface do usuário irá apenas pedir a permissão para armazenar conjuntos com tamanho maior que 50mb. Este limite de tamanho pode ser customizado através da preferência dom.indexedDB.warningQuota (que é definida em http://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/init/all.js).
Google Chrome: veja https://developers.google.com/chrome...rage#temporary
{{ CompatibilityTable() }}
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
API Assíncrona |
11.0 {{ property_prefix("webkit") }} |
{{ CompatGeckoDesktop("2.0") }} {{ property_prefix("moz") }} {{ CompatGeckoDesktop("16.0") }} |
10 | 17 | 11.1 |
API Síncrona (com WebWorkers) | {{ CompatNo() }} | {{ CompatNo() }} See {{ bug(701634) }} |
{{ CompatNo() }} | {{ CompatNo() }} | {{ CompatNo() }} |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
API Assíncrona | 4.4 | {{ CompatGeckoDesktop("6.0") }} {{ property_prefix("moz") }} {{ CompatGeckoDesktop("16.0") }} |
10 | 17 | 10.3 |
Nota: alguns browsers ainda não suportam IndexedDB mas suportam WebSQL, mais especificamente Safari/Webkit no desktop e iOS. Uma maneira de driblar este problema é utilizar IndexedDB Polyfill ou Shim, que recorre ao WebSQL para navegadores que não suportam.