Welcome
                                                  ben scofield - @bscofield
                                                   http://benscofield.com
                                            http://www.viget.com/extend
                                    http://www.speakerrate.com/bscofield
Saturday, September 12, 2009
“Comics” Is Hard:
           On Domains and Databases
           Ben Scofield – Viget Labs




Saturday, September 12, 2009
Modeling



  flickr: bunchofpants

Saturday, September 12, 2009
Biology

Saturday, September 12, 2009
Linnean taxonomy
Saturday, September 12, 2009
Kingdom
    Animalia
    Phylum
    Chordata
    Class
    Mammalia
    Order
    Carnivora
    Family
    Felidae
    Genus
    Panthera
    Species
    tigris
 flickr: pandiyan


Saturday, September 12, 2009
Animalia
    Chordata
    Mammalia
    Carnivora
    Felidae
    Panthera
    tigris
 flickr: pandiyan


Saturday, September 12, 2009
kingdom   phylum     class




                           genus    family    order




                         species   organism




Saturday, September 12, 2009
Problem
                         The levels are imaginary


Saturday, September 12, 2009
subphylum

                               kingdom                phylum                   class

                                                                 superclass            subclass


                                         subfamily                suborder
                                                                                       superorder
                                genus                  family                  order

         subgenus                                                superfamily


                                         subspecies

                               species                organism

                                           variety




Saturday, September 12, 2009
subphylum

                               kingdom                phylum                   class




                                                      ?
                                                                 superclass            subclass


                                         subfamily                suborder
                                                                                       superorder
                                genus                  family                  order

         subgenus                                                superfamily


                                         subspecies

                               species                organism

                                           variety




Saturday, September 12, 2009
subspecies

                     taxon taxon taxon   species                organism

                                                     variety




Saturday, September 12, 2009
Species
   flickr: cpurrin1

Saturday, September 12, 2009
Reproductive Isolation
   flickr: superciliousness

Saturday, September 12, 2009
Reproductive Isolation
   flickr: superciliousness

Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
flickr: chiotsrun

Saturday, September 12, 2009
flickr: niznoz

Saturday, September 12, 2009
Numerical taxonomy
Saturday, September 12, 2009
Cladistics
Saturday, September 12, 2009
taxon clade taxon   organism




Saturday, September 12, 2009
Problem
                      Cladistics is historical and
                          counter-intuitive

Saturday, September 12, 2009
flickr: goellnitz

Saturday, September 12, 2009
flickr: goellnitz
          pcoin

Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
The Challenge
                   Unclear, imprecise domain


Saturday, September 12, 2009
Comics

Saturday, September 12, 2009
publisher   title   issue




Saturday, September 12, 2009
Saturday, September 12, 2009
publisher   imprint   title




                                              issue




Saturday, September 12, 2009
Saturday, September 12, 2009
publisher   imprint    title




                                    issue     volume




Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
publisher   imprint            title




                                    issue             volume




                                              trade




Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
publisher             imprint            title




                                              issue             volume




                                    variant             trade




Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
name




                        publisher             imprint            title




                                              issue             volume




                                    variant             trade




Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
name




                        publisher              imprint               title




                                                ?
                                                issue
                                              nested set?
                                                                    volume




                                    variant                 trade




Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
imprint




                                     ?!?!
                        publisher                 title              name




                                                 issue
                         storyline                                   volume
                                               nested set?




                                     variant                 trade




Saturday, September 12, 2009
science fiction
          noir       horror
     independent
                Martial Arts   genres?
               historical
                Pirate              superhero

Saturday, September 12, 2009
imprint    publisher




                     @#&*!
                                        title      name


                           genre


                                       issue
                                                   volume
                                     nested set?




                         storyline    variant      trade




Saturday, September 12, 2009
The Challenge
                               Complete insanity


Saturday, September 12, 2009
Alternatives
                                 databases unite!




  #?forben
Saturday, September 12, 2009
http://thisisindexed.com/2009/02/just-because-you-can-doesnt-mean-you-should/
Saturday, September 12, 2009
Key-Value

Saturday, September 12, 2009
Redis            Tokyo Cabinet
                               Project Voldemort
                                Cassandra*
Saturday, September 12, 2009
require "rubygems"
                   require "tokyocabinet"

                   include TokyoCabinet

                   bdb = BDB::new # B-Tree database; keys may have multiple values
                   bdb.open("casket.bdb", BDB::OWRITER | BDB::OCREAT)

                   # store records in the database, allowing duplicates
                   bdb.putdup("key1", "value1")
                   bdb.putdup("key1", "value2")
                   bdb.put("key2", "value3")
                   bdb.put("key3", "value4")

                   # retrieve all values
                   p bdb.getlist("key1")
                   # => ["value1", "value2"]

                   # range query, find all matching keys
                   p bdb.range("key1", true, "key3", true)
                   # => ["key1", "key2", "key3"]




  http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/
Saturday, September 12, 2009
Biology   x

                               Comics    x

Saturday, September 12, 2009
Configuration   ✓
                                 Caching      ✓
                               Translations   ✓

Saturday, September 12, 2009
Saturday, September 12, 2009
Document

Saturday, September 12, 2009
Saturday, September 12, 2009
{
                       'name':'Ben Scofield',
                       'adjective':'awesomesauce'
                }

                {
                       'name':'Magic Pony',
                       'description':'It is a *lie*!'
                }




Saturday, September 12, 2009
class Question
                  include MongoMapper::Document

                      key :number, Integer, :required => true
                      key :text,   String, :required => true

                  many :choices
                end

                class Choice
                  include MongoMapper::EmbeddedDocument

                  key :text, String, :required => true
                end




Saturday, September 12, 2009
Saturday, September 12, 2009
Biology   ✓

                               Comics    x

Saturday, September 12, 2009
{
                      ‘kingdom’:‘Animalia’,
                      ‘phylum’:‘Chordata’,
                      ‘subphylum’:‘Vertebrata’,
                      ‘class’:‘Mammalia’,
                      ‘subclass’:‘Eutheria’,
                      ‘order’:‘Carnivora’,
                      ‘family’:‘Felidae’,
                      ‘subfamily’:‘Panthernae’,
                      ‘genus’:‘Pantera’,
                      ‘species’:‘tigris’,
                      ‘name’:‘Wanda’
                }



Saturday, September 12, 2009
{
                      ‘kingdom’:‘Animalia’,
                      ‘subkingdom’:‘Eumetazoa’,
                      ‘phylum’:‘Chordata’,
                      ‘subphylum’:‘Vertebrata’,
                      ‘class’:‘Mammalia’,
                      ‘subclass’:‘Theria’,
                      ‘order’:‘Carnivora’,
                      ‘suborder’: ‘Caniformia’,
                      ‘family’:‘Canidae’,
                      ‘subfamily’:‘Caninae’,
                      ‘tribe’:‘Canini’,
                      ‘genus’:‘Canis’,
                      ‘species’:‘lupus’,
                      ‘subspecies’:‘familiaris’,
                      ‘name’:‘Daisy’
                }

Saturday, September 12, 2009
class Question
                  include MongoMapper::Document

                      key :number, Integer, :required => true
                      key :text,   String, :required => true

                  many :choices
                end

                class Choice
                  include MongoMapper::EmbeddedDocument

                  key :text, String, :required => true
                end




Saturday, September 12, 2009
Saturday, September 12, 2009
Graph

Saturday, September 12, 2009
AllegroGraph
                               Java     Java / Lisp



Saturday, September 12, 2009
http://neotechnology.com/why-neo

Saturday, September 12, 2009
http://markorodriguez.com/Lectures_files/risk-symposium2009.pdf
Saturday, September 12, 2009
flickr: 9948354@N08

Saturday, September 12, 2009
Biology   ✓

                               Comics    ✓

