nosql databases

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

Upload: ajaxe

Post on 12-Feb-2016

69 views

Category:

Documents


0 download

DESCRIPTION

NoSQL Databases. 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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: NoSQL Databases

NoSQL DatabasesNoSQL Concepts, Redis, MongoDB, CouchDB

Svetlin Nakov

Telerik Software Academyacademy.telerik.com

Manager Technical Traininghttp://www.nakov.com

Page 2: NoSQL Databases

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

2

Page 3: NoSQL Databases

NoSQL DatabasesOverview, Models, Concepts, Examples

Page 4: NoSQL Databases

Non-Relational Data Models

Document model Set of documents, e.g. JSON strings

Key-value model Set of key-value pairs

Hierarchical key-value Hierarchy of key-value pairs

Wide-column model Key-value model with schema

Object model Set of OOP-style objects

4

Page 5: NoSQL Databases

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”?

5

Page 6: NoSQL Databases

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

6

Page 7: NoSQL Databases

*1

Relational vs. NoSQL Models

7

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

Page 8: NoSQL Databases

RedisUltra-Fast Data Structures Server

Page 9: NoSQL Databases

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

9

Page 10: NoSQL Databases

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

10

Page 11: NoSQL Databases

C# API for Redis ServiceStack.Redis API

github.com/ServiceStack/ServiceStack.Redis

Sample C# code:

11

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

Page 12: NoSQL Databases

Redis on a Local Machine

Live Demo

Page 13: NoSQL Databases

MongoDBMature and Very Powerful NoSQL

Database

Page 14: NoSQL Databases

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

14

Page 15: NoSQL Databases

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

15

Page 16: NoSQL Databases

C# API for MongoDB

16

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;

Page 17: NoSQL Databases

MongoDB on aLocal Machine

Live Demo

Page 18: NoSQL Databases

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

програмиране за деца – безплатни курсове и уроцибезплатен 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

Page 19: NoSQL Databases

Exercises1. Write a simple "Dictionary" application

in C# or JavaScript to perform the following in MongoDB: 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 use MongoDB-as-a-Service@ MongoLab.You may install the "Official MongoDB C# Driver" from NuGet or download it from its publisher: http://docs.mongodb.org/ecosystem/drivers/csharp/

19

Page 20: NoSQL Databases

Exercises (2)2. Implement the previous task (a simple

"Dictionary" application) using Redis.You may hold the "word + meaning pairs" in a hash (see http://redis.io/commands#hash) See the HSET, HKEYS and HGET

commandsYou may use a local Redis instance or register for a free "Redis To Go" account at https://redistogo.com.You may download the client libraries for your favorite programming language from http://redis.io/clients or use the "ServiceStack.Redis" C# client from the NuGet package manager.

20

Page 21: NoSQL Databases

Exercises (3)3. * Implement а program, which

synchronizes mouse movement and clicking between multiple computers. Users can "give control" to other users. Users sign in with username and password. Users "in control" can revoke their control. A user can be signed in on several machines at once. Store user data in MongoLab. Store the mouse sync data in the "Redis To Go" cloud.Note: In the real world data would pass through a server, as direct access from the client to the database is a security concern. This task is meant more as an experiment than a real-world scenario.

21

Page 22: NoSQL Databases

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