NoSQL Essencial

Um Guia Conciso para o Mundo Emergente da Persistência Poliglota

NoSQL Essencial Indisponível
× NoSQL Essencial

NoSQL Essencial

Compartilhar

Autores: Pramod J. Sadalage
Martin Fowler

ISBN impresso: 978-85-7522-338-3
ISBN ebook: 978-85-7522-785-5
Ano: 2013
Páginas: 216
Preço impresso: R$ 73,00 O ebook deste livro está disponível na Amazon.

19 opiniões | Opine sobre este livro

Descrição do livro

A necessidade de se lidar com volumes cada vez maiores de dados é um fator que motiva adotar uma nova classe de bancos de dados não relacionais, NoSQL. Os defensores dos bancos de dados NoSQL alegam que estes podem ser utilizados para criar sistemas com melhor desempenho, escalabilidade e mais fáceis de programar. O livro NoSQL Essencial é uma introdução concisa, porém completa, a essa tecnologia emergente em rápida ascensão.

Pramod J. Sadalage e Martin Fowler explicam como bancos de dados NoSQL funcionam e as formas pelas quais podem ser uma alternativa superior a um sistema tradicional de gerenciamento de banco de dados relacional. Os autores apresentam um guia rápido sobre os conceitos que você precisa conhecer para avaliar se os bancos de dados NoSQL são apropriados a suas necessidades e, se forem, quais tecnologias você deve explorar mais detalhadamente.

A primeira parte do livro concentra-se em conceitos básicos, incluindo modelos de dados sem esquema, agregados, novos modelos de distribuição, teorema CAP e map-reduce. Na segunda parte, os autores exploram questões de arquitetura e projeto associadas à implementação de NoSQL. Também apresentam casos de uso reais, que mostram os bancos de dados NoSQL em ação, e fornecem exemplos representativos utilizando Riak, MongoDB, Cassandra e Neo4j.

Além disso, ao trazer o trabalho pioneiro de Pramod Sadalage, NoSQL Essencial mostra como implementar projetos de forma evolutiva com migração de esquemas: uma técnica fundamental a ser utilizada em bancos de dados NoSQL. O livro termina descrevendo como o NoSQL se estabelece em uma nova era de persistência poliglota, em que diversos mundos de armazenamento de dados coexistem e os arquitetos podem escolher a tecnologia mais otimizada para cada tipo de acesso a dados.

Os tópicos examinados incluem:

- Avaliando para quais aplicações corporativas o NoSQL é (e não é) apropriado.

- Entendendo os ajustes na arquitetura associados à instalação de NoSQL.

- Utilizando o NoSQL para simplificar o desenvolvimento, evitando o problema do mapeamento de dados entre estruturas de dados na memória e sistemas de bancos de dados relacionais.

- Comparando os principais produtos NoSQL atuais.

- Explorando linguagens de consulta: CQL e Cypher.

- Gerenciando desempenho, confiabilidade, disponibilidade e recuperação.

- Utilizando o NoSQL em ambientes de desenvolvimento ágil.

- Aplicando o NoSQL em pesquisa/recuperação, gerenciamento de metadados, análise de texto, redes sociais, inteligência de negócio e serviços financeiros.

- Clusterizando bancos de dados NoSQL para lidar com problemas relacionados a grandes quantidades de dados com maior eficácia em relação aos custos.

- Como o teorema CAP se aplica ao raciocínio sobre consistência, disponibilidade e latência.

- Como o padrão map-reduce permite que as computações sejam paralelizadas em um cluster.

- Por que o NoSQL é um termo sem significado definido.

Ver menos ▲

