Presentation is loading. Please wait.

Presentation is loading. Please wait.

WTT Workshop de Tendências Tecnológicas 2014

Similar presentations


Presentation on theme: "WTT Workshop de Tendências Tecnológicas 2014"— Presentation transcript:

1 WTT 2014 - Workshop de Tendências Tecnológicas 2014

2 Agenda NoSQL Concepts MongoDB Concepts MongoDB Demos

3 NoSQL databases? Alternative to traditional relational DBMS
“NoSQL” = “No SQL” = Not using traditional relational DBMS “No SQL”  Don’t use SQL language Alternative to traditional relational DBMS Flexible schema Quicker/cheaper to set up Massive scalability Relaxed consistency  higher performance & availability No declarative query language  more programming Relaxed consistency  fewer guarantees

4 NoSQL Systems Document Stores Data model: (key, document) pairs
Map Reduce Framework Originally from Google, open source Hadoop Key-Values-Stores Google BigTable, Amazon Dynamo, Cassandra, HBase, … Document Stores Data model: (key, document) pairs Document: JSON, XML, other semistructured formats CouchDB, MongoDB, SimpleDB, … Graph Database Systems Neo4j, FlockDB, Pregel, … Big-Table Implementation Teradata, Exadata, GreenPlum, MonetDB, … Map Reduce Framework Originally from Google, open source Hadoop No data model, data stored in files User provides specific functions as Map Reduce Key-Values-Stores Data model: (key, value) pairs Some allow (non-uniform) columns within value Document Stores Data model: (key, document) pairs Document: JSON, XML, other semistructured formats Graph Database Systems Data model: nodes and edges Single-step versus “path expressions” versus full recursion Big-Table Implementation Data model: RDBM Column stores x Row stores

5 ACID versus BASE ACID  Atomicity, Consistency, Isolation, Durability  Traditional Databases CAP Strong Consistency + High Availability + Partition-tolerance The CAP-Theorem postulates that only two of the three different aspects of scaling out are can be achieved fully at the same time. Many of the NOSQL  BASE Basically Available, Soft-state, Eventually consistent  ACID (Atomicity, Consistency, Isolation, Durability)  Traditional Databases Scaling out of ACID-compliant systems has shown to be a problem. Conflicts are arising between the different aspects of high availability in distributed systems that are not fully solvable.   CAP Strong Consistency: all clients see the same version of the data, even on updates to the dataset - e. g. by means of the two-phase commit protocol (XA transactions), and ACID, High Availability: all clients can always find at least one copy of the requested data, even if some of the machines in a cluster is down, Partition-tolerance: the total system keeps its characteristic even when being deployed on different servers, transparent to the client. The CAP-Theorem postulates that only two of the three different aspects of scaling out are can be achieved fully at the same time. Many of the NOSQL databases above all have loosened up the requirements on Consistency in order to achieve better Availability and Partitioning. This resulted in systems know as BASE(Basically Available, Soft-state, Eventually consistent)

6 Quiz. NoSQL Applications ?
[ ] Web Log Analysis URL, timestamp, number of accesses [ ] Social-network graphs user1, user2, Find friends of a friends [ ] Wikipedia Pages Large collections, structured and unstructured data [ ] Twitter messages unstructured data [ ] Blog maintenance unstructured data [ ] Account credits and debts

7 MongoDB MongoDB (from "humongous") is an open-source document database, and the leading NoSQL database. Written in C++, MongoDB features Document-Oriented Storage Querying Full Index Support Replication & High Availability Auto-Sharding Map/Reduce Geospatial support Text Search

8 DB-Engines Ranking

9 SQL to MongoDB Mapping Chart

10 JSON x SQL x BSON JSON JavaScript Object Notation. A human-readable, plain text format for expressing structured data with support in many programming languages. BSON A serialization format used to store documents and make remote procedure calls in MongoDB. “BSON” is a portmanteau of the words “binary” and “JSON”. SQL Schema Statements MongoDB Schema Statements CREATE TABLE users ( Id INT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id) ) db.users.insert( { user_id: "abc123", age: 55, status: "A" } )

11 JSON Document Model var p = { ‘_id’: ‘3432’,
‘author’: DBRef(‘User’, 2), ‘title’: ‘Introduction to MongoDB’, ‘body’: ‘MongoDB is an open sources.. ‘, ‘timestamp’: Date(’ ’), ‘tags’: [‘MongoDB’, ‘NoSQL’], ‘comments’: [{‘author’: DBRef(‘User’, 4), ‘date’: Date(’ ’), ‘text’: ‘Did you see.. ‘, ‘upvotes’: 7, … ] } > db.posts.save(p);

12 Indexes Create Index on any field in the document
// 1 means ascending, -1 means descending > db.posts.ensureIndex({‘author’: 1}); //Index Nested Documents > db.posts.ensureIndex(‘comments.author’: 1); // Index on tags > db.posts.ensureIndex({‘tags’: 1}); // Geo-spatial Index > db.posts.ensureIndex({‘author.location’: ‘2d’});

13 Queries? // find posts which has ‘MongoDB’ tag.
> db.posts.find({tags: ‘MongoDB’}); // find posts by author’s comments. > db.posts.find({‘comments.author’: DBRef(‘User’,2)}).count(); // find posts written after 31st March. > db.posts.find({‘timestamp’: {‘gte’: Date(’ ’)}}); // find posts written by authors around [22, 42] > db.posts.find({‘author.location’: {‘near’:[22, 42]}); $gt, $lt, $gte, $lte, $ne, $all, $in, $nin, count, limit, skip, group, etc…

14 Updates? Atomic Operations
db.posts.update({_id: ‘3432’}, {‘title’: ‘Introduction to MongoDB (updated)’, ‘text’: ‘Updated text’, ${addToSet: {‘tags’: ‘webinar’}}); $set, $unset MongoDB does not support TRANSACTIONS ! $push, $pull, $pop, $addToSet $inc, $decr, many more…

15 Some Cool features, but not in this lab 
• Geo-spatial Indexes for Geo-spatial queries. $near, $within_distance, Bound queries (circle, box) • Map/Reduce GROUP BY in SQL, map/reduce in MongoDB. • GridFS Stores Large Binary Files.

16 Demo: my bond girls database 

17 Demo: mongodb install C:\mongodb\bin\mongod.exe --dbpath d:\test\mongodb\data

18 Demo: mongodb as a Service

19 Demo: pymongo

20 Demo: mongolab create a account

21 Demo: after a Collection, create a document

22 Demo: find( ) with Python

23 Demo: find( ) with mongo shell

24 Demo: load a .CSV collection with mongo shell

25 Demo: results of load a .CSV collection

26 Demo: find( ) a document with mongo shell

27 Demo: find( ) a document with Python

28 Demo: find( ) select a field

29 References The little Mongodb Book by Karl Seguin
Mongodb Mongodb-as-a-Service Pymongo, mongodb drive for Python Easy Install, to install pymongo for Windows Also Pymongo driver JSON examples Account name MackLabMongoDB Username Rogerio <- USE ESTE Password xuxixaxax8 database dbmacklab1rogerio user rogerio password rogerio

30 Conclusion: When to use MongoDB
Schema-less Writes db.createCollection(‘logs’, {capped: true, size: }) NO TRANSACTIONS Data Processing ~ MapReduce Geospatial Full Text Search NoSQL + tools and maturity

31 WTT 2014 - Workshop de Tendências Tecnológicas 2014
Prof. Dr. Rogério de Oliveira


Download ppt "WTT Workshop de Tendências Tecnológicas 2014"

Similar presentations


Ads by Google