"comics" is hard: domain modeling challenges

110
Welcome

Upload: ben-scofield

Post on 27-Jan-2015

110 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: "Comics" Is Hard: Domain Modeling Challenges

Welcome

Page 2: "Comics" Is Hard: Domain Modeling Challenges

“Comics” Is Hard:Domain Modeling ChallengesBen Scofield – Viget Labs

Page 3: "Comics" Is Hard: Domain Modeling Challenges

#?forben

Page 4: "Comics" Is Hard: Domain Modeling Challenges

#?forben

Modeling

flickr: bunchofpants

Page 5: "Comics" Is Hard: Domain Modeling Challenges

Crowdsourcing

#?forben

Page 6: "Comics" Is Hard: Domain Modeling Challenges
Page 7: "Comics" Is Hard: Domain Modeling Challenges

flickr: ropesandpulleys

Page 8: "Comics" Is Hard: Domain Modeling Challenges
Page 9: "Comics" Is Hard: Domain Modeling Challenges

flickr: paopix

Page 10: "Comics" Is Hard: Domain Modeling Challenges
Page 11: "Comics" Is Hard: Domain Modeling Challenges
Page 12: "Comics" Is Hard: Domain Modeling Challenges
Page 13: "Comics" Is Hard: Domain Modeling Challenges

person rating rater

Page 14: "Comics" Is Hard: Domain Modeling Challenges

just because you candoesn’t mean you should

http://thisisindexed.com/2009/02/just-because-you-can-doesnt-mean-you-should/

Page 15: "Comics" Is Hard: Domain Modeling Challenges

just because you candoesn’t mean you should

http://thisisindexed.com/2009/02/just-because-you-can-doesnt-mean-you-should/

Page 16: "Comics" Is Hard: Domain Modeling Challenges

just because you candoesn’t mean you should

http://thisisindexed.com/2009/02/just-because-you-can-doesnt-mean-you-should/

Page 17: "Comics" Is Hard: Domain Modeling Challenges

person rating

Page 18: "Comics" Is Hard: Domain Modeling Challenges

person

avg / # ratings

Page 19: "Comics" Is Hard: Domain Modeling Challenges

The ChallengeDeciding what to model

Page 20: "Comics" Is Hard: Domain Modeling Challenges

Biology

#?forben

Page 21: "Comics" Is Hard: Domain Modeling Challenges

Linnean taxonomy

Page 22: "Comics" Is Hard: Domain Modeling Challenges

KingdomPhylumClassOrderFamilyGenusSpecies

flickr: pandiyan

Page 23: "Comics" Is Hard: Domain Modeling Challenges

AnimaliaChordataMammaliaCarnivoraFelidaePantheratigris

flickr: pandiyan

Page 24: "Comics" Is Hard: Domain Modeling Challenges

kingdom phylum class

genus family order

species organism

Page 25: "Comics" Is Hard: Domain Modeling Challenges

ProblemThe levels are imaginary

Page 26: "Comics" Is Hard: Domain Modeling Challenges

kingdom phylum class

genus family order

species organism

subphylum

superclass subclass

superordersuborder

superfamily

subfamily

subgenus

variety

subspecies

Page 27: "Comics" Is Hard: Domain Modeling Challenges

kingdom phylum class

genus family order

species organism

subphylum

superclass subclass

superordersuborder

superfamily

subfamily

subgenus

variety

subspecies

?

Page 28: "Comics" Is Hard: Domain Modeling Challenges

taxon taxontaxon species organism

variety

subspecies

Page 29: "Comics" Is Hard: Domain Modeling Challenges

Speciesflickr: cpurrin1

Page 30: "Comics" Is Hard: Domain Modeling Challenges

Reproductive Isolationflickr: superciliousness

Page 31: "Comics" Is Hard: Domain Modeling Challenges

Reproductive Isolationflickr: superciliousness

Page 32: "Comics" Is Hard: Domain Modeling Challenges

flickr: jassen

Page 33: "Comics" Is Hard: Domain Modeling Challenges
Page 34: "Comics" Is Hard: Domain Modeling Challenges
Page 35: "Comics" Is Hard: Domain Modeling Challenges

flickr: niznoz

Page 36: "Comics" Is Hard: Domain Modeling Challenges

Numerical taxonomy

Page 37: "Comics" Is Hard: Domain Modeling Challenges