Saturday, September 12, 2009
Animalia


                                            ...


                                          Felidae
                                                        subfamilyof


                                         genusof              Panthernae

                                                         genusof
                                         Panthera


                                         speciesof


                                           tigris


                                         member


                                           001


                                   age    name       weight



                               3          Wanda                  300



Saturday, September 12, 2009
Animalia


                                                        ...


                                                      Felidae
                                                                    subfamilyof


                                                     genusof              Panthernae

                                                                     genusof
                                                     Panthera



                               species               speciesof
                                             type

                                                       tigris
                                                        010

                                             name
                                tigris               member


                                                       001


                                               age    name       weight



                                         3            Wanda                  300



Saturday, September 12, 2009
Group IV


                                 orderof


                               Picornavirales



                                 familyof


                               Picornaviridae



                                 genusof


                               Rhinovirus


                                speciesof

                                  human
                               rhinovirus A


                                 member


                                   002



Saturday, September 12, 2009
class        Mammalia     Group IV        group
                                                  orderof      orderof


                                                 Carnivora   Picornavirales



                                                 familyof      familyof


                                                  Felidae    Picornaviridae
                                   subfamilyof


                               Panthernae        genusof       genusof

                                     genusof
                                                 Panthera    Rhinovirus


                                                 speciesof    speciesof

                                                                human
                                                   tigris
                                                             rhinovirus A


                                                 member        member


                                                   001           002




Saturday, September 12, 2009
DC
                                                              imprintof


                                                   titleof                DC Universe


                                Green                          titleof
                                                    001
                               Lantern   nameof
                                                                            genreof
                                                  volumeof   genreof


                                                  Volume 1                  Sci Fi
                                                                           Superhero
                                                              genreof


                                                   issueof   genreof


                                                    002            precedes             Issue #2



                                         number    coverof


                                 #1                 003




Saturday, September 12, 2009
require 'neo4j'

                Neo4j::Transaction.run do
                  dc = Neo4j::Node.new
                  dc[:name] = 'DC'

                    dc_universe = Neo4j::Node.new
                    dc_universe[:name] = 'DC Universe'

                    dc.relationships.outgoing(:imprints) << dc_universe

                    rel = dc.relationships.outgoing(:imprints).first
                    rel[:started] = 1980

                    vol1 = Neo4j::Node.new
                    vol1[:started] = 1941
                    vol1[:ended]   = 1949
                    vol1[:name]    = 'Green Lantern'

                    dc.relationships.outgoing(:titles) << vol1
                    dc_universe.relationships.outgoing(:titles) << vol1

                  # ...
                end




Saturday, September 12, 2009
Other Options

Saturday, September 12, 2009
Column-Oriented




                               http://internetmindmap.com/database_software
Saturday, September 12, 2009
Column-Oriented
                                    Temporal


                               http://internetmindmap.com/database_software
Saturday, September 12, 2009
Column-Oriented
                                    Temporal
                                    Constant

                               http://internetmindmap.com/database_software
Saturday, September 12, 2009
Column-Oriented
                                    Temporal
                                    Constant
                                       ?
                               http://internetmindmap.com/database_software
Saturday, September 12, 2009
I am your databases... combined!
  flickr: joriel

Saturday, September 12, 2009
Saturday, September 12, 2009
Saturday, September 12, 2009
post
                               tag
                                     document id




                                                   {
                                                       'title':'Post Title'
                                                       'content':'Hello!'
                                                       'comments':["First!"]
                                                   }




Saturday, September 12, 2009
Saturday, September 12, 2009
{
                                   'name':'...'
                                   'attr1':'...'
                                   'attr7':'...'
                               }




Saturday, September 12, 2009
The power is yours


  flickr: joriel

Saturday, September 12, 2009
Thank You
                                                   ben scofield - @bscofield
                                                    http://benscofield.com
                                             http://www.viget.com/extend
                                     http://www.speakerrate.com/bscofield
Saturday, September 12, 2009

WindyCityRails - "Comics" Is Hard