Playing Nice with Others

2,248 views

Published on

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

Published in: Technology, Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,248
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
42
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • 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
  • Playing Nice with Others

    1. 1. PLAYING NICE WITH OTHERS Jeremy Hinegardner / jeremy@hinegardner.org / @copiousfreetime
    2. 2. COLLECTIVE INTELLECT
    3. 3. Ruby (30+ gems, 20+ rails apps) COLLECTIVE INTELLECT Java(7) C++(1) C (2) Groovy(1)
    4. 4. SURVEY SAYS?
    5. 5. COMMONALITIES
    6. 6. DATA STRUCTURES
    7. 7. Array Struct List Set Stack DATA STRUCTURES Hash String Number Queue
    8. 8. COMMUNICATION
    9. 9. Network based COMMUNICATION
    10. 10. Network based COMMUNICATION Library, API, IPC based
    11. 11. PERSISTENCE
    12. 12. None PERSISTENCE
    13. 13. None PERSISTENCE Snapshot
    14. 14. None PERSISTENCE Snapshot Lifetime
    15. 15. NAME THAT TOOL! (HAVE YOU BEEN PAYING ATTENTION?)
    16. 16. Network Communication
    17. 17. Network Communication + No Persistence
    18. 18. Network Communication + No Persistence + Hash data structure
    19. 19. Network Communication + No Persistence + Hash data structure memcached
    20. 20. Network Communication
    21. 21. Network Communication + Lifetime persistence
    22. 22. Network Communication + Lifetime persistence + Struct data structure
    23. 23. Network Communication + Lifetime persistence + Struct data structure Postgresql
    24. 24. Network Communication + Lifetime persistence + Struct data structure Postgresql Mysql
    25. 25. Network Communication + Lifetime persistence + Struct data structure Postgresql Mysql DB2
    26. 26. Network Communication + Lifetime persistence + Struct data structure Postgresql Mysql DB2 Oracle
    27. 27. Network Communication + Lifetime persistence + Struct data structure Postgresql Mysql DB2 Oracle Insert favorite RDBMS (server)
    28. 28. Data Structure (wide selection)
    29. 29. Data Structure (wide selection) Communication (Network, Local)
    30. 30. Data Structure (wide selection) Communication (Network, Local) Persistence (none, snapshot, lifetime)
    31. 31. Data Structure (wide selection) Communication (Network, Local) Persistence (none, snapshot, lifetime) Supported Languages ( at least 3 )
    32. 32. TOKYO PRODUCTS
    33. 33. Tokyo Cabinet Homepage: http://tokyocabinet.sourceforge.net/ Data Structures : Array, Hash, Struct Communication : Local Persistence : Lifetime API Languages : C, perl, ruby, java, lua, python
    34. 34. 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
    35. 35. Tokyo Bonuses Compression Tyrant - Memcached protocol Tyrant - RESTful API Tyrant - Lua extensions Tyrant - Replication
    36. 36. REDIS
    37. 37. 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
    38. 38. Redis Bonuses Replication Server-to-Server data movement In-server Set operations In-server Sorting Asynchronous snapshots
    39. 39. LIBJLOG
    40. 40. 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
    41. 41. BEANSTALKD
    42. 42. beanstalkd Homepage : http://xph.us/software/beanstalkd/ Data Structure : Queue Communication : Network Persistence : None now, Snapshot in v1.4 Bonus : Job Queue behavior
    43. 43. ZEROMQ
    44. 44. 0MQ Homepage : http://www.zeromq.org/ Data Structure : Queue Communication : Network Persistence : Lifetime API Languages : C, C++, Java, Python, .Net, Mono, Ruby, Fortran, COBOL
    45. 45. 0MQ Bonuses Implement your own messaging models Excellent examples White papers for everything Fastest. Messaging. Ever.
    46. 46. 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
    47. 47. 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
    48. 48. Even More! MongoDB couchdb nmdb netcdf luxIO solr ehcache rabbitmq flare ejabberd cassandra Your favorite?
    49. 49. DEMOS

    ×