<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Nick Sieger: RailsConf 2007: Evan Weaver: Going Off Grid</title>
  <id>tag:blog.nicksieger.com,2005:Typo</id>
  <generator uri="http://www.typosphere.org" version="4.0">Typo</generator>
  <link rel="self" type="application/atom+xml" href="http://blog.nicksieger.com/xml/atom10/article/243/feed.xml"/>
  <link rel="alternate" type="text/html" href="http://blog.nicksieger.com/articles/2007/05/18/railsconf-2007-evan-weaver-going-off-grid"/>
  <updated>2007-07-13T09:45:27+00:00</updated>
  <entry>
    <author>
      <name>Nick Sieger</name>
    </author>
    <id>urn:uuid:f408e374-3a8c-4436-b31f-cf1d3fe7e4be</id>
    <published>2007-05-18T19:33:31+00:00</published>
    <updated>2007-07-13T09:45:27+00:00</updated>
    <title>RailsConf 2007: Evan Weaver: Going Off Grid</title>
    <link rel="alternate" type="text/html" href="http://blog.nicksieger.com/articles/2007/05/18/railsconf-2007-evan-weaver-going-off-grid"/>
    <category term="railsconf" scheme="http://blog.nicksieger.com/articles/tag/railsconf"/>
    <category term="railsconf2007" scheme="http://blog.nicksieger.com/articles/tag/railsconf2007"/>
    <content type="html">&lt;p&gt;Evan is talking about leaving Rails as a full-stack framework and remixing bits and pieces for integration projects. He&amp;#8217;s doing it in the context of a case study on Bio: a project at the University of Delaware working with DNA data in large SQL databases.  Evan states that all of bioinformatics is an integration problem.  (Me: That&amp;#8217;s probably true of any research project where data is coming from multiple, varied sources.  So where does Rails fit in this?)&lt;/p&gt;

&lt;p&gt;So how do you cope with this?  Use the Rails console as an admin interface, mapping AR onto the legacy schema.&lt;/p&gt;

&lt;p&gt;Shadow (&lt;code&gt;gem install shadow&lt;/code&gt;) is a REST-ful record server &amp;#8211; a small Mongrel handler that allows you to manipulate the database remotely.  It uses dynamic ActiveRecord classes that are created and trashed for each request.&lt;/p&gt;

&lt;p&gt;Parallelization &amp;#8211; uses the Sun 1 grid engine that distributes shell scripts across 128 nodes.  Used for job and backend processing.&lt;/p&gt;

&lt;p&gt;bioruby/bioperl/biopython &amp;#8211; bioinformatics libraries in other languages &amp;#8211; bioruby is not complete, but we still want to use Ruby, so he looked at ways of integrating Ruby with other languages.  No RubyInline for Perl or Python, no up-to-date direct/C bindings.  He ended up building a socket-level interface into python.&lt;/p&gt;

&lt;p&gt;Admin tools to consider &amp;#8211; streamlined, active_scaffold, autoadmin, Django (&lt;code&gt;manage.py inspectdb; manage.py syncdb; manage.py runserver&lt;/code&gt;).  (Wow, come to RailsConf, get a Django demo.  Unexpected surprise!)&lt;/p&gt;

&lt;p&gt;Extending Rails &amp;#8211; &lt;code&gt;has_many_polymorphs&lt;/code&gt; for easy creation directed graphs&lt;/p&gt;

&lt;p&gt;Frustrating AR tidbits: &lt;code&gt;has_many_through&lt;/code&gt; has a huge case statement, with sql strings everywhere, and tightly intertwined classes.  Ugh.&lt;/p&gt;

&lt;p&gt;Scaling big webapps:  AR/SQL is not the way.  Instead, go to a hyper-denormalized model, where the DB is just a big hash.  This leads to things like berkeleydb, memcached, madeleine, etc. and MySQL just becomes a persistence store for memcache.  One key is moving joins at write-time, so that reads don&amp;#8217;t need to re-join associations.  You&amp;#8217;re essentially duplicating/caching the data out to each association, but this makes sharding/splitting of data easier.  Example: Flickr user photos vs. photos placed in a group.&lt;/p&gt;

&lt;p&gt;Evan doesn&amp;#8217;t believe that SQL is a viable data store for webapps &amp;#8211; I think he means large-scale webapps.  Not everyone who&amp;#8217;s trying to build a web application will run into these kinds of issues, so your mileage may vary.  Still, it&amp;#8217;s refreshing to see more people rebel against the incumbent 30-year gorilla of SQL.&lt;/p&gt;</content>
  </entry>
</feed>
