Upload
fabio-theophilo
View
18
Download
2
Embed Size (px)
Citation preview
Introdução aos bancos não-relacionais com MongoDB
Unidev 1ª edição
Quem sou eu
• Estagiário na SecrelNet;
• Desenvolvedor há 8 anos;
• Membro preguiçoso de comunidades;
• Apaixonado pelo que faço;
Eu com Jon "Maddog" Hall, CTO da Linux International
Primeiro, vamos recapitular o que são bancos de dados relacionais
Bancos grandes demais se tornam dificeis de se
manter
Filosofia A.C.I.D
•Atomicity (Atômicidade)
•Consistency (Consistência)
• Isolation (Isolado)
•Durability (Durável)
* Bancos de dados precisam ser constantemente normalizados.
SQL (Structured Query Language)
• Criada pela IBM em 1974
• Usada por todos os bancos relacionais
• Realiza todos os tipos de operações em um banco de dados
• Consultas mal escritas podem acarretar em gargalo
Revisão feita, agora vamos ver como são os banco não-relacionais
Um pouco de historia....
• Termo NoSQL criado 1998 por Carlo Strozzi
• Carlo Stozzi considerava o SQL:
• Muito complexo
• Pouco portábil
• Limitado
• Com uma fraca usabilidade
• Criou a própria linguagem baseado em Operator-Stream Paradigm (Pipe)
Carlo StrozziUtilizava-se de recursos como AWK, Perl e Grep para se
realizar a busca
No começo do NoSQL..
As tabelas eram arquivos textos separados por tab
Uso de redirecionamento à esquerda para leitura dos dados
Um pouco de historia....
• Em 2004 foi lançado o BigTable pela Google. Seguido pelo Dynamo (Amazon) em 2007 e pelo Cassandra (Facebook) em 2008
• Em 2009 foi realizado o primeiro grande evento de bancos NoSQL em San Fracisco, patrocinado pela Last.FM com parceria com Facebook e Linkedin
• Também recebeu o nome de NoREL (Not Relational)
Programação 1º grande evento de NoSQL
Um pouco de historia....
Em 2008 usando MySQL (banco relacional) o Twitter ficou 84 horas offline ao decorrer do ano. Já em 2009 após migrar para Cassandra esse tempo caiu
para 23 horas e 45 minutos.
Fonte: http://bit.ly/1yZ0cEn (Computer World)
Fonte: http://bit.ly/1aZA0Or (InfoWorld)
Hoje existe uma variedade de bancos NoSQL
Agora vamos falarde coisa boa, vamos falar de
• Lançado em Fevereiro de 2009 pela 10gen (hoje Mongo Inc.)
• Escrito em C++
• Opensource (código-aberto)
• Surgiu da palavra homongous (gigantesco)
• Orientado à documentos
• Mais de 9 milhões de downloads desde seu lançamento
Quem utiliza?
Schemas
• Utilizasse de BSON (Binary JSON)
Exemplo de JSON
Beleza, beleza. Já entendi maaaaas....
Bancos Relacionais x MongoDB
• MongoDB não possui nenhum tipo de relacionamento entre seus documentos
• Segue o modelo BASE (Basically Available, Soft state, Eventual consistency):
• Disponível o tempo inteiro
• Disponível em estado leve
• Eventualmente consistente
• Facilmente escalonável
Motivo 1: Evita "Alter Tables"
• Documentos não precisam seguir ter os mesmos atributos
• Como se cada linha da tabela fosse "independente"
• É função no DBA garantir que essa liberdade não vire bagunça
Motivo 2: Auto-sharding
• Consiste em utilizar mais de uma máquina para rodar todo o Banco de Dados
• Processo trás uma série de vantagens:
• Otimiza o tempo das consultas
• Caso alguma das máquinas tenha problema
• MongoDB possui sistemas de sharding automático
Motivo 2: Auto-sharding
Motivo 3: Ótimo para Big Data
• O protocolo mais utilizado hoje por Web Services é o JSON
• Acaba evitando ORM (Object-Relational Mapping) em diversas situações
Motivo 4: Simples porém Robusto
• BSON Query relativamente simples
• Não há preocupação com relacionamentos
• Ideal para iniciantes em NoSQL
Iniciando no
Instalando o
Via linha de comando: (linhas de comando são legais)
Usuários de Linux baseados em Debian/Ubuntu:
Usuários de Linux baseados em RedHat/Fedora/CentOS:
Usuários de MacOSX:
Usuários de NPM (todos os Sistemas Operacionais) *Recomendado
Instalando o
Via linha de comando: (linhas de comando são legais)
Para usuários de Windows via Chocolatey:
Ou baixando diretamente do site xDhttps://www.mongodb.org/downloads
Instalando cliente gráfico
http://robomongo.org/
Inicializando o Mongo
1º passo: Inicialização do servidor do Mongo
2º passo:
* Para os fãs de terminal:
* Para os fãs de interface gráfica:
Abram o Robomongo
APIs para Mongo
•PyMongo (Python)
•Php_mongo (PHP)
•Mongo JDBC Driver (Java)
• Mongo Ruby Driver (Ruby)
• Mgo (Go)
Para outras linguagens consulte: http://api.mongodb.org/
Quem sabe faz ao vivo!
Agora é a hora....
Me sigam :D
https://github.com/Ziggoto
http://pt.slideshare.net/ziggoto