NoSQL Concepts, Redis, MongoDB, CouchDB Svetlin Nakov Telerik Software Academy academy.telerik.com...

25
NoSQL Databases NoSQL Concepts, Redis, MongoDB, CouchDB Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training http://www.nakov.com http://schoolacademy.telerik.c om

Transcript of NoSQL Concepts, Redis, MongoDB, CouchDB Svetlin Nakov Telerik Software Academy academy.telerik.com...

NoSQL DatabasesNoSQL Concepts, Redis, MongoDB, CouchDB

Svetlin Nakov

Telerik Software Academyacademy.telerik.com

Manager Technical Traininghttp://www.nakov.com

http://schoolacademy.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 DatabasesOverview, 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

*1

Relational vs. NoSQL Models

6

Name: Svetlin Nakov

Gender: male

Phone: +359333777555

Address:

- Street: Al. Malinov 31

- Post Code: 1729

- Town: Sofia

- Country: Bulgaria

Email: [email protected]

Site: www.nakov.com

Document ModelRelational Model

*1

*1

Name Svetlin Nakov

Gender male

Phone +359333777555

Email [email protected]

Site www.nakov.com

Country Bulgaria

Street Al. Malinov 31

Post Code

1729

Town Sofia

RedisUltra-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:

10

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 CloudLive Demo

MongoDBMature 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.com14

C# API for MongoDB

15

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;

MongoLabLive Demo

CouchDBJSON-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

20

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 = "[email protected]"});

CloudantLive Demo

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

NoSQL Databases

http://academy.telerik.com

Exercises1. 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