Download NoSQL Databases: Redis, MongoDB, CouchDB

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Microsoft Jet Database Engine wikipedia , lookup

IMDb wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Database wikipedia , lookup

Healthcare Cost and Utilization Project wikipedia , lookup

Clusterpoint wikipedia , lookup

Relational model wikipedia , lookup

Database model wikipedia , lookup

Transcript
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
2
NoSQL Databases
Overview, Models, Concepts, Examples
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
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
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
Relational vs. NoSQL Models
Relational Model
Document Model
Name
Svetlin Nakov
Gender
male
Phone
+359333777555
Gender: male
Email
[email protected]
Phone: +359333777555
Site
www.nakov.com
*
1
Al. Malinov 31
Address:
Street
Post Code
Town
Country
1729
*
1
Sofia
*
1
Bulgaria
Name: Svetlin Nakov
- Street: Al. Malinov 31
- Post Code: 1729
- Town: Sofia
- Country: Bulgaria
Email: [email protected]
Site: www.nakov.com
7
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
9
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
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));
}
11
Redis on a Local Machine
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
14
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
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;
16
MongoDB on a
Local Machine
Live Demo
NoSQL Databases
курсове и уроци по програмиране, уеб дизайн – безплатно
курсове и уроци по програмиране – Телерик академия
уроци по програмиране и уеб дизайн за ученици
програмиране за деца – безплатни курсове и уроци
безплатен SEO курс - оптимизация за търсачки
курсове и уроци по програмиране, книги – безплатно от Наков
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop
free C# book, безплатна книга C#, книга Java, книга C#
безплатен курс "Качествен програмен код"
безплатен курс "Разработка на софтуер в cloud среда"
BG Coder - онлайн състезателна система - online judge
форум програмиране, форум уеб дизайн
ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET
ASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
алго академия – състезателно програмиране, състезания
курс мобилни приложения с iPhone, Android, WP7, PhoneGap
Дончо Минков - сайт за програмиране
Николай Костов - блог за програмиране
C# курс, програмиране, безплатно
http://academy.telerik.com
Exercises
1.
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
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 commands
You 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
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
Free Trainings @ Telerik Academy
 Telerik School Academy


Telerik Software Academy


academy.telerik.com
Telerik Academy @ Facebook


schoolacademy.telerik.com
facebook.com/TelerikAcademy
Telerik Software Academy Forums

forums.academy.telerik.com