You are on page 1of 25

NoSQL Databases

NoSQL Concepts, Redis, MongoDB, CouchDB

Svetlin Nakov
Manager Technical Training
http://www.nakov.com
Telerik Software Academy
academy.telerik.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
2
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”?
4
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
5
Relational vs. NoSQL Models
Relational Model Document Model
Name Svetlin Nakov
Name: Svetlin Nakov
Gender male
Gender: male
Phone +359333777555
Email nakov@abv.bg Phone: +359333777555

Site www.nakov.com Address:


* - Street: Al. Malinov 31
1
Street Al. Malinov 31 - Post Code: 1729
Post Code 1729 - Town: Sofia
* - Country: Bulgaria
1
Town Sofia Email: nakov@abv.bg
* Site: www.nakov.com
1
Country Bulgaria
6
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
8
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
9
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));
}
10
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
13
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
14
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;

15
MongoLab
Live Demo
CouchDB
JSON-based Document
Database 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
18
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

19
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"}
);

20
Cloudant
Live Demo
NoSQL Databases

курсове и уроци по програмиране, уеб дизайн – безплатно BG Coder - онлайн състезателна система - online judge
курсове и уроци по програмиране – Телерик академия форум програмиране, форум уеб дизайн
уроци по програмиране и уеб дизайн за ученици ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET

http://academy.telerik.com
програмиране за деца – безплатни курсове и уроци ASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
безплатен SEO курс - оптимизация за търсачки алго академия – състезателно програмиране, състезания
курсове и уроци по програмиране, книги – безплатно от Наков курс мобилни приложения с iPhone, Android, WP7, PhoneGap
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop Дончо Минков - сайт за програмиране
free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране
безплатен курс "Качествен програмен код"
безплатен курс "Разработка на софтуер в cloud среда" C# курс, програмиране, безплатно
Exercises
1. Register for a free Cloudant account at
https://cloudant.com.
2. 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
23
Exercises (2)
3. 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
4. Implement the previous task ("Dictionary") with
MongoDB (register at MongoLab or MongoHQ)

24
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

You might also like