• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. MongoDBIntroduction to MongoDB
  • 2. Harun YardımcıSoftware Architect @ eBay@nosqlcozumler
  • 3. What is MongoDB?MongoDB is a scalable, high-performance, open-source,schema-free, document-oriented database developed by10gen.- MongoDB is named from "huMONGOus," meaning "extremely large".
  • 4. Features•  Dynamic schemas•  Full, flexible index support and rich queries•  Sharding for horizontal scalability•  Replication for high availability•  Text search•  Advanced security•  Aggregation Framework and Map-Reduce•  GridFS•  Geospatial
  • 5. TerminologyRDBMS MongoDBTable CollectionRow DocumentIndex IndexJoin Embedded DocumentForeign Key ReferencePartition ShardDatabase Database
  • 6. NoSQL Databases
  • 7. Document Database•  What is a document?o  PDF, Word document, text file?Document is an associated array
  • 8. Deployment Architecture•  Standalone•  Replica Set•  Sharded ClusterStandalone < Replica Set < Sharded Cluster** Typical sharded cluster consist of replica sets in production.
  • 9. CAP TheoremAvailabilityConsistencyPartitionToleranceN/ACAAPCPOracleMySQLPostgresMongoDBBigTableHBaseRedisMemcacheCouchDBCassandraRiakDynamoSimpleDB
  • 10. Standalone$ mongod--dbpath /data/db--fork--logappend--logpath /var/log/mongod.log--journal--port 27017
  • 11. Configuration Filevim /etc/mongod.confdbpath = /data/dbfork = truelogappend = truelogpath = /var/log/mongodb.logjournal = trueport = 27017$ mongod --config /etc/mongod.conf
  • 12. ReplicationRedundancy, Backup, and Automatic Failover•  Master / Slave (Deprecated since 1.6)•  Replica Set
  • 13. Replica Set$ mongod--dbpath /data/db--fork--logappend--logpath /var/log/mongod.log--journal--port 27017--replSet set01
  • 14. Replica Set InitializationStartup mongod process and connect to one of them> var cnf = { _id : set01, members : [{ _id : 0, host: myhost1.net:27017 },{ _id : 1, host: myhost2.net:27017 },{ _id : 2, host: myhost3.net:27017 }]}> rs.initiate(cnf)
  • 15. Replica Set•  Majority•  Voting•  Arbiters•  Hidden Members•  Delayed Members
  • 16. Application Concerns•  Write Concerno  Errors Ignoredo  Unacknowledgeo  Acknowledged (default)o  Journaledo  Replica Acknowledged•  Read Preferenceso  primaryo  primaryPreferredo  secondaryo  secondaryPreferredo  nearest
  • 17. Sharding•  Why?•  Scale-out•  Store different part of data on different hosts•  Auto Balancing
  • 18. Sharding Components•  Shardso  Standaloneo  Replica Set•  Config Servers•  Mongos
  • 19. Replica Set as a ShardAdd each replica set as a shard> sh.addShard( "set01/myhost1.net:27017, myhost2.net:27017,myhost3.net:27017" )To add standalone server as a shard.. DON’T DO IT!!> sh.addShard( "myhost9.net:27017" )
  • 20. Selecting Shard Key•  Distribution of Data•  Hashed Shard Key•  Chunks and Balancing
  • 21. Enable ShardingYou must enable sharding on each database separately> sh.enableSharding("mydatabase")And for each collection> sh.shardCollection( "mydatabase.mycol", { "userId" : 1 } )
  • 22. ThanksIf you have any questions, please feel free to ask