Buscar

Armazenamento Local em Aplicativos Mobile

Prévia do material em texto

Aplicativos Mobile 
Multiplataforma
Tema 07 – Armazenamento Local
Bloco 1
César Torres Fernandes
Tecnologias para Aplicações Web
Introdução
Neste tema, você verá formas de
armazenamento de dados que podem ser
utilizados em seus projetos.
Várias APIs de armazenamento estão
disponíveis para aplicações de Cordova.
Cada API oferece vantagens e desvantagens,
e você deve escolher a que melhor se adapta
às suas necessidades ou também pode usar
várias abordagens diferentes dentro de uma
única aplicação para diferentes fins.
Armazenamento local (LocalStorage)
O armazenamento local fornece
armazenamento simples, um par síncrono
chave/valor, e é suportado pelas
implementações WebView de todas as
plataformas Cordova.
O armazenamento local pode ser acessado
por meio do window.localStorage.
Armazenamento local
Vantagens
• Suportado por todas as plataformas de Cordova.
• Sua API simples e síncrona significa que é fácil de usar.
Desvantagens
• Só armazena strings, estruturas de dados mais
complexas têm que ser serializadas, e apenas os dados
que podem ser serializados podem ser armazenados.
[...]
Armazenamento local
• Executa mal com grandes quantidades de dados. Em
particular:
• A falta de meios indexadores para pesquisas requerem 
iteração manual de todos os dados.
• O armazenamento de itens grandes ou complexos é 
lenta por causa da necessidade de serializar / de-
serialize.
• API síncrona significa chamadas que travarão a interface 
do usuário. 
• Total de armazenamento limitado (normalmente, em
torno de 5 MB).
• Dados armazenados em determinados locais podem
ser limpos pelo sistema operacional quando o espaço é
necessário.
WebSQL
WebSQL fornece uma API para armazenar dados
em um banco de dados estruturado, que pode ser
consultado usando uma sintaxe SQL padrão
(especificamente, SQLite). Como tal, ele fornece
todo o poder (e complexidade) do SQL.
É apoiado pelo WebView nas seguintes
plataformas Cordova:
• Android.
• BlackBerry 10.
• iOS.
WebSQL
Para criar ou abrir um banco de dados,
utilizamos o método window.openDatabase():
var db = window.openDatabase ( nome, versão,
nome_amigável, tamanhoEstimado );
Em que:
nome (string).
version (string).
nome_amigável (string).
tamanhoEstimado (número).
WebSQL
Trabalhando com versões de banco de dados.
• Ao abrir um banco de dados existente, se a versão
especificada não coincide com a versão do banco
de dados, uma exceção será lançada e o banco de
dados não será aberto.
• No entanto, se você especificar uma cadeia vazia
para a versão, o banco de dados será aberto
independentemente de sua versão atual (pode
consultar a versão atual via db.version).
• Cautela - se o banco de dados está sendo criado,
ele será desenvolvido com sua versão definida
como uma cadeia vazia.
WebSQL
Vantagens
• Bom desempenho - os dados podem ser indexados
para fornecer pesquisas rápidas e a API assíncrona
significa que não se deve trancar a interface do
usuário.
• Robustez de usar um modelo de banco de dados
transacional.
• Suporte para controle de versão.
WebSQL
Desvantagens
• Não é suportado por todas as plataformas de Cordova.
• Mais complexo do que trabalhar com LocalStorage ou
IndexedDB.
• A API está obsoleta.
• Impõe uma estrutura rígida que deve ser definida
previamente.
• Total de armazenamento limitado (normalmente, em
torno de 5 MB).
Aplicativos Mobile 
Multiplataforma
Tema 07 – Armazenamento Local
Bloco 2
César Torres Fernandes
Tecnologias para Aplicações Web
IndexedDB
O objetivo da API IndexedDB é combinar os pontos fortes
das APIs LocalStorage e WebSQL, evitando, ao mesmo
tempo, seus pontos fracos.
IndexedDB permite armazenar objetos arbitrários
JavaScript, indexados com uma chave. Ele fornece alguns
dos benefícios de tabelas SQL, sem restringir a estrutura
ou a necessidade de defini-lo previamente.
IndexedDB fornece um modelo de dados simples e fácil de
entender, muito parecido com LocalStorage. Mas, ao
contrário do LocalStorage, você pode criar vários bancos
de dados, com várias tabelas por cada um deste. Quanto à
busca indexada e API assíncrona, estas fornecem
benefícios de desempenho.
IndexedDB
IndexedDB é suportado pelo WebView nas seguintes
plataformas Cordova:
• BlackBerry 10.
• Windows (com algumas limitações).
• Android (4.4 e superior).
IndexedDB
Limitações do Windows:
• Suporte à plataforma Windows para
IndexedDB está incompleta. Por exemplo, ela
não tem as seguintes características:
• Não é disponível para trabalhadores da 
web. 
• Não suporta matriz de caminhos-chave. 
• Não suporta matriz de chaves. 
• Não suporta pesquisa de objeto por meio 
de índice composto. 
IndexedDB
Vantagens
• Bom desempenho - API assíncrona não bloqueará a
interface do usuário, e a indexação fornece bom
desempenho de pesquisa.
• Modelo de dados simples e mais fácil de aprender do
que SQL.
• Estrutura mais flexível do que WebSQL.
• Vários bancos de dados e armazenamentos de objetos
fornecem mais estrutura do que o LocalStorage.
• Robustez ao usar um modelo de banco de dados
transacional.
• Suporte para controle de versão.
IndexedDB
Desvantagens
• Não suportado no iOS.
• API complexa com retornos de chamada aninhadas.
• Total de armazenamento limitado (normalmente, em
torno de 5 MB).
Opções Baseadas em Plug-in
FileSystem API
A API FileSystem é uma especificação do W3C
que foi implementada pelo Chrome, mas não por
outros navegadores.
Ele fornece APIs para armazenar e recuperar
dados no sistema de arquivos local.
Embora a API não seja suportada nativamente
por qualquer plataforma de Cordova, o plug-in
fornece uma implementação extensa que está
disponível em todas as plataformas Cordova.
Opções Baseadas em Plugin
O plug-in SQLite fornece uma API praticamente idêntica ao
WebSQL. As principais diferenças são:
• Ele está disponível com suporte para a plataforma
Windows.
• Ele efetivamente não tem limitações de tamanho.
Encontra-se disponível nas seguintes variações:
• cordova-sqlite-storage - versão do núcleo que inclui
sua própria implementação sqlite3. Ele suporta iOS,
Android e as plataformas do Windows.
• cordova-sqlite-ext - versão estendida com recursos
adicionais, incluindo suporte REGEXP no Android e iOS.
• cordova-sqlite-evfree - semelhante ao cordova-sqlite-
ext, mas com melhor processamento da memória.
Disponível sob a GPL v3 ou licença comercial.