SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documentoAlex Martins
 
BIBLIVRE: sistema de gerenciamento de bases
BIBLIVRE: sistema de gerenciamento de basesBIBLIVRE: sistema de gerenciamento de bases
BIBLIVRE: sistema de gerenciamento de basesUFSC
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 
Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Rodolfo Mendes
 
Uma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active DirectoryUma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active Directoryelliando dias
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Fernando Rizzato
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SORaul Oliveira
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)guestcc491
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Daniela Macedo
 
Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?Francisco Oliveira
 

La actualidad más candente (20)

No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
BIBLIVRE: sistema de gerenciamento de bases
BIBLIVRE: sistema de gerenciamento de basesBIBLIVRE: sistema de gerenciamento de bases
BIBLIVRE: sistema de gerenciamento de bases
 
Mongo db
Mongo dbMongo db
Mongo db
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 
Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1Entendendo a Arquitetura de Armazenamento, parte 1
Entendendo a Arquitetura de Armazenamento, parte 1
 
Uma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active DirectoryUma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active Directory
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SO
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)
 
Dojo :: Liquibase
Dojo :: LiquibaseDojo :: Liquibase
Dojo :: Liquibase
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Hbase trabalho final
Hbase trabalho finalHbase trabalho final
Hbase trabalho final
 
Apache poi
Apache poiApache poi
Apache poi
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014
 
Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?Java NIO.2: Mais uma API para I/O?
Java NIO.2: Mais uma API para I/O?
 

Similar a noSQL com CouchDb e PHP

OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATALeonardo Dias
 
FileTable Full Text Search & Semantic Search no SQL Server 2012
FileTable Full Text Search & Semantic Search no SQL Server 2012FileTable Full Text Search & Semantic Search no SQL Server 2012
FileTable Full Text Search & Semantic Search no SQL Server 2012Marcos Freccia
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordtchandy
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
Conexões eficientes em banco de dados com PHP
Conexões eficientes em banco de dados com PHPConexões eficientes em banco de dados com PHP
Conexões eficientes em banco de dados com PHPIgor Lopes
 
Crossref Content Registration in Brazilian Portuguese pt-1
Crossref Content Registration in Brazilian Portuguese pt-1Crossref Content Registration in Brazilian Portuguese pt-1
Crossref Content Registration in Brazilian Portuguese pt-1Crossref
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 
Integrando big data ao oltp com polybase
Integrando big data ao oltp com polybaseIntegrando big data ao oltp com polybase
Integrando big data ao oltp com polybaseDennes Torres
 
24 Horas de PASS - File table, full text search e semantic search
24 Horas de PASS - File table, full text search e semantic search24 Horas de PASS - File table, full text search e semantic search
24 Horas de PASS - File table, full text search e semantic searchMarcos Freccia
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingPriscila Mayumi
 
FileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchFileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchMarcos Freccia
 
FileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchFileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchMarcos Freccia
 
FileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchFileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchMarcos Freccia
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceLuis Borges Gouveia
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesC. Augusto Proiete
 
Introducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodbIntroducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodbFábio Theophilo
 

Similar a noSQL com CouchDb e PHP (20)

OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATA
 
FileTable Full Text Search & Semantic Search no SQL Server 2012
FileTable Full Text Search & Semantic Search no SQL Server 2012FileTable Full Text Search & Semantic Search no SQL Server 2012
FileTable Full Text Search & Semantic Search no SQL Server 2012
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Projeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecordProjeto Octopus - Database Sharding para ActiveRecord
Projeto Octopus - Database Sharding para ActiveRecord
 
BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
Conexões eficientes em banco de dados com PHP
Conexões eficientes em banco de dados com PHPConexões eficientes em banco de dados com PHP
Conexões eficientes em banco de dados com PHP
 
Crossref Content Registration in Brazilian Portuguese pt-1
Crossref Content Registration in Brazilian Portuguese pt-1Crossref Content Registration in Brazilian Portuguese pt-1
Crossref Content Registration in Brazilian Portuguese pt-1
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Integrando big data ao oltp com polybase
Integrando big data ao oltp com polybaseIntegrando big data ao oltp com polybase
Integrando big data ao oltp com polybase
 
24 Horas de PASS - File table, full text search e semantic search
24 Horas de PASS - File table, full text search e semantic search24 Horas de PASS - File table, full text search e semantic search
24 Horas de PASS - File table, full text search e semantic search
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
FileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchFileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic Search
 
FileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchFileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic Search
 
FileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic SearchFileTable, Full Text Search e Semantic Search
FileTable, Full Text Search e Semantic Search
 
SQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open sourceSQLite: um motor de bases de dados relacional open source
SQLite: um motor de bases de dados relacional open source
 
Big Data
Big DataBig Data
Big Data
 
Entity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidadesEntity Framework 4, Novas funcionalidades
Entity Framework 4, Novas funcionalidades
 
Introducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodbIntroducao aos bancos_nao_relacionais_com_mongodb
Introducao aos bancos_nao_relacionais_com_mongodb
 

Último

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Último (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

noSQL com CouchDb e PHP

  • 1. noSQL com CouchDb e PHP theoziran@gmail.com 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":"theoziran@gmail.com"}' 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