NoSQL Concepts, Redis, MongoDB, CouchDB

Slides:



Advertisements
Similar presentations
Windows Basic and Dynamic Disk Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator Marian Marinov CEO of 1H Ltd.
Advertisements

Amazon S 3, App Engine Blobstore, Google Cloud Storage, Azure Blobs Svetlin Nakov Telerik Software Academy academy.telerik.com.
RPN and Shunting-yard algorithm Ivaylo Kenov Telerik Software Academy academy.telerik.com Technical Assistant
Shortest paths in edge-weighted digraph Krasin Georgiev Technical University of Sofia g.krasin at gmail com Assistant Professor.
Telerik Software Academy Telerik School Academy.
Asynchronous Programming with C# and WinRT
Unleash the Power of JavaScript Tooling Telerik Software Academy End-to-end JavaScript Applications.
Telerik School Academy ASP.NET MVC.
Character sequences, C-strings and the C++ String class, Working with Strings Learning & Development Team Telerik Software Academy.
Done already for your convenience! Telerik School Academy Unity 2D Game Development.
Processing Sequences of Elements Telerik School Academy C# Fundamentals – Part 1.
C# Fundamentals – Part I
Welcome to the JSON-stores world Telerik Software Academy Databases.
Telerik Software Academy Telerik School Academy Creating E/R Diagrams with SQL Server.
The Business Plan and the Business Model Margarita Antonova Volunteer Telerik Academy academy.telerik.com Business System Analyst Telerik Corporation.
What are ADTs, STL Intro, vector, list, queue, stack Learning & Development Team Telerik Software Academy.
Making JavaScript code by template! Learning & Development Team Telerik Software Academy.
Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training Who, What, Why?
Svetlin Nakov Telerik Software Academy Manager Technical Training
Access to known folders, using pickers, writing to and reading from files, caching files for future access George Georgiev Telerik Software Academy academy.telerik.com.
Accessing SQL Server and MySQL – Live Demo Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training
Processing Matrices and Multidimensional Tables Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Learning & Development Telerik Software Academy.
Reading and Writing Text Files Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Telerik Software Academy ASP.NET Web Forms.
Classical OOP in JavaScript Classes and stuff Telerik Software Academy
Using Selenium for Mobile Web Testing Powered by KendoUI Telerik QA Academy Atanas Georgiev Senior QA Engineer KendoUI Team.
NoSQL Concepts, Redis, MongoDB, CouchDB Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training
New features: classes, generators, iterators, etc. Telerik Academy Plus JavaScript.Next.
Creating E/R Diagrams with SQL Server Management Studio and MySQL Workbench Svetlin Nakov Telerik Software Academy Manager Technical.
Telerik Software Academy ASP.NET Web Forms.
Private/Public fields, Module, Revealing Module Learning & Development Team Telerik Software Academy.
Building Data-Driven ASP.NET Web Forms Apps Telerik Software Academy ASP.NET Web Forms.
Course Introduction Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training
Telerik Software Academy End-to-end JavaScript Applications.
What is a Database, MySQL Specifics Trần Anh Tuấn Edit from Telerik Software Academy
NoSQL Databases NoSQL Concepts SoftUni Team Technical Trainers Software University
Planning and Tracking Software Quality Yordan Dimitrov Telerik Corporation Team Leader, Team Pulse, Team Leader, Team Pulse, Telerik Corporation,
What you need to know Ivaylo Kenov Telerik Corporation Telerik Academy Student.
Data binding concepts, Bindings in WinJS George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer itgeorge.net.
Pavel Kolev Telerik Software Academy Senior.Net Developer and Trainer
Objects, Properties, Primitive and Reference Types Learning & Development Team Telerik Software Academy.
ORM Concepts, Entity Framework (EF), DbContext
When and How to Refactor? Refactoring Patterns Alexander Vakrilov Telerik Corporation Senior Developer and Team Leader.
Free Training and Job for Software Engineers Svetlin Nakov, PhD Manager Technical Training Telerik Corp. Telerik Software Academy.
Free Training and Job for Software Engineers Svetlin Nakov, PhD Manager Technical Training Telerik Corp. Telerik Software Academy.
Access to known folders, using pickers, writing to and reading from files, caching files for future access George Georgiev Telerik Software Academy academy.telerik.com.
DBMS Fundamental Concepts Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training
Doing the Canvas the "easy way"! Learning & Development Telerik Software Academy.
.NET Cloud Development Made Easy George Georgiev Telerik Software Academy academy.telerik.com Technical Trainer 1.
Creating and Running Your First C# Program Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training
Course Overview Doncho Minkov Telerik Software Academy Technical Trainer
Data Types, Primitive Types in C++, Variables – Declaration, Initialization, Scope Telerik Software Academy academy.telerik.com Learning and Development.
The past, the present, the future Learning & Development Team Telerik Software Academy.
Learn to Design Error Steady Code Svetlin Nakov Telerik Software Academy academy.telerik.com Technical Trainer
Connecting, Queries, Best Practices Tran Anh Tuan Edit from Telerik Software Academy
Processing Sequences of Elements Telerik Software Academy C# Fundamentals – Part 2.
Telerik JavaScript Framework Telerik Software Academy Hybrid Mobile Applications.
Telerik Software Academy Databases.
Things start to get serious Telerik Software Academy JavaScript OOP.
Learning & Development Mobile apps for iPhone & iPad.
Processing Matrices and Multidimensional Tables Telerik Software Academy C# Fundamentals – Part 2.
Nikolay Kostov Telerik Software Academy academy.telerik.com Team Lead, Senior Developer and Trainer
Functions and Function Expressions Closures, Function Scope, Nested Functions Telerik Software Academy
Implementing Control Logic in C# Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical trainer
Mocking tools for easier unit testing Telerik Software Academy High Quality Code.
What why and how? Telerik School Academy Unity 2D Game Development.
Windows Security Model Borislav Varadinov Telerik Software Academy academy.telerik.com System Administrator
NoSQL Databases NoSQL Concepts Databases Telerik Software Academy
Presentation transcript:

NoSQL Concepts, Redis, MongoDB, CouchDB 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 MongoDB Ultra-fast data structures server Redis Cloud: managed Redis MongoDB Powerful and mature NoSQL database MongoLab: managed MongoDB in the cloud

Overview, Models, Concepts, Examples 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

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

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

Relational vs. NoSQL Models Relational Model Document Model Name Svetlin Nakov Gender male Phone +359333777555 Email nakov@abv.bg Site www.nakov.com Name: Svetlin Nakov Gender: male Phone: +359333777555 Address: - Street: Al. Malinov 31 - Post Code: 1729 - Town: Sofia - Country: Bulgaria Email: nakov@abv.bg Site: www.nakov.com * 1 Street Al. Malinov 31 Post Code 1729 * 1 Town Sofia * 1 Country Bulgaria

Ultra-Fast Data Structures Server Redis Ultra-Fast Data Structures Server

What is Redis? Redis is Redis stores data structures: 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

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

C# API for Redis ServiceStack.Redis API Sample C# code: 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)); }

Redis on a Local Machine Live Demo

Mature and Very Powerful NoSQL Database 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

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

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;

MongoDB on a Local Machine Live Demo

NoSQL Databases http://academy.telerik.com

Exercises 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/

Exercises (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.

Exercises (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.

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