Raise your hand if you have a favorite programming language. Lower your hand when I say your favorite language. - Ruby - Java - Smalltalk - Lisp - Eiffel - C - C++ - C# - Perl - Php
What are things that are common between languages? Or Pan-language? Maybe I should say, what are some of the things that you learned in computer science, that had nothing to do with an actual language?
What does everyone currently use to communicate a data structure between applications / processes?
What does everyone currently use to communicate a data structure between applications / processes?
A couple of questions, about 2 widely used cross language tools
Compression key, value stores using bzip or zlib Server understands not only its own tyrant wire protocol, but the memcached protocol, and it has a RESTful. use lua in the server, invoke a lua methods
Calls itself a data structure store
libjlog = “journaled log” libjlog is a pure C, very simple durable message queue with multiple subscribers and publishers (both thread and multi-process safe).
hash is to memcached as queue is to beanstalkd
2 Favorites
Joaquin Salvachua, profesor titular at Universidad Politécnica de Madrid, favorited this 3 months ago
Array Struct
List
Set Stack
DATA STRUCTURES
Hash String
Number Queue
COMMUNICATION
Network based
COMMUNICATION
Network based
COMMUNICATION
Library, API, IPC based
PERSISTENCE
None
PERSISTENCE
None
PERSISTENCE
Snapshot
None
PERSISTENCE
Snapshot Lifetime
NAME THAT TOOL!
(HAVE YOU BEEN PAYING ATTENTION?)
Network Communication
Network Communication
+ No Persistence
Network Communication
+ No Persistence
+ Hash data structure
Network Communication
+ No Persistence
+ Hash data structure
memcached
Network Communication
Network Communication
+ Lifetime persistence
Network Communication
+ Lifetime persistence
+ Struct data structure
Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
DB2
Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
DB2
Oracle
Network Communication
+ Lifetime persistence
+ Struct data structure
Postgresql
Mysql
DB2
Oracle
Insert favorite RDBMS (server)
Data Structure
(wide selection)
Data Structure
(wide selection)
Communication
(Network, Local)
Data Structure
(wide selection)
Communication
(Network, Local)
Persistence
(none, snapshot, lifetime)
Data Structure
(wide selection)
Communication
(Network, Local)
Persistence
(none, snapshot, lifetime)
Supported Languages
( at least 3 )
TOKYO PRODUCTS
Tokyo Cabinet
Homepage: http://tokyocabinet.sourceforge.net/
Data Structures : Array, Hash, Struct
Communication : Local
Persistence : Lifetime
API Languages : C, perl, ruby, java, lua, python
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
Tokyo Bonuses
Compression
Tyrant - Memcached protocol
Tyrant - RESTful API
Tyrant - Lua extensions
Tyrant - Replication
REDIS
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
Redis Bonuses
Replication
Server-to-Server data movement
In-server Set operations
In-server Sorting
Asynchronous snapshots
LIBJLOG
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
BEANSTALKD
beanstalkd
Homepage : http://xph.us/software/beanstalkd/
Data Structure : Queue
Communication : Network
Persistence : None now, Snapshot in v1.4
Bonus : Job Queue behavior
ZEROMQ
0MQ
Homepage : http://www.zeromq.org/
Data Structure : Queue
Communication : Network
Persistence : Lifetime
API Languages : C, C++, Java, Python, .Net, Mono, Ruby,
Fortran, COBOL
0MQ Bonuses
Implement your own messaging models
Excellent examples
White papers for everything
Fastest. Messaging. Ever.
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
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
Even More!
MongoDB couchdb
nmdb netcdf
luxIO solr
ehcache rabbitmq
flare ejabberd
cassandra Your favorite?
In the course of writing applications you need more more
In the course of writing applications you need more tools than just ruby to get the job done. In many cases ruby will not be the only language involved in the application. This talk will cover non-ruby tools that every rubyist should consider to help solve the problems they face. I will cover several non-traditional queueing, hashing and data storage servers and libraries that will be an asset to any rubyist. The common factor in all these tools, is an interface that is programming language independent, or an interface exists for multiple programming languages less
0 comments
Post a comment