Cladistics

Page 38: "Comics" Is Hard: Domain Modeling Challenges

taxon taxon organismclade

Page 39: "Comics" Is Hard: Domain Modeling Challenges

ProblemCladistics is historical and

counter-intuitive

Page 40: "Comics" Is Hard: Domain Modeling Challenges

flickr: goellnitz

Page 41: "Comics" Is Hard: Domain Modeling Challenges

flickr: goellnitzflickr: pcoin

Page 42: "Comics" Is Hard: Domain Modeling Challenges

The ChallengeUnclear, imprecise domain

Page 43: "Comics" Is Hard: Domain Modeling Challenges

comics

#?forben

Page 44: "Comics" Is Hard: Domain Modeling Challenges

publisher title issue

Page 45: "Comics" Is Hard: Domain Modeling Challenges
Page 46: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue

Page 47: "Comics" Is Hard: Domain Modeling Challenges
Page 48: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue volume

Page 49: "Comics" Is Hard: Domain Modeling Challenges
Page 50: "Comics" Is Hard: Domain Modeling Challenges
Page 51: "Comics" Is Hard: Domain Modeling Challenges
Page 52: "Comics" Is Hard: Domain Modeling Challenges
Page 53: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue volume

trade

Page 54: "Comics" Is Hard: Domain Modeling Challenges
Page 55: "Comics" Is Hard: Domain Modeling Challenges
Page 56: "Comics" Is Hard: Domain Modeling Challenges
Page 57: "Comics" Is Hard: Domain Modeling Challenges
Page 58: "Comics" Is Hard: Domain Modeling Challenges
Page 59: "Comics" Is Hard: Domain Modeling Challenges
Page 60: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue volume

tradevariant

Page 61: "Comics" Is Hard: Domain Modeling Challenges
Page 62: "Comics" Is Hard: Domain Modeling Challenges
Page 63: "Comics" Is Hard: Domain Modeling Challenges
Page 64: "Comics" Is Hard: Domain Modeling Challenges
Page 65: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue volume

tradevariant

name

Page 66: "Comics" Is Hard: Domain Modeling Challenges
Page 67: "Comics" Is Hard: Domain Modeling Challenges
Page 68: "Comics" Is Hard: Domain Modeling Challenges
Page 69: "Comics" Is Hard: Domain Modeling Challenges
Page 70: "Comics" Is Hard: Domain Modeling Challenges
Page 71: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue

nested set?volume

tradevariant

name

?

Page 72: "Comics" Is Hard: Domain Modeling Challenges

“Experience CIVIL WAR and its major tie-ins from CIVIL WAR: FRONT LINE and FANTASTIC FOUR in chronological order! ...”

Page 73: "Comics" Is Hard: Domain Modeling Challenges
Page 74: "Comics" Is Hard: Domain Modeling Challenges

publisher imprint title

issue

nested set?volume

tradevariant

name

storyline ??

Page 75: "Comics" Is Hard: Domain Modeling Challenges
Page 76: "Comics" Is Hard: Domain Modeling Challenges
Page 77: "Comics" Is Hard: Domain Modeling Challenges

publisher

imprint

title

issue

nested set?volume

tradevariant

name

storyline

@#&*!

Page 78: "Comics" Is Hard: Domain Modeling Challenges

horror

superhero

Martial Arts

noir

Pirate

science fiction

independent

historical

genres?

Page 79: "Comics" Is Hard: Domain Modeling Challenges

publisherimprint

title

issue

nested set?volume

tradevariant

name

storyline

genre@#&*!

Page 80: "Comics" Is Hard: Domain Modeling Challenges

The ChallengeComplete insanity

Page 81: "Comics" Is Hard: Domain Modeling Challenges

databases unite!

#?forben#?forben

Alternatives

flickr: ikhnaton2

Page 82: "Comics" Is Hard: Domain Modeling Challenges

http://thisisindexed.com/2009/02/just-because-you-can-doesnt-mean-you-should/

Page 83: "Comics" Is Hard: Domain Modeling Challenges

#?forben

Key-Value

Page 84: "Comics" Is Hard: Domain Modeling Challenges

Cassandra*

Tokyo CabinetRedis

Project Voldemort

Page 85: "Comics" Is Hard: Domain Modeling Challenges

