SlideShare a Scribd company logo
1 of 52
PLAYING NICE WITH OTHERS
   Jeremy Hinegardner / jeremy@hinegardner.org / @copiousfreetime
COLLECTIVE INTELLECT
Ruby (30+ gems, 20+ rails apps)




COLLECTIVE INTELLECT

Java(7)           C++(1)

          C (2)            Groovy(1)
SURVEY SAYS?
COMMONALITIES
DATA STRUCTURES
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?
DEMOS

More Related Content

Similar to Playing Nice with Others

JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st Century
Gnu Alsonative
 
JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st Century
Gnu Alsonative
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
Jesse Vincent
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
Wei Sun
 

Similar to Playing Nice with Others (20)

JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st Century
 
JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st Century
 
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotDelphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
 
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft..."Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
"Source Code Abstracts Classification Using CNN", Vadim Markovtsev, Lead Soft...
 
Renegotiating the boundary between database latency and consistency
Renegotiating the boundary between database latency  and consistencyRenegotiating the boundary between database latency  and consistency
Renegotiating the boundary between database latency and consistency
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thrift
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
Jabber 101
Jabber 101Jabber 101
Jabber 101
 
2016 mORMot
2016 mORMot2016 mORMot
2016 mORMot
 
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
 
Works with persistent graphs using OrientDB
Works with persistent graphs using OrientDB Works with persistent graphs using OrientDB
Works with persistent graphs using OrientDB
 
DotNet Introduction
DotNet IntroductionDotNet Introduction
DotNet Introduction
 
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi and Eri...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi and Eri...How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi and Eri...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi and Eri...
 
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
How To Use Kafka and Druid to Tame Your Router Data (Rachel Pedreschi, Imply ...
 
3 apache-avro
3 apache-avro3 apache-avro
3 apache-avro
 
Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
Interoperability
InteroperabilityInteroperability
Interoperability
 
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
 
Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)Robot operating systems (ros) overview & (1)
Robot operating systems (ros) overview & (1)
 

More from Jeremy Hinegardner

More from Jeremy Hinegardner (7)

Data Stories
Data StoriesData Stories
Data Stories
 
Creative Photography for Geeks
Creative Photography for GeeksCreative Photography for Geeks
Creative Photography for Geeks
 
Gemology
GemologyGemology
Gemology
 
Extending JRuby
Extending JRubyExtending JRuby
Extending JRuby
 
FFI -- creating cross engine rubygems
FFI -- creating cross engine rubygemsFFI -- creating cross engine rubygems
FFI -- creating cross engine rubygems
 
Crate - ruby based standalone executables
Crate - ruby based standalone executablesCrate - ruby based standalone executables
Crate - ruby based standalone executables
 
FFI - building cross engine ruby extensions
FFI - building cross engine ruby extensionsFFI - building cross engine ruby extensions
FFI - building cross engine ruby extensions
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Playing Nice with Others

Editor's Notes

  1. 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
  2. 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?
  3. What does everyone currently use to communicate a data structure between applications / processes?
  4. What does everyone currently use to communicate a data structure between applications / processes?
  5. A couple of questions, about 2 widely used cross language tools
  6. 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
  7. Calls itself a data structure store
  8. libjlog = “journaled log” libjlog is a pure C, very simple durable message queue with multiple subscribers and publishers (both thread and multi-process safe).
  9. hash is to memcached as queue is to beanstalkd