Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
ENUNCIADO DA QUESTÃO ............................................................................................................ 2
TEORIA – O QUE VOCÊ PRECISA SABER PARA RESPONDER ......................................................... 3
RESOLUÇÃO DA QUESTÃO............................................................................................................. 7
PROVA - CEBRASPE ...................................................................................................................... 10
PADRÃO DE RESPOSTA - CEBRASPE ............................................................................................ 12
Página 1
LGR CURSOS NOSQL
ENUNCIADO DA QUESTÃO
1 Defina banco de dados não relacional (NoSQL) e cite duas vantagens desse modelo sobre
o modelo relacional.
[valor: 3,40 pontos]
Página 2
LGR CURSOS NOSQL
O surgimento do NoSQL (NotOnlySQL) surge nesse contexto de busca por bancos de dados
mais eficientes em:
☛ manipulação dados semiestruturados e não estruturados.
☛ armazenamento distribuído de dados (clusters).
Segundo os autores:
“O termo NOSQL é geralmente interpretado com Not Only SQL – em vez de NO to SQL – e tem por finalidade
transmitir a ideia de que muitas aplicações precisam de sistemas diferentes de gerenciamento de dados. A maioria
dos sistemas NOSQL são bancos de dados distribuídos ou sistemas de armazenamento distribuído, com foco no
armazenamento de dados semiestruturados, alto desempenho, disponibilidade, replicação de dados e escalabilidade,
ao contrário da ênfase em consistência imediata de dados, linguagens de consulta poderosas e armazenamento de
dados estruturados.”
“um sistema SQL relacional estruturado pode não ser apropriado porque (1) os sistemas SQL oferecem muitos
serviços (linguagem de consulta poderosa, controle de concorrência etc.) de que essa aplicação pode não necessitar; e
(2) um modelo de dados estruturados, como o modelo relacional tradicional, pode ser muito restritivo. Embora os
sistemas relacionais mais recentes tenham opções de modelagem objeto-relacional mais complexas, eles ainda exigem
esquemas, que não são exigidos por muitos dos sistemas NOSQL.”
Página 3
LGR CURSOS NOSQL
Portanto:
☛ Bancos de dados não relacionais são adequados para tratar dados mistos/variados, onde
se misturam tabelas, imagens e mapas, por exemplo, que não poderão ser tabulados em
colunas e linhas de tabela.
Página 4
LGR CURSOS NOSQL
➯ Escalabilidade horizontal
(expansão com adição de mais nós)
➯ Modelos de replicação
(mestre-escravo e mestre-mestre)
➯ Sharding de arquivos
(particionamento horizontal – não armazenar arquivo inteiro em um nó)
➯ Versionamento
“alguns sistemas NOSQL fornecem armazenamento de múltiplas versões dos itens de dados, com os rótulos de tempo
(timestamps) de quando foi criada a versão dos dados.”
Página 5
LGR CURSOS NOSQL
A categorização mais comum dos sistemas NOSQL lista quatro principais categorias:
➯ Documentos
➯ Chave-valor
➯ Grafos
➯ Coluna
Sistemas NOSQL baseados em documentos: estes sistemas armazenam dados na forma de documentos usando
formatos conhecidos como JSON (JavaScript Object Notation). Os documentos são acessíveis por meio de seu ID de
documento, mas também podem ser acessados rapidamente usando outros índices.
Armazenamentos de chave-valor do NOSQL: estes sistemas possuem um modelo de dados simples, com base
no acesso rápido pela chave ao valor associado à chave; o valor pode ser um registro, um objeto, um documento ou
até mesmo ter uma estrutura de dados mais complexa.
Sistemas NOSQL baseados em coluna ou em largura de coluna: estes sistemas particionam uma tabela por
coluna em famílias de colunas (uma forma de particionamento vertical), em que cada família de colunas é
armazenada em seus próprios arquivos. Eles também permitem o versionamento dos valores de dados.
Sistemas NOSQL baseados em grafos: os dados são representados como grafos e os nós relacionados podem ser
encontrados percorrendo suas arestas por meio de expressões de caminho.
Modelos relacionais
➯ Diferença entre o modelo relacional e as estruturas de dados na memória
(incompatibilidade de impedância)
➯ Rigidez do esquema
➯ Apenas dados estruturados
Crescimento dos sistemas web > mais recursos computacionais > escalabilidade horizontal
➯ sistemas distribuídos > mais resiliente / alta confiabilidade / disponibilidade
➯ Escalabilidade horizontal
➯ Flexibilidade (free schema)
➯ Dados não estruturados e semi-estruturados
Página 6
LGR CURSOS NOSQL
RESOLUÇÃO DA QUESTÃO
Vamos utilizar esses itens como roteiro da resposta, mas antes de continuar vamos tentar
detalhar um pouco mais nosso provável padrão de respostas realizando o passo 2.
Passo 2. Brainstorming. Quais palavras chaves você acredita que poderiam estar presentes
no padrão de respostas.
Página 7
LGR CURSOS NOSQL
Página 8
LGR CURSOS NOSQL
Página 9
||408_DGP_PF_DISC004_01|| CESPE | CEBRASPE – DGP/PF – Aplicação: 2018
PROVA DISCURSIVA
• Nesta prova, faça o que se pede, usando, caso deseje, o espaço para rascunho indicado no presente caderno. Em seguida, transcreva
o texto para a FOLHA DE TEXTO DEFINITIVO DA PROVA DISCURSIVA, no local apropriado, pois não será avaliado
fragmento de texto escrito em local indevido.
• Qualquer fragmento de texto além da extensão máxima de linhas disponibilizadas será desconsiderado.
• Na Folha de Texto Definitivo, a presença de qualquer marca identificadora no espaço destinado à transcrição do texto definitivo
acarretará a anulação da sua prova discursiva.
• Ao domínio do conteúdo serão atribuídos até 13,00 pontos, dos quais até 0,60 ponto será atribuído ao quesito apresentação
(legibilidade, respeito às margens e indicação de parágrafos) e estrutura textual (organização das ideias em texto estruturado).
Desde 2014, a força-tarefa da Operação Lava Jato coletou um volume impressionante de dados. São
ao menos 1,2 milhão de gigabaites, retirados de computadores e telefones celulares de empresas e pessoas
sob investigação. Seriam necessários 300 mil computadores com memória básica de 4 gigabaites para
arquivar tudo o que já foi coletado. Para processar essa imensidão de dados, a Polícia Federal teve de
inserir-se na era do big data, potencializar suas ferramentas de trabalho e criar métodos próprios para
garantir a análise do conteúdo. O objetivo é desenvolver mecanismos que possam acelerar o combate à
corrupção, às fraudes e aos crimes cibernéticos. Isso é possível porque os softwares de última geração não
apenas compreendem significados de conteúdo dentro dos documentos como também fazem correlações,
sendo possível analisar milhares de páginas e estabelecer conexões automaticamente.
A crescente popularização das redes sociais, a produção massiva de conteúdo dos dispositivos
móveis, o aumento contínuo do número de pessoas conectadas e o fato de 80% dos dados hoje gerados
serem não estruturados fazem que o processo de armazenamento de dados com o objetivo de utilizá-los para
fins analíticos comece a esbarrar nas questões de escalabilidade e de custos de manutenção desses dados.
Considerando que os fragmentos de texto precedentes têm caráter unicamente motivador, redija um texto dissertativo que atenda,
de forma objetiva e devidamente fundamentada, ao que se pede a seguir.
1 Defina banco de dados não relacional (NoSQL) e cite duas vantagens desse modelo sobre o modelo relacional.
[valor: 3,40 pontos]
2 Discorra sobre três modelos de gerenciamento de dados NoSQL. [valor: 6,00 pontos]
3 Comente sobre a vulnerabilidade dos bancos NoSQL a ataques de injeção NoSQL. [valor: 3,00 pontos]
||408_DGP_PF_DISC004_01|| CESPE | CEBRASPE – DGP/PF – Aplicação: 2018
RASCUNHO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CONCURSO PÚBLICO
DIRETORIA DE GESTÃO DE PESSOAL (DGP)
POLÍCIA FEDERAL (PF)
PROVA DISCURSIVA
Aplicação: 16/9/2018
1 Conceito
Os bancos de dados não relacionais (NoSQL) não utilizam o esquema tradicional de tabela de linhas e colunas; em vez
disso, eles usam um modelo de armazenamento otimizado para desempenho escalável e modelos de dados sem esquema. Os
bancos NoSQL usam diversos modelos de dados, como chave/valor simples, colunares, documentos, gráficos e armazenamento
de pares chave-valor na memória.
Entre as vantagens desse modelo sobre o relacional estão: escalabilidade horizontal, flexibilidade na manipulação de
dados não estruturados, melhor desempenho, seguem as propriedades BASE (Disponibilidade Básica, Estado Flexível,
Consistência Eventual), não implementam as propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade) de
forma rigorosa, fato de serem projetados para arquiteturas distribuídas, custos reduzidos, e fato de serem ideais para aplicações
de big data.
Modelo chave/valor (key/value): sistemas distribuídos nessa categoria, também conhecidos como tabelas de hash distribuídas,
armazenam objetos indexados por chaves e possibilitam a busca por esses objetos a partir de suas chaves. Alguns bancos que
utilizam esse padrão são: DynamoDb, Couchbase, Riak, Azure Table Storage, Redis, Tokyo Cabinet e Berkeley DB.
Modelo orientado a documentos: os documentos dos bancos dessa categoria são coleções de atributos e valores, nas quais um
atributo pode ser multivalorado. Em geral, os bancos de dados orientados a documento não possuem esquema, ou seja, os
documentos armazenados não precisam possuir estrutura em comum. Os dados nos campos de um documento podem ser
codificados de várias maneiras, incluindo XML, YAML, JSON, BSON ou até mesmo armazenados como texto sem formatação.
Alguns bancos que utilizam esse padrão são: MongoDb, CouchDB e RavenDb.
Modelo orientado a grafos: diferentemente de outros tipos de bancos de dados NoSQL, esse está diretamente relacionado a um
modelo de dados estabelecido, o modelo de grafos. A ideia desse modelo é representar os dados e(ou) o esquema dos dados
como grafos dirigidos, ou como estruturas que generalizem a noção de grafos. O modelo de grafos é mais interessante que outros
quando informações sobre a interconectividade ou a topologia dos dados são mais importantes ou tão importantes quanto os
dados propriamente ditos. O modelo orientado a grafos possui três componentes básicos: os nós (são os vértices do grafo), os
relacionamentos (são as arestas) e as propriedades (ou atributos) dos nós e relacionamentos. Um exemplo da utilidade desse tipo
de banco é resolver perguntas como: “Com quais pessoas e por quanto tempo um cliente falou nos últimos 7 dias?” Alguns
bancos que utilizam esse padrão: Neo4J, Infinite Graph, InforGrid e HyperGraphDB.
Modelo orientado a colunas: um armazenamento de dados de colunas ou de família de colunas organiza os dados em colunas
e linhas. É possível pensar em um armazenamento de dados de família de colunas como dados contidos em tabela com linhas e
colunas, mas as colunas são divididas em grupos conhecidos como famílias de colunas. Cada família de colunas contém um
conjunto de colunas que estão logicamente relacionadas e geralmente são recuperadas ou manipuladas como uma unidade. Outros
dados acessados separadamente podem ser armazenados em famílias de colunas separadas.
Modelo orientado a série temporal: os dados de série temporal são um conjunto de valores organizados por tempo e um
armazenamento de dados de série temporal é otimizado para esse tipo de dados. Os armazenamentos de dados de série temporal
devem dar suporte a um número muito alto de gravações, pois geralmente coletam grandes quantidades de dados, em tempo real,
de uma grande variedade de fontes.
Modelo orientado a objetos: tem na sua essência o objetivo de estruturar as informações em objetos, podendo ser acessados
por métodos específicos, os quais são impostos pela classe na qual o objeto está associado. A criação desse modelo tem sido uma
tendência ao se trabalhar com dados mais complexos, por isso é bastante usado nas áreas científicas, espaciais e de
telecomunicações.
Os bancos de dados NoSQL possuem menos restrições de consistência que os bancos SQL tradicionais. Por
demandarem menos restrições e verificações de consistência, os bancos de dados NoSQL oferecem melhor desempenho e maior
rendimento. No entanto, Os bancos de dados NoSQL são potencialmente vulneráveis a ataques de injeção, mesmo que não
estejam usando a sintaxe tradicional do SQL.
Tipos de ataques:
- ataques NoSQL Injection podem ser utilizados através de linguagens procedurais, e não apenas linguagens
declarativas;
- falhas de injeção ocorrem quando uma aplicação envia dados não-confiáveis para um interpretador e estão muito
predominantes, particularmente em códigos legados.
- ataques NoSQL Injection podem ter como alvo as convenções de dados semiestruturados usadas nos bancos NoSQL,
como, por exemplo, arquivos JSON, XML, LINQ etc.
- ataques NoSQL Injection podem ser feitos nas linguagens de programação usadas nos bancos NoSQL, como, por
exemplo, Javascript.
Possíveis medidas de prevenção/mitigação contra ataques de injeção NoSQL:
- validação/sanitização de entrada dos dados;
- uso de listas brancas (whitelists);
- uso de APIs seguras;
- higienização de dados.
Quesito 2.1
0 - Não apresenta definição de banco de dados não relacional (NoSQL) e vantagens desse modelo sobre o modelo relacional.
1 – Apresenta definição de banco de dados não relacional (NoSQL) ou uma vantagem.
2 – Apresenta definição de banco de dados não relacional (NoSQL) e uma vantagem ou duas vantagens.
3 - Apresenta definição de banco de dados não relacional (NoSQL) e duas vantagens.
Quesito 2.2
0 – Não apresenta nenhum modelo de gerenciamento de dados.
1 – Apresenta um modelo de gerenciamento de dados.
2 – Apresenta dois modelos de gerenciamento de dados.
3 - Apresenta três modelos de gerenciamento de dados.
Quesito 2.3
0 – Não menciona que os bancos de dados NoSQL possuem menos consistência que os bancos SQL nem que são potencialmente
vulneráveis a ataques de injeção NoSQL.
1 – Menciona que os bancos de dados NoSQL possuem menos consistência que os bancos SQL ou que são potencialmente
vulneráveis a ataques de injeção NoSQL.
2 – Menciona que os bancos de dados NoSQL possuem menos consistência que os bancos SQL e que são potencialmente
vulneráveis a ataques de injeção NoSQL e lista algum exemplo de ataque de injeção ou algum tipo de prevenção contra este tipo
de ataque.