SlideShare uma empresa Scribd logo
noSQL com CouchDb
e PHP
theoziran@gmail.com
theoziran.com.br
Thursday, May 6, 2010
Quem sou eu?
• Theoziran Lima
• Analista de Sistemas formado pela
Faculdade iDEZ
• Atua como Analista e Desenvolvedor de
Sistemas na Acade Sistemas
• Membro da coordenação do PHP-PB
Thursday, May 6, 2010
Sumário
• O que é CouchDb?
• Bancos orientados a documentos
• Como funciona?
• Manipulação dos dados
• Opções de manipulação com PHP
• HelloWord (‘Twitter’) com PHP e
CouchDb
Thursday, May 6, 2010
O que é CouchDb?
• Em Abril de 2005, Damien Katz postou em
seu blog um novo engine database que
estava trabalhando
• O CouchDB foi escrito originalmente em
C++, mas em abril de 2008, o projeto foi
movido para a plataforma Erlang.
Thursday, May 6, 2010
O que é CouchDb?
• É uma banco de dados orientado
a documentos
• O acesso é feito a através
da API de JavaScript
Object Notation
(JSON) RESTful
Thursday, May 6, 2010
O que CouchDb não é?
• Um banco de dados relacional
• noSQL é sem SQL, beleza neh!?
• Um substitudo para os bancos relacionais
• Um banco orientado a objetos
Thursday, May 6, 2010
O que é CouchDb?
• Alta disponibilidade
• Confiabilidade
• Extremamente escalável
• É um projeto ‘top-level’ da Apache
Foundation
Thursday, May 6, 2010
CouchDb
• O CouchDb pode ser instalado na maioria
dos sistemas POSIX, incluindo Linux e
MacOS
• Não existe versão oficial para Windows
• Já existem servidores com CouchDb
disponíveis para uso (Amazon EC2)
Thursday, May 6, 2010
Um pouco de
‘orientação a
documentos’ ...
Thursday, May 6, 2010
Armazenamento em
documentos
• É o armazenamento de documentos
autocontidos:
• Não existe o conceito de tabelas,
relacionamentos e linhas
• Todos os dados estão nos documentos
• Os documentos são auto suficientes
• Os documentos podem ter anexos
Thursday, May 6, 2010
Cenário dos bancos
não relacionais
• A idéia não é subsituir os bancos
relacionais
• Alternativa para projetos onde ele é mais
adequado que os bancos relacionais:
• Wikis, blogs e sistemas de gerenciamento
de documentos.
Thursday, May 6, 2010
Como funciona?
• Possui mecanismo de armazenamento em
B-tree
• Fornece mecanismos para procurar, inserir
e editar documentos
• Utiliza MapReduce na recuperação dos
dados (Mapear/Reduzir)
Thursday, May 6, 2010
Trantamento de
concorrência
• Não há mecanismo de bloqueio
• MVCC (Multiversion Concurrency control)
• O cliente recebe a última versão do
documento
• Só é vista as alterações quando a
transação é completada
• É usado o mesmo mecanismos nos banco
de dados modernos (MySQL, Oracle...)
Thursday, May 6, 2010
Ferramentas
• CouchDb Utils
Thursday, May 6, 2010
API (JSON) RESTful
• API para manipulação dos dados
• A manipulação dos dados é baseada
em requisições HTTP
• Independente de linguagem
• (Até) Linguagens client-side podem
ser usadas
Thursday, May 6, 2010
API (JSON) RESTFul
• Quatro operações básicas para trabalhar
com documentos
• Create: HTTP PUT /db/id
• Create: HTTP POST /id
• Read: HTTP GET /db/id
• Update: HTTP PUT /db/id
• Delete: HTTP DELETE /db/id
Thursday, May 6, 2010
Manipulando dados
• curl -X GET http://localhost:5984/_all_dbs
• curl -X PUT http://localhost:5984/pessoa
• curl -X GET http://localhost:5984/_all_dbs
• curl -X POST http://localhost:5984/pessoa -
d '{"nome":"Theoziran Lima","idade":
21,"email":"theoziran@gmail.com"}'
Thursday, May 6, 2010
Requisições HTTP com
PHP
• cURL
• file_get_contents
• fsockopen
Thursday, May 6, 2010
cURL
Thursday, May 6, 2010
file_get_contents
Thursday, May 6, 2010
fsockopen
Thursday, May 6, 2010
Manipulação JSON
• Funções nativas
• json_encode
• json_decode
Thursday, May 6, 2010
HelloWorld
• Aplicação ler os últimos twits com a
hashtag #ensol
• Armanezar em uma estrutura no CouchDb
• Ler a estrutura e mostrar na tela
• Apagar dos documentos
... vou mostrar o código pronto pra
TENTAR driblar Murphy’ Law
Thursday, May 6, 2010
Exemplo Map
• curl -X POST http://localhost:5984/posts/
_temp_view -d '{"map":"function(doc){ if
(doc.from && doc.from == "gomex" )
{ emit(doc._id, doc); } }"}'
Thursday, May 6, 2010
Referências
• http://www.ibm.com/developerworks/br/
library/os-couchdb/
• http://wiki.apache.org/couchdb/
• http://books.couchdb.org/relax/
Thursday, May 6, 2010
Conclusão
• Apache CouchDb ainda está no começo
• Sendo adotado em bastante aplicações
(Facebook apps, iPhone apps...)
• Ganhando espaço em relação aos Db`s
relacionais mesmo sem ser essa intenção
(será mesmo!?)
Thursday, May 6, 2010
Questões?
• Sigam-me os bons
@theoziran
Thursday, May 6, 2010

Mais conteúdo relacionado

Mais procurados (19)

PPTX
No sql Orientado a documento
Alex Martins
 
PPT
BIBLIVRE: sistema de gerenciamento de bases
UFSC
 
PPTX
Mongo db
Edmilson Neto
 
PDF
Introdução ao NoSql
Paulo Roberto Donatilio Rego
 
PDF
MongoDB e Bancos de Dados Orientados a Documentos
UNIFESP - Universidade Federal de São Paulo
 
PPTX
Nosql e BD Orientados a Documentos
Yuri Adams
 
PPT
Entendendo a Arquitetura de Armazenamento, parte 1
Rodolfo Mendes
 
PDF
Uma visão geral do OpenLDAP e Active Directory
elliando dias
 
PPTX
Analise de Performance Usando o SO
Raul Oliveira
 
PDF
Mongo db slides
Terra / Neo
 
PDF
Document store e Mongodb
Aline Ferreira
 
PDF
Apostila Curso Php My Sql(Portugues)
guestcc491
 
PPTX
Dojo :: Liquibase
Giovani Decusati
 
PPTX
Desenvolvimento de aplicações PHP com MongoDB
Ari Stopassola Junior
 
ODP
Hbase trabalho final
Lanylldo Araujo
 
PDF
Apache poi
Cristiano Agosti
 
KEY
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Christiano Anderson
 
PDF
Semana acadêmica UFRGS 2014
Daniela Macedo
 
PDF
Java NIO.2: Mais uma API para I/O?
Francisco Oliveira
 
No sql Orientado a documento
Alex Martins
 
BIBLIVRE: sistema de gerenciamento de bases
UFSC
 
Mongo db
Edmilson Neto
 
Introdução ao NoSql
Paulo Roberto Donatilio Rego
 
MongoDB e Bancos de Dados Orientados a Documentos
UNIFESP - Universidade Federal de São Paulo
 
Nosql e BD Orientados a Documentos
Yuri Adams
 
Entendendo a Arquitetura de Armazenamento, parte 1
Rodolfo Mendes
 
Uma visão geral do OpenLDAP e Active Directory
elliando dias
 
Analise de Performance Usando o SO
Raul Oliveira
 
Mongo db slides
Terra / Neo
 
Document store e Mongodb
Aline Ferreira
 
Apostila Curso Php My Sql(Portugues)
guestcc491
 
Dojo :: Liquibase
Giovani Decusati
 
Desenvolvimento de aplicações PHP com MongoDB
Ari Stopassola Junior
 
Hbase trabalho final
Lanylldo Araujo
 
Apache poi
Cristiano Agosti
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Christiano Anderson
 
Semana acadêmica UFRGS 2014
Daniela Macedo
 
Java NIO.2: Mais uma API para I/O?
Francisco Oliveira
 

Semelhante a noSQL com CouchDb e PHP (20)

PDF
Palestra CouchDB III ENSOL
Allisson Azevedo
 
PDF
Conhecendo o CouchDB - TDC2011
Henrique Gogó
 
PPT
Mongo Db - PHP Day Workshop
Diego Sana
 
PDF
MongoDB e OpenShift - JUDCon2014
Fernando Boaglio
 
PDF
Python e bancos NoSQL
Marinho Brandão
 
PPTX
MongoDB + PHP
Ari Stopassola Junior
 
PDF
NoSQL com Zend Framework 2
Flávio Lisboa
 
PDF
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
Vinicius de Sá
 
PDF
Apresentação CEJS - Do nada para a nuvem
Rodrigo Valerio
 
PDF
Palestra nosql
Christiano Anderson
 
PDF
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
Meritt - Cada Aluno é Único
 
PDF
MongoDB outras alternativas de persistência
Eder Magalhães
 
PDF
MongoDB @ Foursquare
Bruno Furtado
 
PDF
NoSQL Livre
Julio Viegas
 
PDF
PHPMongoDB
Michel Felipe
 
PDF
Introdução ao no sql e mongodb
Universidade Federal Rural do Semi Arido
 
PPT
Desenvolvendo soluções com banco de dados não relacional - MongoDB
iMasters
 
PDF
Tcc versao final-15-12
José Fernando Castroviejo Vilela
 
Palestra CouchDB III ENSOL
Allisson Azevedo
 
Conhecendo o CouchDB - TDC2011
Henrique Gogó
 
Mongo Db - PHP Day Workshop
Diego Sana
 
MongoDB e OpenShift - JUDCon2014
Fernando Boaglio
 
Python e bancos NoSQL
Marinho Brandão
 
MongoDB + PHP
Ari Stopassola Junior
 
NoSQL com Zend Framework 2
Flávio Lisboa
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
Vinicius de Sá
 
Apresentação CEJS - Do nada para a nuvem
Rodrigo Valerio
 
Palestra nosql
Christiano Anderson
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
Meritt - Cada Aluno é Único
 
MongoDB outras alternativas de persistência
Eder Magalhães
 
MongoDB @ Foursquare
Bruno Furtado
 
NoSQL Livre
Julio Viegas
 
PHPMongoDB
Michel Felipe
 
Introdução ao no sql e mongodb
Universidade Federal Rural do Semi Arido
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
iMasters
 
Tcc versao final-15-12
José Fernando Castroviejo Vilela
 
Anúncio

Último (6)

PDF
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
PDF
11 Roberto.pdf astronomia e astronautica
henzoa798
 
PDF
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
Zeebo: Uma brevíssima introdução. - David Glotz
BluePanther6
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
11 Roberto.pdf astronomia e astronautica
henzoa798
 
IA - Grupo J.pdf para trabalho de inteligencia artificial
juanaraujo139815
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
Anúncio

noSQL com CouchDb e PHP

  • 1. noSQL com CouchDb e PHP [email protected] theoziran.com.br Thursday, May 6, 2010
  • 2. Quem sou eu? • Theoziran Lima • Analista de Sistemas formado pela Faculdade iDEZ • Atua como Analista e Desenvolvedor de Sistemas na Acade Sistemas • Membro da coordenação do PHP-PB Thursday, May 6, 2010
  • 3. Sumário • O que é CouchDb? • Bancos orientados a documentos • Como funciona? • Manipulação dos dados • Opções de manipulação com PHP • HelloWord (‘Twitter’) com PHP e CouchDb Thursday, May 6, 2010
  • 4. O que é CouchDb? • Em Abril de 2005, Damien Katz postou em seu blog um novo engine database que estava trabalhando • O CouchDB foi escrito originalmente em C++, mas em abril de 2008, o projeto foi movido para a plataforma Erlang. Thursday, May 6, 2010
  • 5. O que é CouchDb? • É uma banco de dados orientado a documentos • O acesso é feito a através da API de JavaScript Object Notation (JSON) RESTful Thursday, May 6, 2010
  • 6. O que CouchDb não é? • Um banco de dados relacional • noSQL é sem SQL, beleza neh!? • Um substitudo para os bancos relacionais • Um banco orientado a objetos Thursday, May 6, 2010
  • 7. O que é CouchDb? • Alta disponibilidade • Confiabilidade • Extremamente escalável • É um projeto ‘top-level’ da Apache Foundation Thursday, May 6, 2010
  • 8. CouchDb • O CouchDb pode ser instalado na maioria dos sistemas POSIX, incluindo Linux e MacOS • Não existe versão oficial para Windows • Já existem servidores com CouchDb disponíveis para uso (Amazon EC2) Thursday, May 6, 2010
  • 9. Um pouco de ‘orientação a documentos’ ... Thursday, May 6, 2010
  • 10. Armazenamento em documentos • É o armazenamento de documentos autocontidos: • Não existe o conceito de tabelas, relacionamentos e linhas • Todos os dados estão nos documentos • Os documentos são auto suficientes • Os documentos podem ter anexos Thursday, May 6, 2010
  • 11. Cenário dos bancos não relacionais • A idéia não é subsituir os bancos relacionais • Alternativa para projetos onde ele é mais adequado que os bancos relacionais: • Wikis, blogs e sistemas de gerenciamento de documentos. Thursday, May 6, 2010
  • 12. Como funciona? • Possui mecanismo de armazenamento em B-tree • Fornece mecanismos para procurar, inserir e editar documentos • Utiliza MapReduce na recuperação dos dados (Mapear/Reduzir) Thursday, May 6, 2010
  • 13. Trantamento de concorrência • Não há mecanismo de bloqueio • MVCC (Multiversion Concurrency control) • O cliente recebe a última versão do documento • Só é vista as alterações quando a transação é completada • É usado o mesmo mecanismos nos banco de dados modernos (MySQL, Oracle...) Thursday, May 6, 2010
  • 15. API (JSON) RESTful • API para manipulação dos dados • A manipulação dos dados é baseada em requisições HTTP • Independente de linguagem • (Até) Linguagens client-side podem ser usadas Thursday, May 6, 2010
  • 16. API (JSON) RESTFul • Quatro operações básicas para trabalhar com documentos • Create: HTTP PUT /db/id • Create: HTTP POST /id • Read: HTTP GET /db/id • Update: HTTP PUT /db/id • Delete: HTTP DELETE /db/id Thursday, May 6, 2010
  • 17. Manipulando dados • curl -X GET http://localhost:5984/_all_dbs • curl -X PUT http://localhost:5984/pessoa • curl -X GET http://localhost:5984/_all_dbs • curl -X POST http://localhost:5984/pessoa - d '{"nome":"Theoziran Lima","idade": 21,"email":"[email protected]"}' Thursday, May 6, 2010
  • 18. Requisições HTTP com PHP • cURL • file_get_contents • fsockopen Thursday, May 6, 2010
  • 22. Manipulação JSON • Funções nativas • json_encode • json_decode Thursday, May 6, 2010
  • 23. HelloWorld • Aplicação ler os últimos twits com a hashtag #ensol • Armanezar em uma estrutura no CouchDb • Ler a estrutura e mostrar na tela • Apagar dos documentos ... vou mostrar o código pronto pra TENTAR driblar Murphy’ Law Thursday, May 6, 2010
  • 24. Exemplo Map • curl -X POST http://localhost:5984/posts/ _temp_view -d '{"map":"function(doc){ if (doc.from && doc.from == "gomex" ) { emit(doc._id, doc); } }"}' Thursday, May 6, 2010
  • 26. Conclusão • Apache CouchDb ainda está no começo • Sendo adotado em bastante aplicações (Facebook apps, iPhone apps...) • Ganhando espaço em relação aos Db`s relacionais mesmo sem ser essa intenção (será mesmo!?) Thursday, May 6, 2010
  • 27. Questões? • Sigam-me os bons @theoziran Thursday, May 6, 2010