Download Demo

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

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

SAP IQ wikipedia, lookup

Business intelligence wikipedia, lookup

Database wikipedia, lookup

Operational transformation wikipedia, lookup

Microsoft SQL Server wikipedia, lookup

Search engine indexing wikipedia, lookup

SQL wikipedia, lookup

Relational model wikipedia, lookup

PL/SQL wikipedia, lookup

Database model wikipedia, lookup

Clusterpoint 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