SlideShare a Scribd company logo
Mongo
Papers
Articles
Dissertations
144.000.000
Mongo
NoSQL
no ␣ SQL
S3
...
Mongo
♥Mongo
♥Scala
1
Scala
  ⬍
Mongo
Java driver
✗ Easy to use, hard to misuse
✗ When in Rome, do as the romans do
✗ Don't make the client do anything
  the library could do
Java driver
✗ Easy to use, hard to misuse
✗ When in Rome, do as the romans do
✗ Don't make the client do anything
  the library could do                ☑
Casbah
✗ Easy to use, hard to misuse
✓ When in Rome, do as the romans do
✗ Don't make the client do anything the library
    could do
✗   Obey the principle of least astonishment
Casbah
✗ Easy to use, hard to misuse
✓ When in Rome, do as the romans do
✗ Don't make the client do anything the library
    could do
✗   Obey the principle of least astonishment
                      Leaky abstractions
codes: [ “foo”, “bar” ]


obj.as[BasicDBList]("codes")
  .toList
  .map(_.asInstanceOf[String])

  Don’t make me think
Casbah:
coll.findOne(“name” $ne “wilfred”)

Mongo:
db.coll.findOne({ name : { $ne : “wilfred” } })

☹ Casbah:
coll.findOne(
  MongoDBObject(“name” -> “wilfred”)
)
             Don’t make me think!
Mongo:
db.coll.findOne({ name : “wilfred”})
Casbah
✗ Easy to use, hard to misuse
✓ When in Rome, do as the romans do
✗ Don't make the client do anything the
✗
    library could do
    Obey the principle of least
    astonishment
                                          ☑
Salat
✗ Easy to use, hard to misuse
✓ When in Rome, do as the romans do
✓ Don't make the client do anything the
✗
✗
✓
    library could do
    Obey the principle of least astonishment
    Control
    Symmetry
                                               ☒
Rogue
Beaucatcher
    Lift
 Subset ?
Mongo
Homegrown
obj.insert[Metadata]
 ("metadata", doc.metadata)

obj.extract[Metadata]
 ("metadata")

       Doesn’t make me think!
2
Versioning
Version 1
            {
                street: “Lingedijk”,
                housenumber: 132
            }


                            ⬍
Version 2




            { address: “Lingedijk 132” }
{
    version: 1,
    street: “Lingedijk”,
    housenumber: 132
}                            Read time
                 ➡         reconciliation

     Memory
{
                 ➡
    version: 2,
    address: “Lingedijk 132”
}
Rollback
3
Object
mapping
Subclasses in
different collections
Conclusion
♥ Scala
♥ Mongo
☹ Libraries
✎ Versioning D.I.Y.
☼ Composition

More Related Content

PPTX
CoffeeScript - An Introduction
Manvendra Singh
 
PDF
Node.js et NPM: de la récupération de dépendances à la publication de paquets
Frank Rousseau
 
PDF
Vagrant
Fedir RYKHTIK
 
PDF
Node.js for Rubists
Sagiv Ofek
 
PPT
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Develcz
 
PDF
Emacs talk
Agam Brahma
 
PDF
Drupal + selenium
hernanibf
 
DOC
Qtp wsh scripts examples
Ramu Palanki
 
CoffeeScript - An Introduction
Manvendra Singh
 
Node.js et NPM: de la récupération de dépendances à la publication de paquets
Frank Rousseau
 
Vagrant
Fedir RYKHTIK
 
Node.js for Rubists
Sagiv Ofek
 
Riki Fridrich - Grunt, Gulp a spol. - Automatizáciou k maximalizácii lenivosti
Develcz
 
Emacs talk
Agam Brahma
 
Drupal + selenium
hernanibf
 
Qtp wsh scripts examples
Ramu Palanki
 

What's hot (20)

PDF
XForms and eXist: A Perfect Couple
ebruchez
 
KEY
Setup ruby
jugyo kohno
 
