* Your assessment is very important for improving the workof 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 [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