* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Download NoSQL Databases: Redis, MongoDB, CouchDB
Survey
Document related concepts
Microsoft Jet Database Engine wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Microsoft SQL Server wikipedia , lookup
Healthcare Cost and Utilization Project wikipedia , lookup
Clusterpoint 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
nakov@abv.bg
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: nakov@abv.bg
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