PDF
Dear JavaScript... - Alessandro Cinelli - Codemotion Amsterdam 2018
Codemotion
 
KEY
Introduction to JRuby
Vagmi Mudumbai
 
PDF
Asynchronous PHP and Real-time Messaging
Steve Rhoades
 
KEY
MongoDB at RuPy
Mike Dirolf
 
PDF
MongoDB shell games: Here be dragons .. and JavaScript!
Stennie Steneker
 
PDF
Ast transformations
Andres Almiray
 
KEY
MongoDB Strange Loop 2009
Mike Dirolf
 
PPT
Introduction to Clojure - EDGE Lviv
zenyk
 
PDF
Javascriptbootcamp
oscon2007
 
RTF
Constructor in detail
HSS-Software House
 
PDF
rush, the Ruby shell and Unix integration library
Adam Wiggins
 
PDF
FPBrno 2018-05-22: Reason intro
Functional Programming Brno
 
KEY
MongoDB at RubyEnRails 2009
Mike Dirolf
 
PDF
Stack problems
bodokaiser
 
PDF
JavaScript Language Paradigms
Jason Harwig
 
PDF
Couchdb Nosql
elliando dias
 
PDF
Node.js Introduction
Kentucky JavaScript Users Group
 
PDF
구름 이야기(Feat. gcp) - 구글클라우드(GCP) 활용 사례
Seongyun Byeon
 
XForms and eXist: A Perfect Couple
ebruchez
 
Setup ruby
jugyo kohno
 
Dear JavaScript... - Alessandro Cinelli - Codemotion Amsterdam 2018
Codemotion
 
Introduction to JRuby
Vagmi Mudumbai
 
Asynchronous PHP and Real-time Messaging
Steve Rhoades
 
MongoDB at RuPy
Mike Dirolf
 
MongoDB shell games: Here be dragons .. and JavaScript!
Stennie Steneker
 
Ast transformations
Andres Almiray
 
MongoDB Strange Loop 2009
Mike Dirolf
 
Introduction to Clojure - EDGE Lviv
zenyk
 
Javascriptbootcamp
oscon2007
 
Constructor in detail
HSS-Software House
 
rush, the Ruby shell and Unix integration library
Adam Wiggins
 
FPBrno 2018-05-22: Reason intro
Functional Programming Brno
 
MongoDB at RubyEnRails 2009
Mike Dirolf
 
Stack problems
bodokaiser
 
JavaScript Language Paradigms
Jason Harwig
 
Couchdb Nosql
elliando dias
 
Node.js Introduction
Kentucky JavaScript Users Group
 
구름 이야기(Feat. gcp) - 구글클라우드(GCP) 활용 사례
Seongyun Byeon
 
Ad

Viewers also liked (11)

PDF
Spring ME
Wilfred Springer
 
PDF
Spring ME JavaOne
Wilfred Springer
 
PPT
Interactive Powerpoint Project
doomsj
 
PPT
Mlsbooktalks
donnajohns
 
PDF
NoSQL Rollercoaster
Wilfred Springer
 
PPT
Escuela Normal Superior Del Estado
guestc48621
 
PPT
Portada Nadal
ariafp10
 
PDF
Simplicity
Wilfred Springer
 
PPT
El Alegre Barrendero
profesorivan3
 
PPT
Interactive Powerpoint Project
doomsj
 
PDF
Breaking Through the Talent Barrier
Service Strategies
 
Spring ME
Wilfred Springer
 
Spring ME JavaOne
Wilfred Springer
 
Interactive Powerpoint Project
doomsj
 
Mlsbooktalks
donnajohns
 
NoSQL Rollercoaster
Wilfred Springer
 
Escuela Normal Superior Del Estado
guestc48621
 
Portada Nadal
ariafp10
 
Simplicity
Wilfred Springer
 
El Alegre Barrendero
profesorivan3
 
Interactive Powerpoint Project
doomsj
 
