310 likes | 684 Views
NoSQL Databases. http://schoolacademy.telerik.com. NoSQL Concepts, Redis, MongoDB, CouchDB. Svetlin Nakov. Telerik Software Academy. academy.telerik.com. Manager Technical Training. http://www.nakov.com. Table of Contents. NoSQL Databases Overview Redis Ultra-fast data structures server
E N D
NoSQL Databases http://schoolacademy.telerik.com NoSQL Concepts, Redis, MongoDB, CouchDB Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training http://www.nakov.com
Table of Contents • NoSQL Databases Overview • Redis • Ultra-fast data structures server • Redis Cloud: managed Redis • MongoDB • Powerful and mature NoSQL database • MongoLab: managed MongoDB in the cloud • CouchDB • JSON-based document database with REST API • Cloudant: managed CouchDB in the cloud
NoSQL Databases Overview, Models, Concepts, Examples
What is NoSQL Database? • NoSQL (cloud) databases • Use document-based model (non-relational) • Schema-free document storage • Still support indexing and querying • Still support CRUD operations (create, read, update, delete) • Still supports concurrency and transactions • Highly optimized for append / retrieve • Great performance and scalability • NoSQL == “No SQL” or “Not Only SQL”?
Relational vs. NoSQL Databases • Relational databases • Data stored as table rows • Relationships between related rows • Single entity spans multiple tables • RDBMS systems are very mature, rock solid • NoSQL databases • Data stored as documents • Single entity (document) is a single record • Documents do not have a fixed structure
Relational vs. NoSQL Models Relational Model Document Model Name: Svetlin Nakov Gender: male Phone: +359333777555 Address: - Street: Al. Malinov 31 - Post Code: 1729 - Town: Sofia - Country: Bulgaria Email: nakov@abv.bg Site: www.nakov.com * * * 1 1 1
Redis Ultra-Fast Data Structures Server
What is Redis? • Redis is • Ultra-fast in-memory key-value data store • Powerful data structures server • Open-source software: http://redis.io • Redis stores data structures: • Strings • Lists • Hash tables • Sets / sorted sets
Hosted Redis Providers • Redis Cloud • Fully managed Redis instance in the cloud • Highly scalable, highly available • Free 1 GB instance, stored in the Amazon cloud • Supports data persistence and replication • http://redis-cloud.com • Redis To Go • 5 MB free non-persistent Redis instance • http://redistogo.com
C# API for Redis • ServiceStack.Redis API • github.com/ServiceStack/ServiceStack.Redis • Sample C# code: string redisHost = "redis.garantiadata.com"; int redisPort = 14233; string redisPass = "some@pass0rd"; using (var redisClient = new RedisClient(redisHost, redisPort, redisPass)) { string key = "username"; string value = "nakov"; redisClient.Set<string>(key, value); Console.WriteLine(redisClient.Get<string>(key)); }
Redis Cloud Live Demo
MongoDB Mature and Very Powerful NoSQL Database
What is MongoDB? • MongoDB – http://mongodb.org • Very powerful and mature NoSQL database • Scalable, high-performance, open-source • JSON-style document storage, schemaless • Replication & high-availability support • Auto sharding – clustering & data partitioning • Indexing and powerful querying • Map-Reduce – parallel data processing • GridFS – store files of any size
Hosted MongoDB Providers • MongoLab • Free 0.5 GB instance • https://mongolab.com • MongoHQ • Free 0.5 GB instance (sandbox) • https://www.mongohq.com • MongoOd • Free 100 MB instance • https://www.mongood.com
C# API for MongoDB • The official MongoDB C# driver from 10gen • github.com/mongodb/mongo-csharp-driver • Sample C# code: var connectionStr = "mongodb://user:pass@server:part"; var client = new MongoClient(connectionSt); var server = client.GetServer(); var db = server.GetDatabase("mongodb-name"); var persons = db.GetCollection<Person>("Persons"); persons.Insert<Person>(new Person(…)); var resultPersons = from p in persons.AsQueryable<Person>() where p.Address.Town == "Sofia" select p;
MongoLab Live Demo
CouchDB JSON-based DocumentDatabase with RESTful API
What is CouchDB? • Apache CouchDB • Open-source NoSQL database • Document-based: stored JSON documents • HTTP-based API • Query, combine, and transform documents with JavaScript • On-the-fly document transformation • Real-time change notifications • Highly available and partition tolerant
Hosted CouchDB Providers • Cloudant • Managed CouchDB instances in the cloud • Free $5 account – unclear what this means • https://cloudant.com • Has nice web-based administration UI
C# API for CouchDB • Many CouchDB C# APIs • github.com/soitgoes/LoveSeat • Sample C# code: var client = new CouchClient( dbHost, dbPort, dbUsername, dbPassword, false, AuthenticationType.Cookie); var db = client.GetDatabase("some-db"); db.CreateDocument(new Person() { Name = "Svetlin Nakov", Email = "nakov@abv.bg"} );
Cloudant Live Demo
NoSQL Databases http://academy.telerik.com
Exercises • Register for a free Cloudant account at https://cloudant.com. • Write a simple "Dictionary" application in C# or JavaScript to perform the following in Cloudant: • Add a dictionary entry (word + translation) • List all words and their translations • Find the translation of given word The UI of the application is up to you (it could be Web-based, GUI or console-based). You may download a Cloudant client library from http://wiki.apache.org/couchdb/Related_Projects
Exercises (2) • Implement the previous task ("Dictionary") with Redis • Register for a free "Redis To Go" account at: https://redistogo.com • Download the client libraries for your favorite programming language from http://redis.io/clients • Implement the previous task ("Dictionary") with MongoDB (register at MongoLab or MongoHQ)
Free Trainings @ Telerik Academy • Telerik School Academy • schoolacademy.telerik.com • Telerik Software Academy • academy.telerik.com • Telerik Academy @ Facebook • facebook.com/TelerikAcademy • Telerik Software Academy Forums • forums.academy.telerik.com