`
linguagem` `
topico` `
nome`NoSql`
` `
titulo`NoSql`
` `
descritor`chave-valor documento familia-colunas grafos `
` `
lead`Not Only SQL (não apenas Sql)
Conjunto de tecnologias de armazenamento de dados`
` `
melhorar`Melhorar`
` `
referencia`NoSql essencial,
`
` `
origem`NoSql.xml`
` `
` `
topico` `
titulo` Contexto`
` `
desc`
O principal valor do banco de dados é a capacidade de armazenar grandes volumes persistentes (pertencem a um conjunto de dados)

A arquitetura do computador possui 2 áreas de memória: principal (rápida e volatil) e secundária (mais lenta).
A secundária pode ser organizada de várias formas:
  • para aplicativos de produtividade (ex. processamento de texto, wize,.. que consiste de uma arquivo no siatema operacional.
  • para aplicativos corporativos o armazanamento secundário é um banco de dados. Obtem pequenas partes das informações rápida e facil.
Transação é uma unidade de dados e operações que controla todo acesso a dados.
Controla bem a concorrência (ex: tentar reservar um quarto que acabou de ser reservado) e ao tratamento de erros, podendo desfaze-la e voltar ao estaado anterior.

Esquema implicito é um conjunto de suposições sôbre a estrutura de dados no código que os manipule. É usado na falta de uniformidade dos dados.

Cenários :
  • Produtividade de programadores
  • Desempenho do acesso aos dados.
`
` `
` `
topico` `
titulo` Motivação`
` `
desc`
  • Acesso a dados cujo o tamanho e desempenho demanda de conjuntos de dados (cluster).
  • Melhora a produtividade de desenvolvimento de aplicativos utilizando um estilo de integração de dados mais conveniente
`
` `
` `
topico` `
titulo`Caracteristicas`
` `
desc`
  • tem uma boa execução com cluster.
  • usa código aberto.
  • Não utiliza modelo relacional.
  • não tem visões (mecanismo para esconder a origem dos dados)
  • podem ter consultas pré-computadas, posta em cache (mecanismo de mapeamento reduzido (map reduce)),
`
` `
` `
topico` `
titulo`Resultado`
` `
desc`Pode armazenar os dados com estruturas de dados diferentes (Persistência poligrota).
`
` `
` `
topico` `
titulo`Ponto chave`
` `
desc`Encapsulamento de banco de dados em aplicativo e integração por meio de serviços.
`
` `
` `
topico` `
titulo`Fator de mudança`
` `
desc`
  • Necessidade de suporte a grande volumes de dados por meio de execução de cluster (processamento de conjunto de dados
  • Registros pequenos com muitas interneconexões (estrutura de dados de nodos conectados por arestas)`
` `
` `
topico` `
titulo`Modelo da dados`
` `
desc`
Seja o exemplo:
     Modelo ER

Cada solução possui um modelo de dados diferente.
Quatro categorias:
  • chave-valor
  • documento
  • familia de colunas
  • grafos`
` `
` `
topico` `
titulo`Tuplas`
` `
desc`
São linhas ou seja elementos de um conjunto. Cada linha é um conjunto de dados.
`
` `
` `
topico` `
titulo`Agregado`
` `
desc`
  • Conjuntos relacionados que desejamos tratar como uma unidade.
  • Permitem a combinação de linhas de qq tabela em uma única transação.
  • Tais transações são chamadas de ACID: atômicas, Consistente, Isoladas e Duraveis.
  • Agregados formam os limites de operações ACID com o banco de dados.
  • Muitas linhas espalhadas por tavelas são atualizadas em uma operação.
  • Os agregados facilitam, para BD, o gerenciamento de dados em clusters.
  • BD orientados a agrupamentos funcionam melhor do que a maioria da interação com os dados é realizada no mesmo agregado.
  • Tornam o relacionamento entre agregados mais dificies de lidar do que intra-agregados.
  • A alteração de limites de um agregado é complexa (migração de esquemas).
`
` `
` `
topico` `
titulo`Exemplo BD relacional (notação uml)`
` `
desc`
Modelo de dados:




Cliente
       
Id - 1
Nome - Martin
Pedido                   

Id-99
IdCliente - 1
IdEndCobranca- 77

Produto
Id -27
Nome- NoSql
End Cobranca
Id - 55
IdCliente - 1
EndCobranca - 77

Item Pedido
PagamentoPedido
Id - 100
IdPedido- 99
IdProduto- 27
Preco - 33,45
Id - 33
IdPaganebto - 99
NumCartao - 1000.1000
TxnId - ipc

`
` `
` `
topico` `
titulo`Exemplo BD agregado (notação uml e json)`
` `
desc`
Modelo de dados: Separando dois agregados Cliente e Pedido. Trata pedido a pedido


JSON: notação (forma de escrever) objetos em javascript.  Sintaxe: {"ObjetoPai":{"ObjetoFilho": "valor"}}
// em Clientes
{ "id":1,
   "nome":"Martin",
    "EndCobranca"": [{"cidade":"RJ"}]


//em Pedidos
[
{"id":99,
  "ÏdCliente":1,
  "ItemPedido":[
                          {"IdProduto":27,
                            "preco": 33.45
                            "NomeProduto":NoSql
                           }
                         ]
   "EndEnvio":[{"cidade":"RJ"}]
   "Pedido":[
                    {"id": 99,
                      "IdCliente":1,
                      "ItemPedido":[
                                            {"IdProduto":27,
                                              "preco":33.45,
                                               "NomeProduto":"NoSql"
                                             }
                                             ]
   "EndEnvio":[{"cidade":"RJ"}]
   "PagamemtoPedidido"[
                                        {"NumCard":"1000-1000",
                                          "Txn"ipc"'
                                          "EndCobranca":{"cidade: ": "RJ"
                                        }
}
]
`
` `
` `

topico` `
titulo`Exemplo BD agregado (incorporando Cliente e Pedido em cliente)`
` `
desc`
Modelo de dados: Trata todos os pedidos de um cliente


JSON:
// em Clientes
{ "id":1,
   "nome":"Martin",
    "EndCobranca"": [{"cidade":"RJ"}]


//em Pedidos
[
{"id":99,
  "ÏdCliente":1,
  "ItemPedido":[
                          {"IdProduto":27,
                            "preco": 33.45
                            "NomeProduto":NoSql
                           }
                         ]
   "EndEnvio":[{"cidade":"RJ"}]
   "Pedido":[
                    {"id": 99,
                      "IdCliente":1,
                      "ItemPedido":[
                                            {"IdProduto":27,
                                              "preco":33.45,
                                               "NomeProduto":"NoSql"
                                             }
                                             ]
   "EndEnvio":[{"cidade":"RJ"}]
   "PagamemtoPedidido"[
                                        {"NumCard":"1000-1000",
                                          "Txn"ipc"'
                                          "EndCobranca":{"cidade: ": "RJ"
                                        }
}
]
`
` `
` `
topico` `
titulo`Modelos de dados chave-valor, documentos e familia de coluna`
` `
desc`
Podem ser vistos como como formas de banco de dados orientados a agregados.

`
` `
` `

topico` `
titulo`Bancos de dados de grafos`
` `
desc`

  • Não são habituais no contexto de NoSQL.
  • Registros pequenos com interconexões complexas.
  • Nodos conectados por arestas (arcos).
  • Armazena dados em nodos e nas arestas

  • Operações envolvendo o grafo inteiro não são eficientes.

Aplicações: redes sociais, preferência de produtos ou regras de acertabilidade.

BD's: ckDB, Neo4J, infnite graph
`
` `
` `
topico` `
titulo`Implementação`
` `
desc`
  • Preocupações para implementação:
    • Licenças
    • Suporte
    • Auditorias
    • Segurança
    • driver's
    • Atualizações
    • Ferramentas
    • Treinamento
  • É essencial testar suas espectativas sôbre a produtividade do programador e/ou desempemho antes de decidir a tecnologia NoSQL.
  • O encapsulamento de serviços facilita a alteração nas tecnologias de armazenamento de dados qdo as necessidades e tecnologias evoluirem. Separa parte do aplicativos em serviços.

  • A maioria dos aplicativos especialmente os não estartégicos deve continuar com tecnologia relacional até que o ecosistema NoSQL amadureça mais.
`
` `
` `
`