SlideShare a Scribd company logo
1 of 56
Download to read offline
Building Good Relations
Using MongoDB and a relational database in your apps
Hayes Davis
  @hayesdavis
 CheapTweet.com
If you’ve already got
        an app
You probably already
  have a database
It’s probably relational




                   http://www.mbari.org/ssds/ReferenceDocuments/RDB_ER.gif
It’s probably
gotten a little
     bit big

         http://www.neonlite.ca/archives/images/big%20cat.jpg
Or maybe it’s
gotten huge



                http://www.fahad.com/pics/liger.jpg
And it’s probably
pretty complicated
                 http://www.mazes.org.uk/i/101005m.gif
Or maybe
  really
complicated

              http://tommilsom.com/wp-content/files/france/maze.jpg
Which makes it harder
     to change
                  http://twitter.com/dacort/status/11023722831
But, you’re not
going to throw
  all that out

                  http://blog.makezine.com/284163191_6f09179853_o.jpg
So let’s make NoSQL
and SQL live in harmony




               http://curiousanimals.net/wp-content/uploads/2008/03/cat-and-dog-sleep.jpg
But first...
Do you even need to?
We all want to
play with shiny
   new toys

    http://actionfan.files.wordpress.com/2009/07/voltron_metallic-vinyl-edit.jpg
But sometimes
 that’s not the
   best plan

                  http://www.pwn3d.us/wp-content/uploads/2006/11/voltron_1.jpg
So, give yourself a test
#1
Is my data relational?
#1
Are my data relational?
#2
   Do my data access
patterns lend themselves
   to denormaliation?
#3
Do I expect a lot of
 schema change?
#4
    Can I drop ACID?
(Atomicity, Consistency, Isolation, Durability)
#5
Do I want to support a
     new piece of
    infrastructure?
If you answered yes to
any of these questions...
... at least for parts of
        your app...
... then
 MongoDB
  might be
right for you

                http://www.rankopedia.com/CandidatePix/25781.gif
Where to start...
Utilities and supporting
           tools
Logging & analysis
              http://sbadrinath.files.wordpress.com/2009/03/different26rqcu3.jpg
We built Parrot




           http://filmfanatic.org/reviews/wp-content/uploads/2008/01/anfscd-parrot.png
Isolated
subsystems


             http://themarkvolta.files.wordpress.com/2009/01/lost-map.jpg
Comments might be a
   good choice
           http://www.readwriteweb.com/archives/facebook_wants_to_be_your_one_true_login.php
Getting practical
   (in Rails, at least)
Using MongoMapper
 and ActiveRecord
Getting set up
config/mongodb.yml
development:
  host: 127.0.0.1

test:
  host: 127.0.0.1

production:
  host: mongo-server.local
config/initializers/mongo.rb
# Read in the config info
mongo_cfg = YAML.load(
  IO.read("#{RAILS_ROOT}/config/mongodb.yml")
)[RAILS_ENV]

# Create the connection from mongodb.yml
args = [mongo_cfg['host'],mongo_cfg['port']].compact
MongoMapper.connection =
  Mongo::Connection.new(*conn_args)

# Pick the Mongo database
db_cfg =
  Rails.configuration.database_configuration[RAILS_ENV]
MongoMapper.database =
  mongo_cfg['database'] || db_cfg['database']
Mixing your MM with
      your AR
              http://i.treehugger.com/images/2007/10/24/frankenstein-jj-001.jpg
app/models/
preferences.rb
class Preferences

  include MongoMapper::Document

  key :user_id, Integer

end
apps/models/user.rb
class User < ActiveRecord::Base

  after_save :save_prefs

  def preferences
    @preferences ||= Preferences.find_or_create_by_user_id(id)
  end

  private
    def save_prefs
      @preferences.save if @preferences
    end

end
Usage
# Set any preferences you like
user = User.find_by_login('thatguy')
user.preferences[:foreground] = '#FF0000'
user.preferences[:foo] = 'bar'
user.save

# Later on, you can do this
user = User.find_by_login('thatguy')
user.preferences[:foreground] #returns '#FF0000'
Our general solution
active-expando
 (very, very alpha)
Any attribute, any time
# Grab a user
user = User.find(1)
# Now set an attribute that didn't exist before
user.expandos.foreground = '#FF0000'
# foreground is saved in Mongo
user.save