Sumário

  • Prefácio
  • Parte I Compreender
    • Por que NoSQL?
    • 1.1 O valor dos bancos de dados relacionais
      • 1.1.1 Chegando aos dados persistentes
      • 1.1.2 Concorrência
      • 1.1.3 Integração
      • 1.1.4 Um modelo padrão (na sua maior parte)
    • 1.2 Incompatibilidade de impedância
    • 1.3 Bancos de dados de integração e de aplicativos
    • 1.4 Ataque dos clusters
    • 1.5 Surgimento do NoSQL
    • 1.6 Pontos chave
      • Modelos de dados agregados
    • 2.1 Agregados
      • 2.1.1 Exemplo de relações e agregados
      • 2.1.2 Consequências da orientação a agregados
    • 2.2 Modelos de dados de chave-valor e de documentos
    • 2.3 Armazenamentos de famílias de colunas
    • 2.4 Resumindo os bancos de dados orientados a agregados
    • 2.5 Leituras complementares
    • 2.6 Pontos chave
      • Mais detalhes sobre modelos de dados
    • 3.1 Relacionamentos
    • 3.2 Bancos de dados de grafos
    • 3.3 Bancos de dados sem esquema
    • 3.4 Visões materializadas (Materialized views)
    • 3.5 Modelando para o acesso aos dados
    • 3.6 Pontos chave
      • Modelos de distribuição
    • 4.1 Um único servidor
    • 4.2 Fragmentação
    • 4.3 Replicação mestre-escravo
    • 4.4 Replicação ponto a ponto (p2p)
    • 4.5 Combinando fragmentação e replicação
    • 4.6 Pontos chave
      • Consistência
    • 5.1 Consistência de atualização
    • 5.2 Consistência de leitura
    • 5.3 Relaxando a consistência
      • 5.3.1 Teorema CAP
    • 5.4 Relaxando a durabilidade
    • 5.5 Quóruns
    • 5.6 Leituras complementares
    • 5.7 Pontos chave
      • Marcadores de versões
    • 6.1 Transações comerciais e de sistema
    • 6.2 Marcadores de versões em múltiplos nodos
    • 6.3 Pontos chave
      • Map-Reduce (Mapear-Reduzir)
    • 7.1 Map-reduce básico
    • 7.2 Particionando e combinando
    • 7.3 Criando cálculos map-reduce
      • 7.3.1 Um exemplo de map-reduce em duas etapas
      • 7.3.2 Map-reduce incremental
    • 7.4 Leituras complementares
    • 7.5 Pontos chave
  • Parte II Implementar
    • Bancos de dados de chave-valor
    • 8.1 Depósitos de chave-valor
    • 8.2 Recursos dos depósitos de chave-valor
      • 8.2.1 Consistência
      • 8.2.2 Transações
      • 8.2.3 Recursos de consultas
      • 8.2.4 Estrutura de dados
      • 8.2.5 Escalabilidade
    • 8.3 Casos apropriados para uso
      • 8.3.1 Armazenando informações de sessão
      • 8.3.2 Perfis de usuários, preferências
      • 8.3.3 Dados de carrinhos de compras
    • 8.4 Quando não utilizar
      • 8.4.1 Relacionamentos entre dados
      • 8.4.2 Transações com múltiplas operações
      • 8.4.3 Consulta por dados
      • 8.4.4 Operações por conjuntos
        • Bancos de dados de documentos
    • 9.1 O que é um banco de dados de documentos?
    • 9.2 Características
      • 9.2.1 Consistência
      • 9.2.2 Transações
      • 9.2.3 Disponibilidade
      • 9.2.4 Recursos de consulta
      • 9.2.5 Escalabilidade
    • 9.3 Casos de uso apropriados
      • 9.3.1 Registro de eventos (log)
      • 9.3.3 Análises web ou em tempo real (analytics)
      • 9.3.4 Aplicativos de comércio eletrônico
    • 9.4 Quando não utilizar
      • 9.4.1 Transações complexas que abranjam diferentes operações
      • 9.4.2 Consultas em estruturas agregadas variáveis
        • Armazenamento em famílias de colunas
    • 10.1 O que é um depósito de dados de família de colunas?
    • 10.2 Características
      • 10.2.1 Consistência
      • 10.2.2 Transações
      • 10.2.3 Disponibilidade
      • 10.2.4 Recursos de consulta
      • 10.2.5 Escalabilidade
    • 10.3 Casos de uso apropriados
      • 10.3.1 Registro de eventos (log)
      • 10.3.3 Contadores
      • 10.3.4 Expirando o uso
    • 10.4 Quando não utilizar
      • Bancos de dados de grafos
    • 11.1 O que é um banco de dados de grafos?
    • 11.2 Recursos
      • 11.2.1 Consistência
      • 11.2.2 Transações
      • 11.2.3 Disponibilidade
      • 11.2.4 Recursos de consulta
      • 11.2.5 Escalabilidade
    • 11.3 Casos de uso apropriados
      • 11.3.1 Dados conectados
      • 11.3.2 Roteamento, envio e serviços baseados em localização
      • 11.3.3 Mecanismos de recomendação
    • 11.4 Quando não utilizar
      • Migrações de esquema
    • 12.1 Alterações no esquema
    • 12.2 Alterações de esquema em SGBDRs
      • 12.2.1 Migrações para projetos sem restrições anteriores
      • 12.2.2 Migrações em projetos legados
    • 12.3 Alterações no esquema em um armazenamento de dados NoSQL
      • 12.3.1 Migração incremental
      • 12.3.2 Migrações em bancos de dados de grafos
      • 12.3.3 Alterando a estrutura do agregado
    • 12.4 Leituras complementares
    • 12.5 Pontos chave
      • Persistência poliglota
    • 13.1 Necessidades diferentes de armazenamento de dados
    • 13.2 Uso de armazenamentos de dados poliglotas
    • 13.3 Uso de serviços em vez do acesso direto ao depósitos de dados
    • 13.4 Expandindo para melhorar a funcionalidade
    • 13.5 Escolhendo a tecnologia certa
    • 13.6 Preocupações empresariais com a persistência poliglota
    • 13.7 Complexidade de instalação
    • 13.8 Pontos chave
      • Além do NoSQL
    • 14.1 Sistemas de arquivos
    • 14.2 Event sourcing
    • 14.3 Imagem de memória
    • 14.4 Controle de versões
    • 14.5 Bancos de dados XML
    • 14.6 Bancos de dados de objetos
    • 14.7 Ponto chave
      • Escolhendo o seu banco de dados
    • 15.1 Produtividade do programador
    • 15.2 Desempenho no acesso aos dados
    • 15.3 Permanecendo com o padrão
    • 15.4 Restringindo suas apostas
    • 15.5 Pontos chave
    • 15.6 Considerações finais
