Você está na página 1de 52

PLAYING NICE WITH OTHERS

Jeremy Hinegardner / jeremy@hinegardner.org / @copiousfreetime

Thursday, September 3, 2009 1


COLLECTIVE INTELLECT

Thursday, September 3, 2009 2


Ruby (30+ gems, 20+ rails apps)

COLLECTIVE INTELLECT

Java(7) C++(1)

C (2) Groovy(1)
Thursday, September 3, 2009 2
SURVEY SAYS?

Thursday, September 3, 2009 3


COMMONALITIES

Thursday, September 3, 2009 4


DATA STRUCTURES

Thursday, September 3, 2009 5


Array Struct
List
Set Stack

DATA STRUCTURES

Hash String
Number Queue
Thursday, September 3, 2009 5
COMMUNICATION

Thursday, September 3, 2009 6


Network based

COMMUNICATION

Thursday, September 3, 2009 6


Network based

COMMUNICATION

Library, API, IPC based

Thursday, September 3, 2009 6


PERSISTENCE

Thursday, September 3, 2009 7


None

PERSISTENCE

Thursday, September 3, 2009 7


None

PERSISTENCE

Snapshot

Thursday, September 3, 2009 7


None

PERSISTENCE

Snapshot Lifetime

Thursday, September 3, 2009 7


NAME THAT TOOL!
(HAVE YOU BEEN PAYING ATTENTION?)

Thursday, September 3, 2009 8


Thursday, September 3, 2009 9
Network Communication

Thursday, September 3, 2009 9


Network Communication
+ No Persistence

Thursday, September 3, 2009 9


Network Communication
+ No Persistence
+ Hash data structure

Thursday, September 3, 2009 9


Network Communication
+ No Persistence
+ Hash data structure
memcached

Thursday, September 3, 2009 9


Thursday, September 3, 2009 10
Network Communication

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence
+ Struct data structure

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
DB2

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
DB2
Oracle

Thursday, September 3, 2009 10


Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
DB2
Oracle
Insert favorite RDBMS (server)

Thursday, September 3, 2009 10


Thursday, September 3, 2009 11
Data Structure
(wide selection)

Thursday, September 3, 2009 11


Data Structure
(wide selection)

Communication
(Network, Local)

Thursday, September 3, 2009 11


Data Structure
(wide selection)

Communication
(Network, Local)

Persistence
(none, snapshot, lifetime)

Thursday, September 3, 2009 11


Data Structure
(wide selection)

Communication
(Network, Local)

Persistence
(none, snapshot, lifetime)

Supported Languages
( at least 3 )

Thursday, September 3, 2009 11


TOKYO PRODUCTS

Thursday, September 3, 2009 12


Tokyo Cabinet

Homepage: http://tokyocabinet.sourceforge.net/

Data Structures : Array, Hash, Struct

Communication : Local

Persistence : Lifetime

API Languages : C, perl, ruby, java, lua, python

Thursday, September 3, 2009 13


Tokyo Tyrant

Homepage: http://tokyocabinet.sourceforge.net/tyrantdoc/

Data Structures : Array, Hash, Struct

Communication : Network

Persistence : Lifetime

Client Lib Languages : C, perl, ruby, java, python, php, erlang

Thursday, September 3, 2009 14


Tokyo Bonuses

Compression

Tyrant - Memcached protocol

Tyrant - RESTful API

Tyrant - Lua extensions

Tyrant - Replication

Thursday, September 3, 2009 15


REDIS

Thursday, September 3, 2009 16


Redis

Homepage : http://code.google.com/p/redis/

Data Structures : List, Hash, Set

Communication : Network

Persistence : Snapshot

Client Lib Languages : Ruby, Python, PHP, Erlang, Tcl, Perl,


Lua, Java

Thursday, September 3, 2009 17


Redis Bonuses

Replication

Server-to-Server data movement

In-server Set operations

In-server Sorting

Asynchronous snapshots

Thursday, September 3, 2009 18


LIBJLOG

Thursday, September 3, 2009 19


libjlog
Homepage : https://labs.omniti.com/trac/jlog

Data Structure : Queue

Communication : Local

Persistence : Lifetime

API Languages : C, Perl, PHP, Ruby is on its way

Bonus : Publish/Subscribe behavior

Thursday, September 3, 2009 20


BEANSTALKD

Thursday, September 3, 2009 21


beanstalkd

Homepage : http://xph.us/software/beanstalkd/

Data Structure : Queue

Communication : Network

Persistence : None now, Snapshot in v1.4

Bonus : Job Queue behavior

Thursday, September 3, 2009 22


ZEROMQ

Thursday, September 3, 2009 23


0MQ

Homepage : http://www.zeromq.org/

Data Structure : Queue

Communication : Network

Persistence : Lifetime

API Languages : C, C++, Java, Python, .Net, Mono, Ruby,


Fortran, COBOL

Thursday, September 3, 2009 24


0MQ Bonuses

Implement your own messaging models

Excellent examples

White papers for everything

Fastest. Messaging. Ever.

Thursday, September 3, 2009 25


Local Communication
None Snapshot Lifetime

Array N/A ? N/A ? Tokyo Cabinet

Hash N/A ? N/A ? Tokyo Cabinet

List N/A ? N/A ? Tokyo Cabinet

Set N/A ? N/A ? Tokyo Cabinet

Struct N/A ? N/A ? Tokyo Cabinet

Queue N/A ? N/A ? TC / libjlog

Thursday, September 3, 2009 26


Network Communication
None Snapshot Lifetime

Array Tokyo Tyrant

Hash TT/Memcache Redis Tokyo Tyrant

List Redis

Set Redis

Struct TT/RDBMS

Queue Beanstalk Beanstalk (1.4) 0MQ

Thursday, September 3, 2009 27


Even More!
MongoDB couchdb

nmdb netcdf

luxIO solr

ehcache rabbitmq

flare ejabberd

cassandra Your favorite?

Thursday, September 3, 2009 28


DEMOS

Thursday, September 3, 2009 29

Você também pode gostar