Se ha denunciado esta presentación.

CouchDB vs Postgres em Rails

1

Compartir

Cargando en…3
×
1 de 35
1 de 35

CouchDB vs Postgres em Rails

1

Compartir

Descargar para leer sin conexión

A palestra aborda diferenças entre o SGBDs PostgreSQL CouchDB, ressaltando as diferenças conceituais e apresentando comparativos de performance.

por Diogo Biazus e Johalf Farina no 1° RS on Rails

A palestra aborda diferenças entre o SGBDs PostgreSQL CouchDB, ressaltando as diferenças conceituais e apresentando comparativos de performance.

por Diogo Biazus e Johalf Farina no 1° RS on Rails

Más Contenido Relacionado

CouchDB vs Postgres em Rails

  1. 1. CouchDB vs PostgreSQL em Rails Diogo Biazus (diogob@gmail.com) e Johalf Farina (johalffarina@gmail.com)
  2. 2. CouchDB ?
  3. 3. <ul><li>Projeto da Apache.org;
  4. 4. Nasceu em 2005;
  5. 5. OpenSource;
  6. 6. SGDB orientado a documentos;
  7. 7. Versão atual 0.9.1. </li></ul>CouchDB
  8. 8. MySQL PostgreSQL SQLite SGBDs relacionais SimpleDB MongoDB CouchDB SGBDs orientados a documentos Cenário atual de SGBDs
  9. 9. SGBD orientado a documentos <ul><li>Os dados não são armazenados em linhas e colunas de tabelas relacionadas ou não e sim em documentos ;
  10. 10. Não há limite no armazenamento das informações;
  11. 11. Documentos são armazenados e acessados atravéz de um identificador;
  12. 12. Livre de schemas. </li></ul>
  13. 13. Agner Krarup
  14. 14. Porque CouchDB ?
  15. 15. { &quot;_id&quot;: &quot;acdd4a90-6e85-012c-a43d-001e68078287&quot;, &quot;_rev&quot;: &quot;4-1059007316&quot;, &quot;name&quot;: &quot;Lorem ipsum dolor asit amet&quot;, &quot;created_at&quot;: &quot;2009/08/18 21:32:18 +0000&quot;, &quot;email&quot;: &quot;lipsum@lipsum.com&quot; } Json rules!!
  16. 16. MapReduce!
  17. 17. Interface HTTP RESTfull <ul><li>C reate: HTTP POST /banco/db
  18. 18. R ead: HTTP GET /banco/doc_id
  19. 19. U pdate: HTTP PUT /banco/doc_id
  20. 20. D elete: HTTP DELETE /banco/doc_id </li></ul>
  21. 21. Replicaçãoooo!!!!
  22. 22. RDBMS Slave Slave Slave Master
  23. 23. Time to Relax!!
  24. 25. Versionamento
  25. 26. Rááááááá
  26. 27. Os dados nunca são sobrescritos
  27. 28. CouchDB on Rails = Plugin ou Gem
  28. 29. ActiveCouch http://github.com/arunthampi/activecouch/tree/master
  29. 30. RelaxDB http://github.com/paulcarey/relaxdb/tree/master
  30. 31. Couch_potato http://github.com/langalex/couch_potato/tree/master
  31. 32. CouchRest + Couch_foo = Happiness http://github.com/jchris/couchrest/tree/master http://github.com/georgepalmer/couch_foo/tree/master
  32. 33. Couch_foo Model class Participant < CouchFoo::Base property :name, String property :email, String property :created_at, DateTime validates_presence_of :name validates_presence_of :email validates_format_of :email, :with => %r{^(?:[_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-zA-Z0-9-.]+)*(.[a-z]{2,4})$}i, :if => :email? end
  33. 34. Alguns recursos <ul><li>http://couchdb.apache.org/
  34. 35. http://en.wikipedia.org/wiki/CouchDB
  35. 36. http://books.couchdb.org/relax/
  36. 37. http://planet.couchdb.org/
  37. 38. http://twitter.com/CouchDB </li></ul>
  38. 39. PostgreSQL ?
  39. 40. <ul><li>Nasceu em 1996;
  40. 41. OpenSource;
  41. 42. SGDB SQL/Relacional;
  42. 43. Versão atual 8.4;
  43. 44. Desenvolvido em C;
  44. 45. Diversas extensões; </li></ul>PostgreSQL
  45. 46. Porque PostgreSQL ?
  46. 47. Extensões <ul><li>PGTemporal
  47. 48. DBI-Link
  48. 49. Diversas funções de criptografia e digests
  49. 50. Levenshtein, Soundex e trigramas </li></ul>
  50. 51. I hate javascript <ul><li>PL/Ruby
  51. 52. PL/Python
  52. 53. PL/Perl
  53. 54. PL/Java
  54. 55. etc... </li></ul>
  55. 56. CouchDB != Relacional <ul><li>O Rails foi desenvolvido para bases SQL
  56. 57. Trabalhar com Rails é preferir convenções a configurações
  57. 58. Tentar usar o CouchDB como base SQL ou o Rails com uma base orientada a documentos não é elegante
  58. 59. Funcional x Declarativo </li></ul>
  59. 60. PostgreSQL on Rails <ul><li>Gem ruby-pg
  60. 61. Integração nativa com AR
  61. 62. Plugin sexy_pg_constraints
  62. 63. Plugin para integrar via Sequel </li></ul>
  63. 64. Alguns recursos <ul><li>http://www.postgresql.org/
  64. 65. http://en.wikipedia.org/wiki/PostgreSQL
  65. 66. http://www.postgresql.org.br/
  66. 67. http://planet.postgresql.org/
  67. 68. http://planeta.postgresql.org.br/
  68. 69. http://twitter.com/PostgreSQL </li></ul>
  69. 70. Performance <ul><li>O momento que todos esperavam
  70. 71. Testes feitos com script/performance/profiler
  71. 72. Cada teste foi feito com uma média de tempo de 1000 repetições de chamadas diretas ao modelo
  72. 73. A comparação é de CouchFoo x ruby-pg e não de CouchDB x PostgreSQL </li></ul>
  73. 74. Performance <ul><li>CouchDB 0.9.1
  74. 75. PostgreSQL 8.3.4
  75. 76. Testes muito simples, não levam em consideração: </li><ul><li>Consultas complexas
  76. 77. Concorrência
  77. 78. Múltiplos núcleos (somente 2) </li></ul></ul>
  78. 79. Performance Operação PG (ms) CouchDB (ms) .all (banco vazio) 13,80 39,71 .create 117,58 296,57 .all (após .create) 35,24 60,18 .find_by 26,64 58,51

Notas

  • CouchDB? C luster O f U nreliable C ommodity H ardware; Gerenciador de banco de dados orientado a documentos; Software livre da Apache; Usar, modificar e distribuír desde que um aviso de uso do código licenciado da Apache seja mantido.
  • CouchDB? C luster O f U nreliable C ommodity H ardware; Gerenciador de banco de dados orientado a documentos; Software livre da Apache; Usar, modificar e distribuír desde que um aviso de uso do código licenciado da Apache seja mantido.
  • CouchDB? C luster O f U nreliable C ommodity H ardware; Gerenciador de banco de dados orientado a documentos; Software livre da Apache; Usar, modificar e distribuír desde que um aviso de uso do código licenciado da Apache seja mantido.
  • CouchDB? C luster O f U nreliable C ommodity H ardware; Gerenciador de banco de dados orientado a documentos; Software livre da Apache; Usar, modificar e distribuír desde que um aviso de uso do código licenciado da Apache seja mantido.
  • ×