# Find any users with a red foreground color
users = User.expando_all(
  :conditions=>{:foreground=>'#FF0000'}
)
Skip expandos, use delegate
 class Post < ActiveRecord::Base
   expando_config do
     delegate :tags
   end
 end

 p = Post.find(1)
 p.tags = ['foo','bar']
 p.save

 # Find any Post with the tag "foo"
 Post.expando_all(:conditions=>{'tags'=>'foo'})
It’s a rails plugin
It’s on GitHub
(http://github.com/hayesdavis/active-expando)
Other issues
Where we’re going we
don’t need migrations
       (or do we?)
                     http://www.gordtep.com/files/2009/08/bttf2.jpg
Flexibility is great
   (until it bites you)
A general
word of
 caution
MongoDB is a moving
      target
So are the tools
There will be bugs




           http://nitishkrishna.files.wordpress.com/2009/07/2007_there_will_be_blood_013.jpg
So, be ready to upgrade
Questions?

More Related Content

What's hot

OSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB TutorialOSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB TutorialSteven Francia
 
Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)Kai Zhao
 
Intro To Mongo Db
Intro To Mongo DbIntro To Mongo Db
Intro To Mongo Dbchriskite
 
Mongodb and Totsy - E-commerce Case Study
Mongodb and Totsy - E-commerce Case StudyMongodb and Totsy - E-commerce Case Study
Mongodb and Totsy - E-commerce Case StudyMitch Pirtle
 
MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)Uwe Printz
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger InternalsNorberto Leite
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdbiammutex
 
Practical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo DbPractical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo DbAlex Sharp
 
MongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTigerMongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTigerValeri Karpov
 
MongoDB Pros and Cons
MongoDB Pros and ConsMongoDB Pros and Cons
MongoDB Pros and Consjohnrjenson
 
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB
 
The NoSQL Way in Postgres
The NoSQL Way in PostgresThe NoSQL Way in Postgres
The NoSQL Way in PostgresEDB
 

What's hot (20)

OSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB TutorialOSCON 2012 MongoDB Tutorial
OSCON 2012 MongoDB Tutorial
 
MongoDB
MongoDBMongoDB
MongoDB
 
Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)Mongodb introduction and_internal(simple)
Mongodb introduction and_internal(simple)
 
CouchDB introduction
CouchDB introductionCouchDB introduction
CouchDB introduction
 
Intro To Mongo Db
Intro To Mongo DbIntro To Mongo Db
Intro To Mongo Db
 
Mongodb and Totsy - E-commerce Case Study
Mongodb and Totsy - E-commerce Case StudyMongodb and Totsy - E-commerce Case Study
Mongodb and Totsy - E-commerce Case Study
 
MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)MongoDB for Coder Training (Coding Serbia 2013)
MongoDB for Coder Training (Coding Serbia 2013)
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
CouchDB
CouchDBCouchDB
CouchDB
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger Internals
 
Introduction to couchdb
Introduction to couchdbIntroduction to couchdb
Introduction to couchdb
 
Practical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo DbPractical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo Db
 
MongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTigerMongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
MongoDB Miami Meetup 1/26/15: Introduction to WiredTiger
 
MongoDB Pros and Cons
MongoDB Pros and ConsMongoDB Pros and Cons
MongoDB Pros and Cons
 
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB and hadoop
MongoDB and hadoopMongoDB and hadoop
MongoDB and hadoop
 
MongodB Internals
MongodB InternalsMongodB Internals
MongodB Internals
 
CouchDB
CouchDBCouchDB
CouchDB
 
Couch db
Couch dbCouch db
Couch db
 
The NoSQL Way in Postgres
The NoSQL Way in PostgresThe NoSQL Way in Postgres
The NoSQL Way in Postgres
 

Viewers also liked

PM processing 03 2015(eng)
PM processing 03 2015(eng)PM processing 03 2015(eng)
PM processing 03 2015(eng)Vadim Andreev
 
Tennesse.Teresa Bergera
Tennesse.Teresa BergeraTennesse.Teresa Bergera
Tennesse.Teresa Bergeramariavigarces
 
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015John Meijering ✔
 
Digital business #2
Digital business #2Digital business #2
Digital business #2finanzas_uca
 
