26
GRAPHS WITH MONGO SCOTT MESSINGER Friday, September 9, 2011

GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

GRAPHS WITH MONGOSCOTT  MESSINGER

Friday, September 9, 2011

Page 2: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

WHO AM I?

Friday, September 9, 2011

Page 3: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

WHO AM I?

Friday, September 9, 2011

Page 4: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

WHO AM I?

Friday, September 9, 2011

Page 5: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

TREE STRUCTURES

awesome_nested_set  (left/right  columns)

ancestry  (materialized  path)

acts_as_tree  (parent_id)

Friday, September 9, 2011

Page 6: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

ONE AND ONLY ONE PARENT

Friday, September 9, 2011

Page 7: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

DIRECTED ACYCLIC GRAPHNODE CAN HAVE MULTIPLE PARENTS

Friday, September 9, 2011

Page 8: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Friday, September 9, 2011

Page 9: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  A

Friday, September 9, 2011

Page 10: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  A

Multiple  Parents  :-­‐(

Sub-­‐Unit  A

Friday, September 9, 2011

Page 11: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"end

Friday, September 9, 2011

Page 12: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"end

# in a controller@unit = Unit.find(params[:id])

Friday, September 9, 2011

Page 13: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"end

# in a controller@unit = Unit.find(params[:id])@parents = Unit.where(:children_ids => @unit.id).all

Friday, September 9, 2011

Page 14: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

Friday, September 9, 2011

Page 15: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

Page 16: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

Page 17: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

Page 18: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

Friday, September 9, 2011

Page 19: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

Friday, September 9, 2011

Page 20: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

key :course_ids, Array many :courses, :in => :course_ids, :class_name => "Course"end# in a controller@unit = Unit.find(params[:id])@course = Course.find(params[:course_id])

Friday, September 9, 2011

Page 21: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

key :course_ids, Array many :courses, :in => :course_ids, :class_name => "Course"end# in a controller@unit = Unit.find(params[:id])@course = Course.find(params[:course_id])

# to find a parent@parent = Unit.where(:children_ids => @unit.id, :course_ids => @course.id).first

Friday, September 9, 2011

Page 22: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

key :course_ids, Array many :courses, :in => :course_ids, :class_name => "Course"end# in a controller@unit = Unit.find(params[:id])@course = Course.find(params[:course_id])

# to find a parent@parent = Unit.where(:children_ids => @unit.id, :course_ids => @course.id).first

Friday, September 9, 2011

Page 23: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM SOLVED

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

Page 24: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

LET’S REVIEW

Friday, September 9, 2011

Page 25: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

LET’S REVIEW

Array  keys  

make  modeling  trees  simple

give  us  order  for  free

Friday, September 9, 2011

Page 26: GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND ONLY ONE PARENT Friday, September 9, 2011. DIRECTED ACYCLIC GRAPH NODE CAN HAVE

QUESTIONS?Scott  Messinger  -­‐  @scottmessinger

[email protected]

Friday, September 9, 2011