Breaking Through the Talent Barrier
Service Strategies
 
Ad

Similar to Mongo (20)

PDF
What do you mean, Backwards Compatibility?
Trisha Gee
 
PPTX
Intro To Mongo Db
chriskite
 
PDF
Querying Mongo Without Programming Using Funql
MongoDB
 
PPTX
Mongodb introduction and_internal(simple)
Kai Zhao
 
PDF
Full metal mongo
Israel Gutiérrez
 
PDF
MongoDB: a gentle, friendly overview
Antonio Pintus
 
PDF
Building Apps with MongoDB
Nate Abele
 
KEY
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
PPT
Tech Gupshup Meetup On MongoDB - 24/06/2016
Mukesh Tilokani
 
KEY
Mongo NYC PHP Development
Fitz Agard
 
KEY
Modeling Data in MongoDB
lehresman
 
ODP
MongoDB - A Document NoSQL Database
Ruben Inoto Soto
 
PPTX
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rick Copeland
 
KEY
MongoDB EuroPython 2009
Mike Dirolf
 
KEY
Introduction to MongoDB
Alex Bilbie
 
PPTX
Webinar: Back to Basics: Thinking in Documents
MongoDB
 
KEY
MongoDB
Steven Francia
 
KEY
MongoDB at ZPUGDC
Mike Dirolf
 
KEY
MongoDB London PHP
Mike Dirolf
 
PDF
Mongodb at-gilt-groupe-seattle-2012-09-14-final
MongoDB
 
What do you mean, Backwards Compatibility?
Trisha Gee
 
Intro To Mongo Db
chriskite
 
Querying Mongo Without Programming Using Funql
MongoDB
 
Mongodb introduction and_internal(simple)
Kai Zhao
 
Full metal mongo
Israel Gutiérrez
 
MongoDB: a gentle, friendly overview
Antonio Pintus
 
Building Apps with MongoDB
Nate Abele
 
MongoDB, PHP and the cloud - php cloud summit 2011
Steven Francia
 
Tech Gupshup Meetup On MongoDB - 24/06/2016
Mukesh Tilokani
 
Mongo NYC PHP Development
Fitz Agard
 
Modeling Data in MongoDB
lehresman
 
MongoDB - A Document NoSQL Database
Ruben Inoto Soto
 
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rick Copeland
 
MongoDB EuroPython 2009
Mike Dirolf
 
Introduction to MongoDB
Alex Bilbie
 
Webinar: Back to Basics: Thinking in Documents
MongoDB
 
MongoDB at ZPUGDC
Mike Dirolf
 
MongoDB London PHP
Mike Dirolf
 
Mongodb at-gilt-groupe-seattle-2012-09-14-final
MongoDB
 

More from Wilfred Springer (9)

PDF
Unfiltered Unveiled
Wilfred Springer
 
PPTX
Scala in your organisation
Wilfred Springer
 
KEY
Unfiltered Unveiled
Wilfred Springer
 
PDF
Byzantine Generals
Wilfred Springer
 
PDF
Eventually Consistent
Wilfred Springer
 
KEY
Into the Wild
Wilfred Springer
 
PDF
OOPSLA Talk on Preon
Wilfred Springer
 
PDF
Preon (J-Fall 2008)
Wilfred Springer
 
Unfiltered Unveiled
Wilfred Springer
 
Scala in your organisation
Wilfred Springer
 
Unfiltered Unveiled
Wilfred Springer
 
Byzantine Generals
Wilfred Springer
 
Eventually Consistent
Wilfred Springer
 
Into the Wild
Wilfred Springer
 
OOPSLA Talk on Preon
Wilfred Springer
 
Preon (J-Fall 2008)
Wilfred Springer
 

Recently uploaded (20)

PDF
Doc9.....................................
SofiaCollazos
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
Doc9.....................................
SofiaCollazos
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Simple and concise overview about Quantum computing..pptx
mughal641
 

Mongo

Editor's Notes