Leermeester Centraal Leermeesterdag NN 8-3-2011
Leermeester Centraal Leermeesterdag NN 8-3-2011Leermeester Centraal Leermeesterdag NN 8-3-2011
Leermeester Centraal Leermeesterdag NN 8-3-2011Johan Lapidaire
 
clx_q4fy04_splmnt
clx_q4fy04_splmntclx_q4fy04_splmnt
clx_q4fy04_splmntfinance48
 
Crystallized040910
Crystallized040910Crystallized040910
Crystallized040910klee4vp
 
Trabalho De Matematica Completo
Trabalho De Matematica CompletoTrabalho De Matematica Completo
Trabalho De Matematica Completogueste1a09a
 
PaaSで簡単Railsアプリを公開しよう!
PaaSで簡単Railsアプリを公開しよう!PaaSで簡単Railsアプリを公開しよう!
PaaSで簡単Railsアプリを公開しよう!Yoshitake Takata
 
Code Qualität in agilen Teams - code.talks Hamburg 2015
Code Qualität in agilen Teams - code.talks Hamburg 2015Code Qualität in agilen Teams - code.talks Hamburg 2015
Code Qualität in agilen Teams - code.talks Hamburg 2015Frank Sons
 
OFE draft 9 21 mitchell baker
OFE draft  9 21 mitchell bakerOFE draft  9 21 mitchell baker
OFE draft 9 21 mitchell bakerchefhja
 
S Pr Ookjes Rsg Lingecollege 2 2011
S Pr Ookjes Rsg Lingecollege 2 2011S Pr Ookjes Rsg Lingecollege 2 2011
S Pr Ookjes Rsg Lingecollege 2 2011Johan Lapidaire
 
CALLED to Instruct Them in the Practice UofN Meeting Korea:
CALLED to Instruct Them in the Practice UofN Meeting Korea:CALLED to Instruct Them in the Practice UofN Meeting Korea:
CALLED to Instruct Them in the Practice UofN Meeting Korea:Allan Carrington
 
Kitchenbathportfolio3
Kitchenbathportfolio3Kitchenbathportfolio3
Kitchenbathportfolio3RaquelT
 
Thesis Update111909
Thesis Update111909Thesis Update111909
Thesis Update111909klee4vp
 
King Case Profiel Annemarie Kingma
King Case Profiel Annemarie KingmaKing Case Profiel Annemarie Kingma
King Case Profiel Annemarie KingmaAnnemarie Kingma
 
Metrics in the Real World | Online and Offline Analytics Tracking
Metrics in the Real World | Online and Offline Analytics TrackingMetrics in the Real World | Online and Offline Analytics Tracking
Metrics in the Real World | Online and Offline Analytics TrackingCaitlin Jeansonne
 

Viewers also liked (20)

I festival de poesias mids
I festival de poesias   midsI festival de poesias   mids
I festival de poesias mids
 
PM processing 03 2015(eng)
PM processing 03 2015(eng)PM processing 03 2015(eng)
PM processing 03 2015(eng)
 
Tennesse.Teresa Bergera
Tennesse.Teresa BergeraTennesse.Teresa Bergera
Tennesse.Teresa Bergera
 
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
 
Digital business #2
Digital business #2Digital business #2
Digital business #2
 
Leermeester Centraal Leermeesterdag NN 8-3-2011
Leermeester Centraal Leermeesterdag NN 8-3-2011Leermeester Centraal Leermeesterdag NN 8-3-2011
Leermeester Centraal Leermeesterdag NN 8-3-2011
 
clx_q4fy04_splmnt
clx_q4fy04_splmntclx_q4fy04_splmnt
clx_q4fy04_splmnt
 
Crystallized040910
Crystallized040910Crystallized040910
Crystallized040910
 
Trabalho De Matematica Completo
Trabalho De Matematica CompletoTrabalho De Matematica Completo
Trabalho De Matematica Completo
 
Allati Jo Kepek
Allati Jo KepekAllati Jo Kepek
Allati Jo Kepek
 
How To Stay Young
How To Stay YoungHow To Stay Young
How To Stay Young
 
PaaSで簡単Railsアプリを公開しよう!
PaaSで簡単Railsアプリを公開しよう!PaaSで簡単Railsアプリを公開しよう!
PaaSで簡単Railsアプリを公開しよう!
 
Code Qualität in agilen Teams - code.talks Hamburg 2015
Code Qualität in agilen Teams - code.talks Hamburg 2015Code Qualität in agilen Teams - code.talks Hamburg 2015
Code Qualität in agilen Teams - code.talks Hamburg 2015
 
