Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
NoSQL: Azure Table Storage & MongoDB 
Alternativas y escenarios de uso NoSQL 
@erincon Eladio Rincón 
Director Relacional ...
Agenda 
Bases de datos relacionales y NoSQL 
Microsoft Azure Table Storage 
– Fundamentos MSATS 
– Diseño de NoSQL con MSA...
NoSQL: Azure Table Storage & MongoDB 
BDD Relacionales y NoSQL 
Almacenamiento de table de Azure (MSATS) 
MongoDB 
Escenar...
BDD Relacionales y NoSQL 
Las BDD Relacionales lideran el conjunto de sistemas 
de almacenamiento transaccional, escritura...
Donde gasta el tiempo RDBMS en TPCC 
http://static.cs.brown.edu/courses/csci2270/papers/looking-glass.pdf
Teorema de CAP 
7
Teorema de CAP: Selección de variables 
8
NoSQL 
Next Generation Databases mostly addressing 
some of the points: being non-relational, 
distributed, open-source an...
NoSQL Evolución y características 
• Surgen a principios de 2009 
• Crecimiento exponencial. 
• Características comunes má...
Modelos de datos NoSQL 
http://www.slideshare.net/emileifrem/nosql-east-a-nosql-overview-and-the-benefits-of-graph-databas...
Grandes familias NoSQL 
• Wide Column Store / Column Families 
• Document Store 
• Key Value / Tuple Store 
• Graph Databa...
DEMO 
13 
http://nosql-database.org 
Bases de datos NoSQL (listado)
NoSQL: Azure Table Storage & MongoDB 
BDD Relacionales y NoSQL 
Almacenamiento de table de Azure (MSATS) 
MongoDB 
Escenar...
Almacenamiento de table Azure 
Windows Azure Table Service 
Windows Azure tables 
Designing Windows Azure Tables 
Implemen...
Cuentas de almacenamiento MSA 
User creates a globally unique storage account name 
Choose the primary location to host st...
DEMO 
17 
Aprovisionamiento de una 
cuenta de almacenamiento 
de Azure
Características MSATS 
• Tabla de almacenamiento de Azure 
• Colección de entidades (parejas clave, valor) 
• La entidad t...
Abstracciones MSATS 
19
DEMO 
20 
Aplicación 
https://haveibeenpwned.com/
Entidades del MSATS 
Entities are the basic data item stored in a table 
Collections of properties that are name value pai...
Entidades: Tipos de datos de propiedades 
• Byte[] 
• Bool 
• DateTime 
• Double 
• Guid 
• Int32/Int 
• Int64/long 
• Str...
Entidades: Indexación (Primary Key) 
• PartitionKey property 
• RowKey property 
• Timestamp property 
23
Características de las propiedades PK 
• Tablas particionadas para soportar balanceo de carga 
entre nodos de almacenamien...
Características de las propiedades RowKey 
RowKey 
• The row key is a unique identifier for an entity within 
a given part...
MSATS es una BDD sin esquema 
26 
PartitionKey: str 
2012102517USR91 
P 
V 
RowKey: str 
jobid0121 
P 
V 
TimeStamp: dt 
2...
Consulta del servicio de tabla 
27 
PartitionKey: str 
2012102517USR91 
P 
V 
RowKey: str 
jobid0121 
P 
V 
TimeStamp: dt ...
Particiones (nodos) MSATS 
28
Partitions and Partition Ranges
DEMO 
Acceso a un sistema MSATS 
en producción 
30
Table Storage Design 
Define your model 
Key selection 
31
Key selection: Considerations 
Entity Group Transactions 
Scalability 
Efficient queries 
32
DEMO 
33 
Gestión de tablas con cliente 
Windows
Modelo de programación 
Windows Azure Storage: Connection Strings 
Managing tables in WATS 
Entities: CRUD operations (Cre...
Connection Strings in Visual Studio 2013 
Double click on the Web/Worker role in the solution 
© 2012 SolidQ 35
Managing tables in WATS 
Use Microsoft.WindowsAzure.StorageClient. There are 
several ways of creating tables. 
Initialize...
Entidades: Operaciones CRUD 
Configurar las entidades (modelo de clases) 
Configurar un DataContext 
37
Configuración de las entidades 
Class modeling 
38
Operaciones CRUD 
Setting up data context 
Context class is required in .NET to access the WAT 
using WCF Data Services an...
Entities CRUD operations 
List, Add, Update 
// List (read) operation for GE06LEntry entities 
public IEnumerable<GE06LEnt...
Consultar MSATS 
Single Entity (a.k.a. Point Queries) 
41 
var q = ( 
from pais in context.CreateQuery<Pais>(tableName) 
w...
Consultar MSATS 
Range Queries - Row Range Scan 
var q = ( 
from movie in context.CreateQuery<Movie>(tableName) 
where 
mo...
Consultar MSATS 
Range Queries - Partition Range Scan 
43 
var q = ( 
from movie in context.CreateQuery<Movie>(tableName) ...
Consultar MSATS 
Full Table Scan 
var q = (from movie in context.CreateQuery<Movie>(tableName) 
44 
select movie ); 
var q...
DEMO 
45 
Programación de MSATS
NoSQL: Azure Table Storage & MongoDB 
BDD Relacionales y NoSQL 
Almacenamiento de table de Azure (MSATS) 
MongoDB 
Escenar...
MongoDB 
Motivación 
• ¿”Problemas” en RDBMs tradicionales? 
47 
• Transaciones 
• JOINs 
• Prescindimos de ellos 
• Trans...
MongoDB 
Unidad de Información es el Documento 
48
MongoDB: Otro Paradigma 
49 
• Filosofía Schema On-Read 
• El Esquema es importante (aunque laxo) 
• En algún momento nece...
MongoDB: Conceptos Clave 
• Aunque veamos JSON, almacenado en binario 
50 
– BSON 
• Consola de administración  JavaScrip...
DEMO 
51 
MongoDB en Azure con 
correos electrónicos
NoSQL: Azure Table Storage & MongoDB 
BDD Relacionales y NoSQL 
Almacenamiento de table de Azure (MSATS) 
MongoDB 
Escenar...
Escenarios 
Aplicaciones altamente escalables que necesitan 
consultas sencillas y rápidas 
• ONU, datos georeferenciados,...
NoSQL: Azure Table Storage & MongoDB 
BDD Relacionales y NoSQL 
Almacenamiento de table de Azure (MSATS) 
MongoDB 
Escenar...
Costes 
Microsoft Azure Table Storage 
MongoDB on Azure 
55
NoSQL: Azure Table Storage & MongoDB 
Bases de datos relacionales y NoSQL 
Microsoft Azure Table Storage 
– Fundamentos MS...
Si quieres disfrutar de las mejores sesiones de 
nuestros mentores de España y Latino América, 
ésta es tu oportunidad. 
h...
Upcoming SlideShare
Loading in …5
×

No SQL MSATS MongoDB | SolidQ Summit 2014

628 views

Published on

http://summit.solidq.com
En un track de motor relacional una sesión NoSQL puede resultar extraña. En esta sesión mostraremos cómo funcionan estas tecnologías con dos aproximaciones diferentes: almacenamiento clave-valor en la nube (Azure) y almacenamiento orientado a documento (MongoDB). Evaluaremos y debatiremos sobre las dos tecnologías y su uso adecuado.
Presentación realizada por Miguel López y Eladio Rincón.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No SQL MSATS MongoDB | SolidQ Summit 2014

  1. 1. NoSQL: Azure Table Storage & MongoDB Alternativas y escenarios de uso NoSQL @erincon Eladio Rincón Director Relacional MCT, MVP SQL Server @augurarte Miguel López Director Cloud | mlopez@solidq.com MCT, MCPD, MCTS, MCP 1
  2. 2. Agenda Bases de datos relacionales y NoSQL Microsoft Azure Table Storage – Fundamentos MSATS – Diseño de NoSQL con MSATS – Programación del modelo MongoDB – Fundamentos – Diseño de NoSQL con MongoDB – Programación del modelo Escenarios Evaluación de costes 3
  3. 3. NoSQL: Azure Table Storage & MongoDB BDD Relacionales y NoSQL Almacenamiento de table de Azure (MSATS) MongoDB Escenarios Costes
  4. 4. BDD Relacionales y NoSQL Las BDD Relacionales lideran el conjunto de sistemas de almacenamiento transaccional, escritura atómica, indexación de columnas, optimización de consultas y lenguaje de consulta declarative orientado a conjuntos. Las BDD NoSQL se emplean de forma generalizada en sitios Web de tipo social masivamente accedidos y que necesitan escalar de forma intensiva, donde la característica principal son conjuntos de datos simples (frente a consultas complejas) © 2012 SolidQ 5
  5. 5. Donde gasta el tiempo RDBMS en TPCC http://static.cs.brown.edu/courses/csci2270/papers/looking-glass.pdf
  6. 6. Teorema de CAP 7
  7. 7. Teorema de CAP: Selección de variables 8
  8. 8. NoSQL Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable. http://NoSQL-database.org 9
  9. 9. NoSQL Evolución y características • Surgen a principios de 2009 • Crecimiento exponencial. • Características comunes más importantes: • No se basan en esquema • Soporte de replicación sencillo • API de fácil utilización • Consistencia parcial (eventually consistent) / BASE (not ACID) • Enormes cantidades de información. • "nosql" es traducido tradicionalmente como "not only sql“, y se considera un alias que referencia la definición anterior. 10
  10. 10. Modelos de datos NoSQL http://www.slideshare.net/emileifrem/nosql-east-a-nosql-overview-and-the-benefits-of-graph-databases 11
  11. 11. Grandes familias NoSQL • Wide Column Store / Column Families • Document Store • Key Value / Tuple Store • Graph Databases • Multimodel Databases • Object Databases • Grid & Cloud Database Solutions • XML Databases • Multidimensional Databases • Multivalue Databases • Event Sourcing • Network Model 12
  12. 12. DEMO 13 http://nosql-database.org Bases de datos NoSQL (listado)
  13. 13. NoSQL: Azure Table Storage & MongoDB BDD Relacionales y NoSQL Almacenamiento de table de Azure (MSATS) MongoDB Escenarios Costes
  14. 14. Almacenamiento de table Azure Windows Azure Table Service Windows Azure tables Designing Windows Azure Tables Implementing Windows Azure Tables Querying Windows Azure Tables Accessing table storage Table Storage Security – Set container permissions. – Use Shared Access Signatures (SAS) – Stored Access Policies 15
  15. 15. Cuentas de almacenamiento MSA User creates a globally unique storage account name Choose the primary location to host storage account Three regions: – “North Central US”, “South Central US” – “North Europe”, “Europe West” – “South East Asia”, “East Asia” Table Service: http://myaccount.table.core.windows.net 16
  16. 16. DEMO 17 Aprovisionamiento de una cuenta de almacenamiento de Azure
  17. 17. Características MSATS • Tabla de almacenamiento de Azure • Colección de entidades (parejas clave, valor) • La entidad tiene una clave principal y un conjunto aleatorio no definido (schema-less) de propiedades. • PartitionKey (Particionamiento / distribución de carga / escalado) • RowKey (conjuntos de filas relacionadas en una partición) • TimeStamp (Sólo lectura, TS creación) • Una propiedad es un par de nombre/valor (con tipo) similar a una columna • MSATS no fuerza la creación o validación de esquema • El desarrollador necesitará implementar un esquema concreto para su acceso 18
  18. 18. Abstracciones MSATS 19
  19. 19. DEMO 20 Aplicación https://haveibeenpwned.com/
  20. 20. Entidades del MSATS Entities are the basic data item stored in a table Collections of properties that are name value pairs. Each entity has 3 fixed properties called PartitionKey, RowKey and Timestamp. If we were to map this to concepts in a conventional database system, an entity is analogous to a row and property is analogous to a column. An entity can have up to 255 – 3 properties = 252 (3 system properties are reserved). 1 Entity = 1 MB of data (Maximum) 21
  21. 21. Entidades: Tipos de datos de propiedades • Byte[] • Bool • DateTime • Double • Guid • Int32/Int • Int64/long • String 22
  22. 22. Entidades: Indexación (Primary Key) • PartitionKey property • RowKey property • Timestamp property 23
  23. 23. Características de las propiedades PK • Tablas particionadas para soportar balanceo de carga entre nodos de almacenamiento. • Las entidades se organizan por partición. • Una partición es un rango consecutive de entidades con la misma clave de partición. • Partition key: Identificador único de partición dentro de una tabla. • PK es la primera parte de la clave principal de una entidad. • PK puede ser una cadena de hasta 1KB de tamaño. • Incluir PartitionKey property en cada insert, update, y delete. 24
  24. 24. Características de las propiedades RowKey RowKey • The row key is a unique identifier for an entity within a given partition. • Together the PartitionKey and RowKey uniquely identify every entity within a table. • The row key is a string value that may be up to 1 KB in size. • You must include the RowKey property in every insert, update, and delete operation. 25
  25. 25. MSATS es una BDD sin esquema 26 PartitionKey: str 2012102517USR91 P V RowKey: str jobid0121 P V TimeStamp: dt 201210251715 P V Name: st User_91 P V PartitionKey: str 2012102517USR10 P V RowKey: str jobid0121 P V TimeStamp: dt 201210251735 P V Status: st Processing P V Name: st User_10 P V PartitionKey: str 2012102517USR10 P V RowKey: str jobid0125 P V TimeStamp: dt 201210251755 P V RoleExec: st IN_121 P V Name: st User_10 P V LastOp: st Decrypt P V PartitionKey: str 2012102517USR13 P V RowKey: str jobid0002 P V TimeStamp: dt 201210251759 P V Name: st User_13 P V PartitionKey: str 2012102517USR13 P V RowKey: str jobid0001 P V TimeStamp: dt 201210251755 P V Name: st User_13 P V Status: st Aborted P V TABLE JOBEXECUTION
  26. 26. Consulta del servicio de tabla 27 PartitionKey: str 2012102517USR91 P V RowKey: str jobid0121 P V TimeStamp: dt 201210251715 P V Name: st User_91 P V PartitionKey: str 2012102517USR10 P V RowKey: str jobid0121 P V TimeStamp: dt 201210251735 P V Status: st Processing P V Name: st User_10 P V PartitionKey: str 2012102517USR10 P V RowKey: str jobid0125 P V TimeStamp: dt 201210251755 P V RoleExec: st IN_121 P V Name: st User_10 P V LastOp: st Decrypt P V PartitionKey: str 2012102517USR13 P V RowKey: str jobid0002 P V TimeStamp: dt 201210251759 P V Name: st User_13 P V PartitionKey: str 2012102517USR13 P V RowKey: str jobid0001 P V TimeStamp: dt 201210251755 P V Name: st User_13 P V Status: st Aborted P V TABLE JOBEXECUTION
  27. 27. Particiones (nodos) MSATS 28
  28. 28. Partitions and Partition Ranges
  29. 29. DEMO Acceso a un sistema MSATS en producción 30
  30. 30. Table Storage Design Define your model Key selection 31
  31. 31. Key selection: Considerations Entity Group Transactions Scalability Efficient queries 32
  32. 32. DEMO 33 Gestión de tablas con cliente Windows
  33. 33. Modelo de programación Windows Azure Storage: Connection Strings Managing tables in WATS Entities: CRUD operations (Create, read, update, delete) Querying tables Perform Entity Group Transactions (EGT) 34
  34. 34. Connection Strings in Visual Studio 2013 Double click on the Web/Worker role in the solution © 2012 SolidQ 35
  35. 35. Managing tables in WATS Use Microsoft.WindowsAzure.StorageClient. There are several ways of creating tables. Initialize tables once: for example using session or Application start events. Use CreateCloudTableClient to interact with WATS For example, to create a table called ‘Products’: 36 using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.StorageClient; var clAccount; clAccount = CloudStorageAccount.FromConfigurationSettings(“ProductStorage") var tableClient = clAccount.CreateCloudTableClient(); tableClient.CreateTableIfNotExists(“Products”)
  36. 36. Entidades: Operaciones CRUD Configurar las entidades (modelo de clases) Configurar un DataContext 37
  37. 37. Configuración de las entidades Class modeling 38
  38. 38. Operaciones CRUD Setting up data context Context class is required in .NET to access the WAT using WCF Data Services and the correspondent entity (GE06LDataEntry). 39 namespace GE06L_Data { public class GE06LDataContext : TableServiceContext { public GE06LDataContext(string baseAddress, Microsoft.WindowsAzure.StorageCredentials credentials) : base(baseAddress, credentials) {} public IQueryable<GE06LEntry> GE06LEntry { get { return this.CreateQuery<GE06LEntry>(“GE06LEntry");} } } }
  39. 39. Entities CRUD operations List, Add, Update // List (read) operation for GE06LEntry entities public IEnumerable<GE06LEntry> GetGE06LEntries() { var results = from g in this.context.GE06LEntry where g.PartitionKey == DateTime.UtcNow.ToString("MMddyyyy") 40 select g; return results; } // Add operation for GE06LEntry entities public void AddGE06LEntry(GE06LEntry newItem) { this.context.AddObject(“GE06LEntry", newItem); this.context.SaveChanges(); } // Update operation for GE06LEntry entities public void UpdateFileURL(string partitionKey, string rowKey, string fileUrl) { var results = from g in this.context.GE06LEntry where g.PartitionKey == partitionKey && g.RowKey == rowKey select g; var entry = results.FirstOrDefault<GE06LEntry>(); entry.FilelUrl = fileUrl; this.context.UpdateObject(entry); this.context.SaveChanges(); }
  40. 40. Consultar MSATS Single Entity (a.k.a. Point Queries) 41 var q = ( from pais in context.CreateQuery<Pais>(tableName) where pais.PartitionKey == “Paises“ && pais.RowKey == “España" select movie);
  41. 41. Consultar MSATS Range Queries - Row Range Scan var q = ( from movie in context.CreateQuery<Movie>(tableName) where movie.PartitionKey == "Action" && movie.RowKey.CompareTo("Alien") >= 0 && movie.RowKey.CompareTo("Terminator") <= 0 && movie.IsFavorite select movie ); © 2012 SolidQ 42
  42. 42. Consultar MSATS Range Queries - Partition Range Scan 43 var q = ( from movie in context.CreateQuery<Movie>(tableName) where movie.PartitionKey == "Action" && movie.RowKey.CompareTo("Alien") >= 0 && movie.RowKey.CompareTo("Terminator") <= 0 && movie.IsFavorite select movie );
  43. 43. Consultar MSATS Full Table Scan var q = (from movie in context.CreateQuery<Movie>(tableName) 44 select movie ); var q = (from movie in context.CreateQuery<Movie>(tableName) where movie.PartitionKey.CompareTo("Action") != 0 select movie ); var q = ( from movie in context.CreateQuery<Movie>(tableName) where movie.IsFavorite select movie); var q = (from movie in context.CreateQuery<Movie>(tableName) where movie.RowKey.CompareTo("Sh") >= 0 && movie.RowKey.CompareTo("Si") < 0 select movie );
  44. 44. DEMO 45 Programación de MSATS
  45. 45. NoSQL: Azure Table Storage & MongoDB BDD Relacionales y NoSQL Almacenamiento de table de Azure (MSATS) MongoDB Escenarios Costes
  46. 46. MongoDB Motivación • ¿”Problemas” en RDBMs tradicionales? 47 • Transaciones • JOINs • Prescindimos de ellos • Transacciones a nivel de documento • No dejamos hacer JOINs
  47. 47. MongoDB Unidad de Información es el Documento 48
  48. 48. MongoDB: Otro Paradigma 49 • Filosofía Schema On-Read • El Esquema es importante (aunque laxo) • En algún momento necesitas “modelar” • Antes o después • Modelos Mapeados en Memoria • “Cerveza con alcohol vs cerveza sin alcohol” by Garrigós • Importante arquitectura x64!
  49. 49. MongoDB: Conceptos Clave • Aunque veamos JSON, almacenado en binario 50 – BSON • Consola de administración  JavaScript y JSON • Varios GUI tipo SSMS • Drivers de Mongo para facilitar desarrollo • Driver para C# y usar LINQ • Modelos de persistencia para mapeo • MongoRepository • Sharding y Replicasets
  50. 50. DEMO 51 MongoDB en Azure con correos electrónicos
  51. 51. NoSQL: Azure Table Storage & MongoDB BDD Relacionales y NoSQL Almacenamiento de table de Azure (MSATS) MongoDB Escenarios Costes
  52. 52. Escenarios Aplicaciones altamente escalables que necesitan consultas sencillas y rápidas • ONU, datos georeferenciados, info calculada • Energética, metadatos • BIG Data, datos temporales/sensores • Información social / redes sociales • Aplicaciones de localización de correos, direcciones, etc. 53
  53. 53. NoSQL: Azure Table Storage & MongoDB BDD Relacionales y NoSQL Almacenamiento de table de Azure (MSATS) MongoDB Escenarios Costes
  54. 54. Costes Microsoft Azure Table Storage MongoDB on Azure 55
  55. 55. NoSQL: Azure Table Storage & MongoDB Bases de datos relacionales y NoSQL Microsoft Azure Table Storage – Fundamentos MSATS – Diseño de NoSQL con MSATS – Programación del modelo MongoDB – Fundamentos – Diseño de NoSQL con MongoDB – Programación del modelo Escenarios Evaluación de costes 56
  56. 56. Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com Síguenos: 58

×