nosql databases

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

Upload: august

Post on 24-Feb-2016

84 views

Category:

Documents


0 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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 NakovGender: malePhone: +359333777555Address: - Street: Al. Malinov 31 - Post Code: 1729 - Town: Sofia - Country: BulgariaEmail: [email protected]: www.nakov.com

Document ModelRelational Model

*1

*1

Name Svetlin Nakov

Gender malePhone +359333777

555Email nakov@abv.

bgSite 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.com

14

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

tolerant18

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, PhoneGapfree 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