OFE draft 9 21 mitchell baker
OFE draft  9 21 mitchell bakerOFE draft  9 21 mitchell baker
OFE draft 9 21 mitchell baker
 
S Pr Ookjes Rsg Lingecollege 2 2011
S Pr Ookjes Rsg Lingecollege 2 2011S Pr Ookjes Rsg Lingecollege 2 2011
S Pr Ookjes Rsg Lingecollege 2 2011
 
CALLED to Instruct Them in the Practice UofN Meeting Korea:
CALLED to Instruct Them in the Practice UofN Meeting Korea:CALLED to Instruct Them in the Practice UofN Meeting Korea:
CALLED to Instruct Them in the Practice UofN Meeting Korea:
 
Kitchenbathportfolio3
Kitchenbathportfolio3Kitchenbathportfolio3
Kitchenbathportfolio3
 
Thesis Update111909
Thesis Update111909Thesis Update111909
Thesis Update111909
 
King Case Profiel Annemarie Kingma
King Case Profiel Annemarie KingmaKing Case Profiel Annemarie Kingma
King Case Profiel Annemarie Kingma
 
Metrics in the Real World | Online and Offline Analytics Tracking
Metrics in the Real World | Online and Offline Analytics TrackingMetrics in the Real World | Online and Offline Analytics Tracking
Metrics in the Real World | Online and Offline Analytics Tracking
 

Similar to Using MongoDB and a Relational Database at MongoDB Day

Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010Christian Heilmann
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
 
Microsoft Power Point Best Practices For Scaling Heavily Adopted And Concur...
Microsoft Power Point   Best Practices For Scaling Heavily Adopted And Concur...Microsoft Power Point   Best Practices For Scaling Heavily Adopted And Concur...
Microsoft Power Point Best Practices For Scaling Heavily Adopted And Concur...Steve Feldman
 
Joomla Day Austin Part 4
Joomla Day Austin Part 4Joomla Day Austin Part 4
Joomla Day Austin Part 4Kyle Ledbetter
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsNathan Smith
 
The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)Dylan Jay
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)guestebde
 
Building great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowBuilding great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowshwetank
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...Marco Cedaro
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller ColumnsJonathan Fine
 
Building with JavaScript - write less by using the right tools
Building with JavaScript -  write less by using the right toolsBuilding with JavaScript -  write less by using the right tools
Building with JavaScript - write less by using the right toolsChristian Heilmann
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Matthew McCullough
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptIgalia
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...Marco Cedaro
 
He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!François-Guillaume Ribreau
 

Similar to Using MongoDB and a Relational Database at MongoDB Day (20)

Introduce Django
Introduce DjangoIntroduce Django
Introduce Django
 
Yahoo is open to developers
Yahoo is open to developersYahoo is open to developers
Yahoo is open to developers
 
Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
 
Microsoft Power Point Best Practices For Scaling Heavily Adopted And Concur...
Microsoft Power Point   Best Practices For Scaling Heavily Adopted And Concur...Microsoft Power Point   Best Practices For Scaling Heavily Adopted And Concur...
Microsoft Power Point Best Practices For Scaling Heavily Adopted And Concur...
 
Joomla Day Austin Part 4
Joomla Day Austin Part 4Joomla Day Austin Part 4
Joomla Day Austin Part 4
 
Use Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile AppsUse Web Skills To Build Mobile Apps
Use Web Skills To Build Mobile Apps
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)
 
10 Ways To Improve Your Code( Neal Ford)
10  Ways To  Improve  Your  Code( Neal  Ford)10  Ways To  Improve  Your  Code( Neal  Ford)
10 Ways To Improve Your Code( Neal Ford)
 
Building great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to knowBuilding great mobile apps: Somethings you might want to know
Building great mobile apps: Somethings you might want to know
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
 
Building with JavaScript - write less by using the right tools
Building with JavaScript -  write less by using the right toolsBuilding with JavaScript -  write less by using the right tools
Building with JavaScript - write less by using the right tools
 
Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2Google App Engine for Java v0.0.2
Google App Engine for Java v0.0.2
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
 
He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!
 
Rails 101
Rails 101Rails 101
Rails 101
 

Recently uploaded

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 

Using MongoDB and a Relational Database at MongoDB Day