nosql databases
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 PresentationTRANSCRIPT
NoSQL DatabasesNoSQL Concepts, Redis, MongoDB, CouchDB
Svetlin Nakov
Telerik Software Academyacademy.telerik.com
Manager Technical Traininghttp://www.nakov.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 DatabasesOverview, 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
*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
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
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:
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));}
Redis on a Local Machine
Live 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
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
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;
MongoDB on aLocal Machine
Live 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. 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
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
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 schoolacademy.telerik.com
Telerik Software Academy academy.telerik.com
Telerik Academy @ Facebook facebook.com/TelerikAcademy
Telerik Software Academy Forums forums.academy.telerik.com