Escriturário Informática Parte 5 Prof. Márcio Hunecke
Informática BANCO DE DADOS NOSQL (CONCEITOS BÁSICOS, BANCOS ORIENTADOS A GRAFOS, COLUNAS, CHAVE/VALOR E DOCUMENTOS) NoSQL (originalmente se referindo a "no SQL" "não SQL" ou "non relational" não relacional, posteriormente estendido para Not Only SQL Não Somente SQL) é um termo genérico para uma classe definida de banco de dados que fornecem um mecanismo para armazenamento e recuperação de dados que são modelados de formas diferentes das relações tabulares usadas nos bancos de dados relacionais. Tais bancos de dados existem desde o final da década de 1960, mas não obtiveram o apelido de "NoSQL" até atingirem sua onda de popularidade no início do século vinte e um, desencadeada pelas necessidades das empresas de Web 2.0 como Facebook, Google e Amazon.com. Bancos de dados NoSQL são cada vez mais usados em Big Data e aplicações web de tempo real. Motivações para esta abordagem incluem: simplicidade de projeto, escalonamento "horizontal" mais simples para clusters de máquinas (o que é um problema para bancos de dados relacionais) e controle mais refinado sobre a disponibilidade. As estruturas de dados usadas pelos bancos de dados NoSQL (Colunas, Chave-valor, Grafos ou Documentos) são diferentes daquelas usadas por padrão em bancos de dados relacionais, tornando algumas operações mais rápidas em NoSQL. A adequação particular de um determinado banco de dados NoSQL depende do problema que ele deve resolver. As estruturas de dados usadas por bancos de dados NoSQL também são vistas como "mais flexíveis" que tabelas de bancos de dados relacionais. A maioria dos bancos de dados NoSQL oferece um conceito de "consistência eventual" em que as alterações do banco de dados são propagadas para todos os nós "eventualmente" (geralmente em milissegundos), de forma que as consultas de dados podem não retornar dados atualizados imediatamente ou podem resultar na leitura de dados não precisa, um problema conhecido como leitura obsoleta. Além disso, alguns sistemas NoSQL podem exibir gravações perdidas e outras formas de perda de dados. Referência: https://pt.wikipedia.org/wiki/nosql Tabela comparativa entre banco de Dados Relacionais e NoSQL O modelo relacional normaliza dados em estruturas tabulares conhecidas como tabelas, que consistem em linhas e colunas. Um esquema define estritamente as tabelas, colunas, índices, relações entre tabelas e outros elementos do banco de dados. Modelo de dados Bancos de dados não relacionais (NoSQL) normalmente não aplicam um esquema. Geralmente, uma chave de partição é usada para recuperar valores, conjuntos de colunas ou documentos semiestruturados JSON, XML ou outros que contenham atributos de itens relacionados. www.acasadoconcurseiro.com.br 3
Sistemas de gerenciamento de bancos de dados relacionais tradicionais são compatíveis com um conjunto de propriedades definido pela sigla ACID: Atomicidade, Constância, Isolamento e Durabilidade. Atomicidade significa "tudo ou nada", ou seja, uma transação é concluída integralmente ou não. Constância significa que quando uma transação é realizada, os dados devem estar em conformidade com o esquema do banco de dados. Isolamento exige que as transações simultâneas sejam executadas separadas uma da outra. Durabilidade é a capacidade de se recuperar de uma falha do sistema ou falta de energia inesperada para o último estado conhecido. Propriedades ACID Bancos de dados NoSQL normalmente trocam algumas propriedades ACID de sistemas de gerenciamento de bancos de dados relacionais por um modelo de dados mais flexível que escala horizontalmente. Essas características fazem dos bancos de dados NoSQL uma excelente opção em situações em que os SGBDs deparam com desafios de arquitetura e precisam solucionar uma combinação de gargalos de desempenho, escalabilidade, complexidade operacional e custos crescentes de administração e suporte. O desempenho normalmente depende do subsistema do disco. A otimização de consultas, índices e estrutura de tabela é necessária para alcançar máximo desempenho. Desempenho Desempenho geralmente é uma função do tamanho do cluster do hardware subjacente, da latência de rede e da aplicação que faz a chamada. Mais fácil de aumentar a escala "verticalmente" com hardware mais rápido. Outros investimentos são necessários para tabelas relacionais para abranger um sistema distribuído. Escala Projetado para aumentar a escala "horizontalmente" usando clusters distribuídos de hardware de baixo custo para aumentar a transferência sem aumentar a latência. As solicitações para armazenar e recuperar dados são comunicadas usando consultas compatíveis com structured query language (SQL). Essas consultas são analisadas e executadas por sistemas de gerenciamento de bancos de dados relacionais. APIs APIs baseadas em objetos permitem que desenvolvedores de aplicações armazenem e restaurem facilmente estruturas de dados na memória. As chaves de partição permitem que os aplicativos procurem pares de chave-valor, conjuntos de colunas ou documentos semiestruturados contendo objetos e atributos de aplicativos serializados. Os bancos de dados SQL normalmente oferecem um rico conjunto de ferramentas para simplificar o desenvolvimento de aplicações orientadas ao banco de dados. Ferramentas Os bancos de dados NoSQL normalmente oferecem ferramentas para gerenciar clusters e escalabilidade. As aplicações são a interface principal com os dados subjacentes. 4 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Henecke Principais soluções NoSQL do mercado Características resumidas dos bancos de dados NoSQL Bancos de dados não relacionais. Utilizam soluções de cluster para prover alta disponibilidade. Esquema do banco de dados totalmente flexível. Se necessário melhor a performance do banco de dados, novos servidores são adicionados, o que significa uma atualização HORIZONTAL. Para os bancos de dados relacionais, a atualização costuma ser VERTICAL, melhorando os recursos do único computador, o que sempre representa custos bem superiores. O desempenho do banco de dados é um espelho do hardware, diferentemente dos bancos de dados relacionais onde o desempenho é muitas vezes prejudicado pela necessidade de consulta em diversas tabelas (Joins). Banco mais usado é o MongoDB. Índices são fundamentais para bom desempenho. www.acasadoconcurseiro.com.br 5
Questões 1. (2017 IBFC TJ-PE Analista Judiciário Analista de Sistemas) Pentaho é um software de código aberto para inteligência empresarial, desenvolvido em Java. Assinale a alternativa que apresenta com quais bancos de dados o software trabalha nativamente: a) NoSQL e Hadoop b) PostgreSQL e Oracle c) NoSQL e Oracle d) PostgreSQL e Hadoop e) NoSQL e PostgreSQL 2. (2014 Quadrix DATAPREV Analista Tecnologia da Informação) Atualmente, diversos bancos de dados estão disponíveis aos mais variados fins. Cada um com especificações, propósitos, modelos e arquiteturas diferentes. Dentre eles, um se destaca como o mais popular banco de dados Open Source do mundo, administrado atualmente pela Oracle Corparation. De qual banco de dados trata essa referência? a) NoSQL. b) SQLite. c) MySQL. d) DB2. e) PostgreSQL. 3. (2015 ESAF ESAF Gestão e Desenvolvimento de Sistemas) Em relação a Big Data e NoSQL, é correto afirmar que a) os 3 Vs" principais do Big Data referem-se a Volume, Velocidade e Versatilidade de dados. b) na era do Big Data, as únicas estratégias eficientes para garantir a privacidade são consentimento individual, opção de exclusão e anonimização. c) o Hadoop, o mais conhecido e popular sistema para gestão de Big Data, foi criado pela IBM, a partir de sua ferramenta de Data Mining WEKA. d) o NoSQL é um sistema relacional, distribuído, em larga escala, muito eficaz na organização e análise de grande quantidade de dados. e) o Cassandra é um sistema de banco de dados baseado na abordagem NoSQL, originalmente criado pelo Facebook, no qual os dados são identificados por meio de uma chave. 4. (2016 INSTITUTO AOCP CASAN Analista de Sistema Desenvolvimento de Sistemas) Em relação à Big Data e NoSQL, é correto afirmar que a) são conceitos concorrentes, portanto não podem ser implementados juntos. b) são conceitos que se complementam e com características eficientes para trabalhar com pequenas quantidades de informações. www.acasadoconcurseiro.com.br 7
c) são duas ferramentas de empresas concorrentes. d) são conceitos que se complementam. e) os SGBDs Oracle e MySQL são implementações desses conceitos. 5. (2013 CESPE CNJ Analista Judiciário Análise de Sistemas) No que se refere ao desenvolvimento web de alto desempenho, julgue os itens subsequentes. A escalabilidade dos bancos de dados NoSQL é garantida pela ausência de um esquema (scheme free). 6. (2014 CESPE TJ-SE Analista Judiciário Banco de Dados) Acerca de bancos de dados semiestruturados e bancos de dados NOSQL, julgue os itens subsecutivos. Bancos de dados NOSQL orientados a documentos são apropriados para o armazenamento de dados semiestruturados. 7. (2014 CESPE TJ-SE Analista Judiciário Banco de Dados) Acerca de bancos de dados semiestruturados e bancos de dados NOSQL, julgue os itens subsecutivos. Devido à escalabilidade esperada para os bancos de dados NOSQL, a implementação desses bancos utiliza modelos de armazenamento de dados totalmente distintos dos utilizados em sistemas relacionais. 8. (2016 CESPE TCE-PA Auditor de Controle Externo Área Informática Analista de Segurança) Acerca de segurança de banco de dados e de desenvolvimento de software, julgue o item subsecutivo. Os bancos de dados NoSQL são imunes a ataques de injeção SQL. 9. (2013 CESPE CNJ Analista Judiciário Análise de Sistemas) No que se refere ao desenvolvimento web de alto desempenho, julgue os itens subsequentes. Uma característica de bancos de dados NoSQL é o suporte à replicação de dados. Entre as abordagens utilizadas para replicação, inclui-se a mestre-escravo. 8 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Hencke 10. (2013 CESPE CNJ Analista Judiciário Análise de Sistemas) No que se refere ao desenvolvimento web de alto desempenho, julgue os itens subsequentes. Apesar de implementarem tecnologias distintas, todos os bancos de dados NoSQL apresentam em comum a implementação da tecnologia chave-valor. 11. (2016 CESPE FUNPRESP-JUD Analista Tecnologia da Informação) A respeito de banco de dados, julgue o próximo item. Os bancos de dados NoSQL não permitem a atualização de seus dados, por serem orientados a documentos e(ou) coleções. 12. (2017 FGV IBGE Analista Censitário Análise de Sistemas Desenvolvimento de Aplicações Web Mobile) Bancos de Dados NoSQL podem armazenar dados em diversos formatos não relacionais, como documentos compostos por pares de campo-e-valor (field-and-value), conforme a estrutura exemplificada a seguir. O Banco de Dados NoSQL utilizado para armazenar documentos compostos por pares campoe-valor, no formato BSON (JSON-like), é o: a) OpenLink Virtuoso; b) Neo4j; c) Apache HBase; d) MongoDB; e) Titan. 13. (2014 CESPE TJ-SE Analista Judiciário Banco de Dados) Acerca de bancos de dados semiestruturados e bancos de dados NOSQL, julgue os itens subsecutivos. Para garantir a eficiência das consultas a bancos de dados semiestruturados, é fundamental a adoção de técnica de indexação que leve em consideração, além das informações, as propriedades estruturais dos dados. www.acasadoconcurseiro.com.br 9
14. (2017 FGV IBGE Analista Censitário Análise de Sistemas Desenvolvimento de Aplicações Web Mobile) Observe a figura a seguir que ilustra relações entre colegas e seus interesses. O tipo de Banco de Dados NoSQL, não relacional, que armazena tais informações, utilizando estruturas de vértices e arestas, com propriedades associadas, é o: a) Colunar; b) Documento; c) Grafo; d) Chave-valor; e) Tabular. 15. (2017 CESPE TRT 7ª Região (CE) Técnico Judiciário Tecnologia da Informação) No que diz respeito a banco de dados, assinale a opção correta. a) A notação CrowsFoot é utilizada para representar a cardinalidade dos relacionamentos entre as entidades de um diagrama. b) Uma tabela encontra-se na terceira forma normal (3FN) quando são eliminados os eventuais relacionamentos ternários existentes. c) A chave primária é a base da restrição de integridade referencial, pois estabelece os padrões de valores para o seu conteúdo. d) O termo NoSQL refere-se a bancos de dados que são acessados sem utilização de SQL. 16. (2016 CESPE FUNPRESP-JUD Analista Tecnologia da Informação) Julgue o item subsecutivo, referente às tecnologias de bancos de dados. Em um banco de dados NoSQL orientado a documentos, a inexistência de um esquema impossibilita a definição de índices. 17. (2016 CESPE FUNPRESP-EXE Especialista Tecnologia da Informação) Com relação à forma como os dados são armazenados e manipulados no desenvolvimento de aplicações, julgue o item a seguir. Em um banco de dados NoSQL do tipo grafo, cada arco é definido por um identificador único e expresso como um par chave/valor. 10 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Hencke 18. (2016 FGV IBGE Analista Análise de Sistemas Desenvolvimento de Aplicações Web Mobile) Considere as seguintes características de um projeto de banco de dados. I O modelo de dados é conhecido a priori e é estável; II A integridade dos dados deve ser rigorosamente mantida; III Velocidade e escalabilidade são preponderantes. Dessas características, o emprego de bancos de dados NoSQL é favorecido somente por: a) I; b) I e II; c) II; d) II e III; e) III. 19. (2015 FGV TJ-PI Analista Judiciário Analista de Sistemas / Banco de Dados) Bancos de dados conhecidos como NoSQL podem ser particionados em diferentes servidores, o que introduz o problema de processar consultas que envolvem múltiplos nós de processamento. Um modelo usualmente empregado nessas circunstâncias é conhecido como: a) CAP Theorem; b) Map/Reduce; c) Hash tables; d) Clustered columns; e) Data Thread. 20. (2015 FGV TJ-BA Técnico Judiciário Tecnologia da Informação) Analise as afirmativas a respeito da classe de gerenciadores de bancos de dados, surgida em anos recentes, conhecida como NoSQL. I Mesmo sem suportar tabelas relacionais, baseiam-se em esquemas de dados previamente definidos; II Suas estruturas não permitem o uso de linguagens do tipo do SQL para recuperação de dados; III Garantem operações com as propriedades conhecidas pela sigla ACID; IV Privilegiam a rapidez de acesso e a disponibilidade dos dados em detrimento das regras de consistência das transações. O número de afirmativas corretas é: a) uma; b) duas; c) três; d) quatro; e) cinco. www.acasadoconcurseiro.com.br 11
Gabarito: 1. A 2. C 3. E 4. D 5. Errado 6. Certo 7. Errado 8. Errado 9. Certo 10. Errado 11. Errado 12. D 13. Certo 14. C 15. A 16. Errado 17. Errado 18. E 19. B 20. A 12 www.acasadoconcurseiro.com.br