Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

noSQL com CouchDb e PHP

5,184 views

Published on

Apresentando como usar CouchDb com PHP

Published in: Technology
  • Merma foto de 10 anos atrás Theoziran..rsrs
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Velho vc pdoeria disponibilizar os scripts utilizados ae neh.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Pow demorou, velho vc nao eh afim de fazer parte da comunida nosqlbr? Prox semana pretendo colocar o blog em nosqlbr.com.br E vai ser um blog mais comunitario, na real hj ja eh porem existem poucos interessados. Se vc for afim de ajudar a comunidade crescer da um toque. Ainda mais q estou mais focado no MongoDB.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Inclusive na apresentação fiz um HelloWord misturando com twitter vou anexar os arquivos aqui nos comentários
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Vc ja fez testes com o CouchDB? Qquer coisa avisa =D
    Vou começar os meus fds.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

noSQL com CouchDb e PHP

  1. 1. noSQL com CouchDb e PHP theoziran@gmail.com theoziran.com.br Thursday, May 6, 2010
  2. 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. 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. 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. 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. 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. 7. O que é CouchDb? • Alta disponibilidade • Confiabilidade • Extremamente escalável • É um projeto ‘top-level’ da Apache Foundation Thursday, May 6, 2010
  8. 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. 9. Um pouco de ‘orientação a documentos’ ... Thursday, May 6, 2010
  10. 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. 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. 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. 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
  14. 14. Ferramentas • CouchDb Utils Thursday, May 6, 2010
  15. 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. 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. 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. 18. Requisições HTTP com PHP • cURL • file_get_contents • fsockopen Thursday, May 6, 2010
  19. 19. cURL Thursday, May 6, 2010
  20. 20. file_get_contents Thursday, May 6, 2010
  21. 21. fsockopen Thursday, May 6, 2010
  22. 22. Manipulação JSON • Funções nativas • json_encode • json_decode Thursday, May 6, 2010
  23. 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. 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
  25. 25. 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
  26. 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. 27. Questões? • Sigam-me os bons @theoziran Thursday, May 6, 2010

×