require "rubygems"require "tokyocabinet" include TokyoCabinet bdb = BDB::new # B-Tree database; keys may have multiple valuesbdb.open("casket.bdb", BDB::OWRITER | BDB::OCREAT) # store records in the database, allowing duplicatesbdb.putdup("key1", "value1")bdb.putdup("key1", "value2")bdb.put("key2", "value3")bdb.put("key3", "value4") # retrieve all valuesp bdb.getlist("key1")# => ["value1", "value2"] # range query, find all matching keysp bdb.range("key1", true, "key3", true)# => ["key1", "key2", "key3"]

http://www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/

Page 86: "Comics" Is Hard: Domain Modeling Challenges

Crowdsourcing x

Biology x

Comics x

Page 87: "Comics" Is Hard: Domain Modeling Challenges

#?forben

Document

Page 88: "Comics" Is Hard: Domain Modeling Challenges
Page 89: "Comics" Is Hard: Domain Modeling Challenges

{ 'name':'Ben Scofield', 'adjective':'awesomesauce'}

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

Page 90: "Comics" Is Hard: Domain Modeling Challenges

HTTP

Page 91: "Comics" Is Hard: Domain Modeling Challenges

Crowdsourcing ✓Biology ✓Comics x

Page 92: "Comics" Is Hard: Domain Modeling Challenges

{ 'name':'Ben Scofield', 'image’:‘http://whatevs.com/ben.jpg', ‘average_rating’:‘4.667’, ‘number_of_ratings’:’3’}

Page 93: "Comics" Is Hard: Domain Modeling Challenges

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

Page 94: "Comics" Is Hard: Domain Modeling Challenges

#?forben

Graph

Page 95: "Comics" Is Hard: Domain Modeling Challenges

Java

AllegroGraphJava / Lisp

Page 96: "Comics" Is Hard: Domain Modeling Challenges

http://neotechnology.com/why-neo

Page 97: "Comics" Is Hard: Domain Modeling Challenges

http://markorodriguez.com/Lectures_files/risk-symposium2009.pdf

Page 98: "Comics" Is Hard: Domain Modeling Challenges

flickr: 9948354@N08

Page 99: "Comics" Is Hard: Domain Modeling Challenges

Crowdsourcing x

Biology ✓Comics ✓

Page 100: "Comics" Is Hard: Domain Modeling Challenges

Felidae

001

tigris

Panthera

Panthernae

member

speciesof

Wanda

name

3

age

300

weight

genusof

Animalia

...

subfamilyof

genusof

Page 101: "Comics" Is Hard: Domain Modeling Challenges

Felidae

001

tigris

Panthera

Panthernae

member

speciesof

Wanda

name

3

age

300

weight

genusof

Animalia

...

subfamilyof

genusof

010

tigris

species

name

type

Page 102: "Comics" Is Hard: Domain Modeling Challenges

Picornaviridae

002

human

rhinovirus A

Rhinovirus

member

speciesof

genusof

Picornavirales

familyof

Group IV

orderof

Page 103: "Comics" Is Hard: Domain Modeling Challenges

Picornaviridae

002

human rhinovirus A

Rhinovirus

member

speciesof

genusof

Picornavirales

familyof

Group IV

orderof

Felidae

tigris

Panthera

Panthernae

speciesof

genusof

subfamilyof

genusof

001

member

Carnivora

familyof

Mammalia

orderof

class group

Page 104: "Comics" Is Hard: Domain Modeling Challenges

DC

001

DC Universe

titleof

imprintof

titleof

Volume 1

volumeof

Green

Lantern nameof

Sci Fi

genreof

genreof

genreof

002

issueof genreof

Superhero

Issue #2precedes

003

coverof

#1

number

Page 105: "Comics" Is Hard: Domain Modeling Challenges

#?forbenflickr: joriel

Hybrid Solutions

Page 106: "Comics" Is Hard: Domain Modeling Challenges

Configuration ✓Caching ✓

Translations ✓

Page 107: "Comics" Is Hard: Domain Modeling Challenges
Page 108: "Comics" Is Hard: Domain Modeling Challenges
Page 109: "Comics" Is Hard: Domain Modeling Challenges

tagpost

document id

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

Page 110: "Comics" Is Hard: Domain Modeling Challenges

Thank You

ben scofield - @bscofield - http://www.viget.com/extend - http://www.speakerrate.com/bscofield

http://www.speakerrate.com/talks/1169