Ver sumário completo ▼

Sobre os autores

Pramod J. Sadalage

Pramod J. Sadalage, consultor principal na ThoughtWorks, tem a função rara de conectar as divisões entre profissionais de bancos de dados e desenvolvedores de aplicativos. Ele dá consultoria regularmente a clientes que têm necessidades especialmente desafiadoras de dados que requeiram novas tecnologias e técnicas. Ele desenvolveu técnicas pioneiras… Ver perfil completo ▶

Martin Fowler

MARTIN FOWLER é cientista-líder na ThoughtWorks. Ele descreve a si mesmo como “autor, palestrante, consultor e alguém que sempre fala muito sobre desenvolvimento de software”. Fowler tem como foco o design de softwares corporativos: explora o que faz um design ser bom e quais são as práticas necessárias para criar um bom design. Site do autor:… Ver perfil completo ▶

Opinião dos leitores

Igor P

O autor faz neste livros inúmeros esclarecimentos e comparações do banco de dados NoSQL com o relacionado. Foi para mim de grande valia para ampliar conhecimento e aprofundar minha visão sobre persistência poliglota.

Suéllen R M

Ótimo livro! O foco dele é teórico, mas não possui linguagem complexa. Para quem está estudando sobre o tema em pós-graduação, vale muito a aquisição.

Jorge L C

O livro faz uma excelente abordagem sobre bancos de dados NoSQL. Recomendo.

Danilo R

Conhecer os diferentes SGBD´s NoSQL é essencial a todos os programadores que desejam fazer uso das soluções mais adequadas para os cenários que se deparam.

Ver todas ▼