mongodb and mysql which one is a better fit for me
play

MongoDB and Mysql: Which one is a better fit for me? Room 204 - - PowerPoint PPT Presentation

MongoDB and Mysql: Which one is a better fit for me? Room 204 - 2:20PM-3:10PM About us Adamo Tonete MongoDB Support Engineer Agustn Gallego MySQL Support Engineer Agenda What are MongoDB and MySQL; NoSQL


  1. MongoDB and Mysql: Which one is a better fit for me? Room 204 - 2:20PM-3:10PM

  2. About us ● Adamo Tonete ○ MongoDB Support Engineer ● Agustín Gallego ○ MySQL Support Engineer

  3. Agenda ● What are MongoDB and MySQL; ● NoSQL and Relational concepts; ● Main differences between MySQL and MongoDB; ● MongoDB and MySQL similarities; ● Query Language; ● Performance comparison; ● Security; ● Best usage cases; ● Q&A

  4. What are MongoDB and MySQL

  5. What is MongoDB ● Document Oriented Database ● NoSQL ● Open source ● It is currently the most common NoSQL database out there. ● High Performance Database ● Different storage engines for different use cases

  6. What is MySQL ● Relational Database Management System ● The "M" in LAMP stack ● Second most popular RDBMS ○ According to DB-Engines' ranking ● Its architecture supports use of different storage engines ● Many different kinds of topologies used: ○ Master - Slave ○ Master - Master (active and passive) ○ Multimaster - Slave ○ Ring replication ○ Tree or pyramid ○ Multimaster Cluster (Group Replication or Galera Cluster)

  7. NoSQL and Relational concepts

  8. Database Concept A database is an organized collection of: ● Data ● Schemas ● Tables ● Queries ● Reports ● Views ● Other elements. Wikipedia

  9. Relational Database Concept ● Written in the early 70s ● Records and attributes define relations ● Uses normalizations ● SQL Language ● Procedures ● Triggers ● Foreign keys ● Transactions - ACID

  10. Non-Relational Database Concept ● Started in the 2000s; ● Non-relational concept. No tables or normalization; ● Query language is different than standard SQL; ● Made for new programming languages. ● Fast development; ● Relies on CAP theorem.

  11. Main differences between MySQL and MongoDB

  12. Differences between MongoDB and MySQL ● Some features we will compare: ○ Normalization ○ Transactions ○ Query language ○ Data storage and retrieval ○ Indexes differences ○ How to distribute and scale

  13. How different is MongoDB from MySQL/RDBS ● NoSQL and SQL are not enemies ○ they are meant to complete each other 
 ● While MongoDB is a young NoSQL database, MySQL is a mature relational database. ● In some cases, using MongoDB as the main database is not the best thing to do. ● However, MongoDB can offer a very fast growing environment without too much effort.

  14. How different is MongoDB from MySQL/RDBS ● Comparing Data distribution: 
 ○ MongoDB expects data to grow beyond machine limitations. ○ MySQL does have a few add-ons to allow data distribution among instances. ○ MySQL expects to work in a single machine (at least for writes). ○ MongoDB doesn't allow ACID transactions, but it works with the CAP theorem.

  15. Normalization Normal forms ● MongoDB features best practices to organize your data, but there are no hard rules to do so. ● MySQL strongly suggests using 3rd normal form (3NF) to avoid data duplication.

  16. Normalization @ each intersection is a single scalar value

  17. Normalization { 
 "_id" : ObjectId("507f1f77bcf86cd799439011"), 
 "studentID" : 100, 
 "firstName" : "Jonathan", 
 "middleName" : "Eli", 
 "lastName" : "Tobin", 
 "classes" : [ 
 { "courseID" : "PHY101", 
 "grade" : "B", 
 "courseName" : "Physics 101", 
 "credits" : 3 }, 
 { "courseID" : "BUS101", 
 "grade" : "B+", 
 "courseName" : "Business 101", 
 "credits" : 3 } 
 ] }

  18. ACID transactions ● What is ACID? ○ Atomicity ■ transactions should function as a single, indivisible unit of work ○ Consistency ■ the database should always move from one consistent state to the next ○ Isolation ■ the results of a transaction are (usually) invisible to other transactions until the transaction is finished ○ Durability ■ once committed, a transaction's changes are permanent

  19. ACID transactions ● How is ACID represented in MySQL? ○ Atomicity ■ if autocommit=ON (default), every statement is committed immediately ■ if not, COMMIT or ROLLBACK should be used explicitly ○ Consistency ■ uses the doublewrite buffer and crash recovery ○ Isolation ■ various isolation levels from which to choose from: RU, RC, RR and S ○ Durability ■ there are many configuration options available for this, among which are: innodb_flush_log_at_trx_commit and sync_binlog

  20. ACID transactions ● How is ACID represented in MongoDB? ○ Atomicity ■ single document level & no snapshotting for reads ○ Consistency ■ primary = strong ■ secondaries = your choice ○ Isolation ■ not really, but $isolated can help ○ Durability ■ configurable w:majority and/or j:true

  21. CAP theorem ● CAP theorem was proposed by Eric Allen in 2000 ● A distributed system can't have the 3 guarantees at the same time. One must be sacrificed

  22. CAP theorem ● Consistence A ● Availability ● Partition Tolerant Anyone will get the same response, data is consistent among instances C P

  23. CAP theorem ● Consistence A ● Availability ● Partition Tolerant System will always respond to requests, no downtime. C P

  24. CAP theorem ● Consistence A ● Availability ● Partition Tolerant System can handle errors (network, hardware failure) C P

  25. CAP theorem A Relational Databases 
 Cassandra 
 MySQL 
 Riaki Postgres C P MongoDB 
 Redis

  26. Data Storage and Data Retrieval ● MySQL has predefined table definitions ● Each column can have one (and only one) data type assigned to it ● There are some limits imposed: ○ columns: 4096 ○ row length: 64 Kb ○ these can change depending on which storage engine is used ● SQL is a declarative language ● We can tell MySQL what we want, without worrying about how it is looked for ● From the application side, there are connectors available for communicating with the server ○ https://www.mysql.com/products/connector/

  27. Data Storage and Data Retrieval ● Unlike MySQL, MongoDB doesn't have a predefined schema but it does use declarative query language. ● Documents can have different fields with different data types, for example {x : 1, y : ['test']} and {x : 'percona', y : ISODate('2018-01-01')} are both valid MongoDB documents for the same collection.

  28. Data Storage and Data Retrieval ● MongoDB doesn't use 3rd form normalization but MySQL does. ● All documents must contain as much information as possible. There are no joins , only linked documents. ● Max document size is 16 MB.

  29. Comparing topologies ● Replica-sets ● Clusters and shards ● Master Slave

  30. Scalability ● What is scalability? ○ "the ability to add capacity by adding resources" ● Scale up (a.k.a.: vertically) ○ improve hardware resources ● Scale out (a.k.a.: horizontally) ○ add more nodes

  31. Scalability ● MongoDB: ○ uses shards to scale writes ○ uses secondaries to scale reads ● MySQL: ○ can use partitioning and sharding to scale writes (but it's not easy to implement) ○ uses slaves to scale reads

  32. MongoDB and MySQL similarities

  33. How similar is MongoDB to MySQL ● But these databases are not completely different ● They share: ○ Security ○ Indexing ○ Multi-user access ○ Concurrency

  34. How similar is MongoDB to MySQL ● Database terms and concept mapping MySQL MongoDB Database Database Table Collection Row Document Column Key

  35. How similar is MongoDB to MySQL Security: ● Granular security level ● User roles Different storage engines: ● Both mongodb and MySQL share the idea of pluggable storage engine ● MongoDB engines are: WiredTiger, MMAPv1, InMemory, RocksDB ● MySQL engines are: InnoDB, MyISAM, MyRocks, Memory, and many more

  36. Query Language

  37. Query Language ● We will compare mongo SQL and mysql SQL languages briefly ● and we'll see simple workflow for both: ○ create schema ○ create table ○ insert into table ○ select from table ○ update and delete ○ select with join (mysql only)

  38. Query Language - MySQL

  39. Query Language - MySQL

  40. SQL Definition https://dev.mysql.com/doc/refman/5.7/en/select.html

  41. MongoDB Query Language

  42. "NoSQL" Query Language ● NoSQL ● CQL ● Graph ● Javascript

  43. Security

  44. Security ● Both databases feature user and roles as well as enhanced security such as LDAP integration, certificates, and audits ● Percona Server for MongoDB and Percona Server for MySQL do offer entreprise-grade authentication plugins for free

  45. Security - MongoDB ● MongoDB has roles since version 2.4 ● Currently we can set collection at table level granularity ● LDAP is only available on MongoDB Enterprise but Percona server comes with this plugin free of charge. ● Audit plugin

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend