couchdb vs postgresql no rails

Download CouchDB vs PostgreSQL no Rails

Post on 11-Jul-2015

1.509 views

Category:

Technology

4 download

Embed Size (px)

TRANSCRIPT

CouchDB vs PostgreSQL em Rails

Diogo Biazus (diogob@gmail.com) e Johalf Farina (johalffarina@gmail.com)

CouchDB ?CouchDB?

Cluster Of Unreliable Commodity Hardware;

Gerenciador de banco de dados orientado a documentos;

Software livre da Apache;

Usar, modificar e distribur desde que um aviso de uso do cdigo licenciado da Apache seja mantido.

Projeto da Apache.org;

Nasceu em 2005;

OpenSource;

SGDB orientado a documentos;

Verso atual 0.9.1.

CouchDB

MySQL
PostgreSQL SQLite

SGBDs relacionais

SimpleDBMongoDBCouchDB

SGBDs orientados a documentos

Cenrio atual de SGBDs

SGBD orientado a documentos

Os dados no so armazenados em linhas e colunas de tabelas relacionadas ou no e sim em documentos;

No h limite no armazenamento das informaes;

Documentos so armazenados e acessados atravz de um identificador;

Livre de schemas.

Agner Krarup

Porque CouchDB ?CouchDB?

Cluster Of Unreliable Commodity Hardware;

Gerenciador de banco de dados orientado a documentos;

Software livre da Apache;

Usar, modificar e distribur desde que um aviso de uso do cdigo licenciado da Apache seja mantido.

{"_id": "acdd4a90-6e85-012c-a43d-001e68078287","_rev": "4-1059007316","name": "Lorem ipsum dolor asit amet","created_at": "2009/08/18 21:32:18 +0000","email": "lipsum@lipsum.com"}

Json rules!!

MapReduce!

Interface HTTP RESTfull

Create: HTTP POST /banco/db

Read: HTTP GET /banco/doc_id

Update: HTTP PUT /banco/doc_id

Delete: HTTP DELETE /banco/doc_id

Replicaoooo!!!!

RDBMS

Slave

Slave

Slave

Master

Time to Relax!!CouchDB?

Cluster Of Unreliable Commodity Hardware;

Gerenciador de banco de dados orientado a documentos;

Software livre da Apache;

Usar, modificar e distribur desde que um aviso de uso do cdigo licenciado da Apache seja mantido.

Versionamento

CouchDB?

Cluster Of Unreliable Commodity Hardware;

Gerenciador de banco de dados orientado a documentos;

Software livre da Apache;

Usar, modificar e distribur desde que um aviso de uso do cdigo licenciado da Apache seja mantido.

R

Os dados nunca so sobrescritos

CouchDB on Rails

= Plugin ou Gem

ActiveCouch

http://github.com/arunthampi/activecouch/tree/master

RelaxDB

http://github.com/paulcarey/relaxdb/tree/master

Couch_potato

http://github.com/langalex/couch_potato/tree/master

CouchRest + Couch_foo = Happiness

http://github.com/jchris/couchrest/tree/master

http://github.com/georgepalmer/couch_foo/tree/master

Couch_foo Model

class Participant < CouchFoo::Baseproperty :name, Stringproperty :email, String

property :created_at, DateTime

validates_presence_of :namevalidates_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

Alguns recursos

http://couchdb.apache.org/

http://en.wikipedia.org/wiki/CouchDB

http://books.couchdb.org/relax/

http://planet.couchdb.org/

http://twitter.com/CouchDB

PostgreSQL ?

Nasceu em 1996;

OpenSource;

SGDB SQL/Relacional;

Verso atual 8.4;

Desenvolvido em C;

Diversas extenses;

PostgreSQL

Porque PostgreSQL ?

Extenses

PGTemporal

DBI-Link

Diversas funes de criptografia e digests

Levenshtein, Soundex e trigramas

I hate javascript

PL/Ruby

PL/Python

PL/Perl

PL/Java

etc...

CouchDB != Relacional

O Rails foi desenvolvido para bases SQL

Trabalhar com Rails preferir convenes a configuraes

Tentar usar o CouchDB como base SQL ou o Rails com uma base orientada a documentos no elegante

Funcional x Declarativo

PostgreSQL on Rails

Gem ruby-pg

Integrao nativa com AR

Plugin sexy_pg_constraints

Plugin para integrar via Sequel

Alguns recursos

http://www.postgresql.org/

http://en.wikipedia.org/wiki/PostgreSQL

http://www.postgresql.org.br/

http://planet.postgresql.org/

http://planeta.postgresql.org.br/

http://twitter.com/PostgreSQL

Performance

O momento que todos esperavam

Testes feitos com script/performance/profiler

Cada teste foi feito com uma mdia de tempo de 1000 repeties de chamadas diretas ao modelo

A comparao de CouchFoo x ruby-pg e no de CouchDB x PostgreSQL

Performance

CouchDB 0.9.1

PostgreSQL 8.3.4

Testes muito simples, no levam em considerao:Consultas complexas

Concorrncia

Mltiplos ncleos (somente 2)

Performance

OperaoPG (ms)CouchDB (ms)

.all (banco vazio)13,8039,71

.create117,58296,57

.all (aps .create)35,2460,18

.find_by26,6458,51