Want to create interactive content? It’s easy in Genially!
Apresentação Tecnologia Digital
Guilherme Gonçalves Gouveia Pinto de Far
Created on October 9, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
Transcript
Guilherme Faria nº11 tgpsi-3
ANÁLISE APROFUNDADA SOBRE POTENCIAIS SGBD QUE POSSAM SER USADOS APLICAÇÕES MÓVEIS
As bases de dados para aplicações móveis são sistemas que permitem o armazenamento, recuperação e manipulação de dados de forma eficiente em dispositivos móveis. Estas bases podem ser classificadas em dois tipos principais: bases de dados locais e bases de dados remotas. - Bases de Dados Locais: Armazenam dados diretamente no dispositivo do utilizador. Exemplos incluem SQLite, Realm e a utilização de arquivos JSON. Estas bases são frequentemente utilizadas quando a aplicação precisa de acesso rápido aos dados, mesmo sem conexão à internet. - Bases de Dados Remotas: Armazenam dados em servidores, permitindo o acesso a partir de diferentes dispositivos. Exemplos incluem Firebase, MongoDB Atlas e serviços RESTful. Estas bases são úteis para aplicações que requerem sincronização de dados em tempo real e acesso a dados centralizados.
Introdução às Bases de Dados para Aplicações móveis:
1. Desempenho - A base de dados deve ser otimizada para dispositivos móveis, garantindo respostas rápidas e uma boa experiência de utilização. 2. Armazenamento Offline - É importante que a aplicação funcione sem ligação à internet, permitindo o acesso a dados localmente. 3. Escalabilidade - A base de dados deve suportar o crescimento em volume de dados e número de utilizadores. 4. Integração - A compatibilidade com as tecnologias utilizadas na aplicação facilita o desenvolvimento e manutenção. 5. Segurança - É crucial garantir a proteção dos dados, especialmente se forem sensíveis. 6. Custo - Considerar o custo total de propriedade é importante, pois algumas opções podem ser mais económicas a longo prazo. 7. Facilidade de Uso - Bases de dados com uma curva de aprendizado mais simples permitem um desenvolvimento mais rápido.
Introdução às Bases de Dados para Aplicações móveis:
Base de dados baseada em servidor (por exemplo, MySQL, PostgreSQL): Descrição: Bancos de dados com servidor dedicado utilizam SQL para manipulação de dados e são ideais para aplicações de médio a grande porte. Exemplos: MySQL e PostgreSQL, conhecidos por sua escalabilidade e uso em ambientes corporativos.
Base de dados NoSQL (por exemplo, MongoDB): Descrição: Armazena dados de forma não-relacional, ou seja, não segue o modelo de tabelas e colunas do SQL tradicional. Os dados podem ser armazenados em formato de documentos, grafos, pares chave-valor, etc. Uso: Ideal para grandes volumes de dados não estruturados ou semi-estruturados e para aplicações que precisam de flexibilidade de esquema. Exemplo: MongoDB, que armazena dados em documentos JSON, permitindo flexibilidade no formato e estrutura de dados.
Base de dados em tempo real (por exemplo, Firebase Realtime Database):Descrição: Focada na sincronização de dados em tempo real entre clientes e servidores. As atualizações são refletidas instantaneamente para todos os utilizadores conectados. Uso: Aplicações que exigem dados atualizados em tempo real, como aplicações de chat, colaboração e jogos. Exemplo: Firebase Realtime Database, que sincroniza dados entre múltiplos dispositivos em tempo real.
Base de dados local incorporada (por exemplo, SQLite): Descrição: Base de dados que roda localmente dentro da aplicação, sem necessidade de um servidor externo. Uso: Ideal para aplicações que precisam de uma base de dados simples e leve, com operações rápidas e sem a necessidade de rede. Exemplo: SQLite é amplamente utilizado em dispositivos móveis e aplicacações pequenos devido à sua facilidade de uso e baixo custo de implementação.
Principais Tipos de Bases de Dados:
PostgreSQL:Características Únicas: SGBD relacional avançado, suporte para operações ACID e tipos de dados complexos, como JSON e arrays. Potencialidades: Extremamente robusto e adequado para sistemas empresariais e transações complexas, com alta integridade de dados e flexibilidade.
MongoDB:Características Únicas: Base de dados NoSQL orientada a documentos, armazena dados em formato JSON-like, sem esquemas rígidos. Potencialidades: Escalabilidade horizontal e flexibilidade no armazenamento de dados não estruturados, ideal para grandes volumes de dados dinâmicos. MySQL: Características Únicas: SGBD relacional de código aberto, amplamente utilizado para aplicações web, com suporte para transações básicas. Potencialidades: Popular e fácil de usar, ótimo para aplicações web de pequena a média escala.
SQLite: Características Únicas: SGBD local, sem necessidade de servidor, armazena dados diretamente no dispositivo num ficheiro. Potencialidades: Ideal para pequenas aplicações locais ou móveis, devido à sua simplicidade e baixo consumo de recursos. Firebase:Realtime Database Características Únicas: Base de dados NoSQL em tempo real, com sincronização instantânea entre utilizadores e dispositivos via cloud. Potencialidades: Ótimo para apps que exigem dados atualizados em tempo real, como chats e colaboração em tempo real.
Características únicas de cada SGBD:
PostgreSQL Vantagens: - Excelente suporte para integridade de dados e transações complexas. - Flexível, suporta diversos tipos de dados e extensões. Desvantagens: - Mais complexo de configurar e manter do que outras opções. - Pode exigir mais recursos de hardware para um desempenho ideal.
MongoDB Vantagens: - Flexível, permite o armazenamento de dados não estruturados. - Escalável horizontalmente, ótimo para grandes volumes de dados. Desvantagens: - Menos eficiente para transações que exigem consistência rigorosa. - A curva de aprendizagem pode ser maior para novos utilizadores. MySQL Vantagens: - Gratuito e de código aberto, com ampla comunidade de suporte. - Fácil de usar e integrar em aplicações web. Desvantagens: - Funcionalidades limitadas para transações complexas. - Não é tão escalável quanto outras opções para sistemas muito grandes.
SQLite Vantagens:- Leve e fácil de implementar. - Sem necessidade de configuração de servidor. - Ideal para aplicações locais e móveis. Desvantagens: - Limitado em funcionalidades para aplicações de grande escala. - Não suporta concorrência em múltiplos utilizadores de forma eficiente. Firebase Realtime Database Vantagens: - Sincronização em tempo real, ideal para apps interativas. - Escalável e fácil de integrar com outras ferramentas do Google. Desvantagens: - Dependência da infraestrutura do Google. - Limitações em consultas complexas e análises de dados.
Vantagens e desvantagens de cada SGBD:
PostgreSQLCenários: - Sistemas empresariais com grandes volumes de dados e transações complexas. - Aplicações financeiras, análise de dados e sistemas que exigem alta integridade de dados. - Sistemas que precisam de suporte para dados estruturados e não estruturados (e.g., JSON, arrays). Adequado quando: - É necessário um SGBD robusto, seguro e com suporte para transações complexas e dados variados.
MongoDB Cenários: - Websites e aplicações que lidam com grandes volumes de dados não estruturados (por exemplo, redes sociais, ecommerce). - Armazenamento de logs, big data, dados flexíveis ou dinâmicos (e.g., JSON). - Aplicações que necessitam de escalabilidade horizontal e processamento distribuído. Adequado quando: - A estrutura dos dados é flexível e muda frequentemente, e é necessária escalabilidade. MySQL Cenários: - Aplicações web de pequena a média escala (blogs, lojas online). - Sistemas de gestão de conteúdo (WordPress, Joomla). - Pequenas empresas ou startups com aplicações web tradicionais. Adequado quando: - É necessário um SGBD relacional confiável, de fácil utilização e com suporte comum.
SQLite Cenários: - Aplicações móveis (Android, iOS) e desktop. - Aplicações pequenas e locais com poucos utilizadores. - Armazenamento temporário de dados ou ficheiros pequenos (e.g., browsers). Adequado quando: -A simplicidade e o armazenamento local são prioritários, sem necessidade de escalabilidade. Firebase Realtime Database Cenários: - Aplicações de chat, colaboração em tempo real (como documentos partilhados). - Jogos online com sincronização de dados em tempo real. - Aplicações com múltiplos utilizadores interativos, como apps de redes sociais. Adequado quando: - É necessária sincronização instantânea entre utilizadores e atualizações em tempo real.
Cenários de utilização mais adequados:
Firebase Realtime Database Escalabilidade: - Alta, com suporte nativo para escalabilidade na cloud. Sincronização em Tempo Real: - Excelente. Sincronização automática de dados em tempo real entre dispositivos. Complexidade de Consultas: - Limitada. Não é adequado para consultas complexas ou pesadas. Custos de Licenciamento: - Pode ser gratuito para uso limitado, mas os custos aumentam à medida que o uso de dados cresce (modelo de pay-as-you-go). Cenário Ideal: - Aplicações que necessitam de dados sincronizados em tempo real, como chats, colaboração ao vivo, e jogos.
SQLite Escalabilidade: - Limitada. Melhor para pequenas aplicações locais, não projetado para grandes volumes de dados ou múltiplos utilizadores simultâneos. Sincronização em Tempo Real: - Não suportada. É uma base de dados local, sem mecanismos nativos de sincronização em rede. Complexidade de Consultas: - Suporta consultas simples, mas não é ideal para consultas complexas. Custos de Licenciamento: - Gratuito e de código aberto. Cenário Ideal: - Aplicações móveis ou desktop pequenas, onde a simplicidade e o armazenamento local são prioritários.
Cenários de Utilização e Fatores-Chave:
MySQL Escalabilidade: Média. Adequado para pequenas a médias aplicações, mas pode enfrentar limitações de desempenho em grandes escalas. Sincronização em Tempo Real: Não é suportada nativamente, mas pode ser configurada usando replicação ou cache. Complexidade de Consultas: Suporta consultas relacionais tradicionais, mas menos eficiente com consultas muito complexas ou operações analíticas. Custos de Licenciamento: Gratuito na versão de código aberto (MySQL Community), mas as versões empresariais e suporte técnico têm custos. Cenário Ideal: Aplicações web de pequena a média escala, como blogs, ecommerce e aplicações de gestão de conteúdo.
MongoDB Escalabilidade: Alta. Suporte para escalabilidade horizontal, ideal para grandes volumes de dados não estruturados. Sincronização em Tempo Real: Possível com configurações adicionais, mas não é o foco principal do MongoDB. Complexidade de Consultas: Flexível e eficiente com consultas não-relacionais, mas não é tão eficiente para transações ACID complexas. Custos de Licenciamento: Gratuito na versão de código aberto (MongoDB Community), mas as versões empresariais têm custos elevados. Cenário Ideal: Aplicações que lidam com grandes volumes de dados dinâmicos e não estruturados, como redes sociais e ecommerce, onde a flexibilidade de dados é crucial.
Cenários de Utilização e Fatores-Chave:
PostgreSQL Escalabilidade: Alta. Adequado para grandes aplicações empresariais e suporte para replicação e clusters. Sincronização em Tempo Real: Não nativo, mas possível através de extensões e replicação. Complexidade de Consultas: Excelente suporte para consultas complexas, operações ACID e dados estruturados e não estruturados (e.g., JSON, arrays). Custos de Licenciamento: Gratuito e de código aberto, mesmo para funcionalidades avançadas. Cenário Ideal: Sistemas corporativos e financeiros com necessidade de transações complexas e alta integridade de dados, onde a segurança e robustez são essenciais.
Cenários de Utilização e Fatores-Chave:
Manutenção e Atualização de Dados Desafio: Manter a integridade dos dados durante atualizações de versões da aplicação e garantir que a base de dados continue compatível ao longo do tempo. Exemplo: Atualizar o esquema da base de dados sem corromper ou perder dados existentes.
Conectividade Instável Desafio: A conexão à Internet pode ser inconsistente, especialmente em áreas com má cobertura, afetando a sincronização de dados e a comunicação com servidores remotos. Exemplo: A aplicação pode perder a ligação ao servidor no meio de uma transação, causando possíveis conflitos de dados. Segurança dos Dados Desafio: Garantir a segurança dos dados armazenados no dispositivo móvel e durante a transferência para servidores é crucial, especialmente para aplicações que lidam com dados sensíveis. Exemplo: Bases de dados locais em dispositivos podem estar vulneráveis a roubo de dados se não forem encriptadas.
Sincronização de Dados entre Dispositivos e Servidores Desafio: Manter a consistência dos dados entre o armazenamento local (offline) e os servidores remotos quando a aplicação recobra a conectividade. Exemplo: Uma aplicação móvel pode continuar a operar offline, mas os dados precisam ser sincronizados corretamente quando a conexão for restabelecida. Limitações de Recursos (Armazenamento e CPU) Desafio: Dispositivos móveis têm restrições de armazenamento, memória e processamento, o que pode dificultar o desempenho eficiente de uma base de dados. Exemplo: Executar consultas complexas ou armazenar grandes volumes de dados pode resultar em lentidão ou consumo excessivo de recursos do dispositivo.
Desafios Comuns no Uso de Bases de Dados em Aplicações Móveis:
Manejo de Atualizações de Base de Dados Exemplo: Usar ferramentas como Room (Android) ou Core Data (iOS) que fornecem mecanismos para migrações automáticas e seguras do esquema de dados.
Conectividade Instável Exemplo: A aplicação pode perder a ligação ao servidor no meio de uma transação, causando possíveis conflitos de dados. Segurança dos Dados Exemplo: Bases de dados locais em dispositivos podem estar vulneráveis a roubo de dados se não forem encriptadas.
Sincronização de Dados Offline/Online Exemplo: Utilizar bibliotecas como Firebase Realtime Database ou frameworks de sincronização que gerenciam automaticamente a atualização dos dados entre cliente e servidor. Uso Eficiente de Recursos Exemplo: Utilizar bases de dados leves como SQLite para armazenar dados localmente, com foco em consultas simples e rápidas.
Melhores Práticas para Mitigar esses Desafios:
- CHATGPT. - https://www.mongodb.com/products/tools/compass - https://www.sqlitetutorial.net/ - https://sqlitestudio.pl/ - https://pt.wikipedia.org - https://appmaster.io/pt