* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Demo
Survey
Document related concepts
Data vault modeling wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Semantic Web wikipedia , lookup
Expense and cost recovery system (ECRS) wikipedia , lookup
Concurrency control wikipedia , lookup
Versant Object Database wikipedia , lookup
Business intelligence wikipedia , lookup
Operational transformation wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Search engine indexing wikipedia , lookup
Relational model wikipedia , lookup
Transcript
WTT 2014 - WORKSHOP DE TENDÊNCIAS TECNOLÓGICAS 2014 Agenda NoSQL Concepts MongoDB Concepts MongoDB Demos NoSQL databases? “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 NoSQL Systems 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, … 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 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 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 DB-Engines Ranking SQL to MongoDB Mapping Chart 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. 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" } ) 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”. JSON Document Model var p = { ‘_id’: ‘3432’, ‘author’: DBRef(‘User’, 2), ‘title’: ‘Introduction to MongoDB’, ‘body’: ‘MongoDB is an open sources.. ‘, ‘timestamp’: Date(’01-04-12’), ‘tags’: [‘MongoDB’, ‘NoSQL’], ‘comments’: [{‘author’: DBRef(‘User’, 4), ‘date’: Date(’02-04-12’), ‘text’: ‘Did you see.. ‘, ‘upvotes’: 7, … ] } > db.posts.save(p); 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’}); 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(’31-03-12’)}}); // 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… Updates? Atomic Operations db.posts.update({_id: ‘3432’}, {‘title’: ‘Introduction to MongoDB (updated)’, ‘text’: ‘Updated text’, ${addToSet: {‘tags’: ‘webinar’}}); $set, $unset $push, $pull, $pop, $addToSet $inc, $decr, many more… MongoDB does not support TRANSACTIONS ! 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. Demo: my bond girls database Demo: mongodb install http://www.mongodb.org/downloads http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/ C:\mongodb\bin\mongod.exe --dbpath d:\test\mongodb\data Demo: mongodb as a Service https://mongolab.com/welcome/ Demo: pymongo Demo: mongolab create a account Demo: after a Collection, create a document Demo: find( ) with Python Demo: find( ) with mongo shell Demo: load a .CSV collection with mongo shell Demo: results of load a .CSV collection Demo: find( ) a document with mongo shell Demo: find( ) a document with Python Demo: find( ) select a field References The little Mongodb Book by Karl Seguin http://openmymind.net/mongodb.pdf Mongodb http://docs.mongodb.org/manual/reference/sql-comparison/ http://www.mongodb.org/downloads http://docs.mongodb.org/manual/installation/ http://docs.mongodb.org/manual/tutorial/getting-started-with-the-mongo-shell/ http://docs.mongodb.org/manual/ https://www.mongodb.com/reference https://university.mongodb.com Mongodb-as-a-Service https://mongolab.com/welcome/ https://www.mongohq.com/ Pymongo, mongodb drive for Python http://api.mongodb.org/python/current/installation.html http://api.mongodb.org/python/current/tutorial.html Easy Install, to install pymongo for Windows https://pypi.python.org/pypi/setuptools Conclusion: When to use MongoDB Schema-less Writes db.createCollection(‘logs’, {capped: true, size: 1048576}) NO TRANSACTIONS Data Processing ~ MapReduce Geospatial Full Text Search NoSQL + tools and maturity WTT 2014 - WORKSHOP DE TENDÊNCIAS TECNOLÓGICAS 2014 Prof. Dr. Rogério de Oliveira [email protected] http://meusite.mackenzie.br/rogerio