Introducción a DocumentDb

Azure DocumentDB es un servicio de base de datos de documentos NoSQL totalmente gestionado y altamente escalable, proporcionado por Azure. Sus muchos beneficios incluyen la consulta enriquecida sobre un modelo de datos JSON libre de esquema, la ejecución transaccional de la lógica de JavaScript y el almacenamiento y el rendimiento escalables. Puedes obtener más información en el subsitio de Microsoft Azure para DocumentDB.

Creación del servicio y librerías clientes

Para utilizar Microsoft Azure DocumentDB, entra en el portal, Clica New, selecciona Database y DocumentDb, se abrirá el blade de creación.

Rellena los campos y crea el servicio. Las opciones que puedes elegir son:

Id: nombre que identifica la cuenta de DocumentDB. Este valor se convierte en el nombre de host dentro de la URI. El Id sólo puede contener letras minúsculas, números y el carácter ‘-‘, y debe tener entre 3 y 50 caracteres.

NoSql API: con esta elección puedes utilizar MongoDB sdk para interactuar con tu instancia DocumentDb, de esta forma es posible cambiar a DocumentDb el basck-end sin cambiar la aplicación cliente.

Grupo de recursos: grupo de recursos para su cuenta de DocumentDB. De forma predeterminada, se creará un nuevo grupo de recursos.

Suscripción: la suscripción de Azure que desea utilizar para la cuenta de DocumentDB. Si su cuenta tiene una sola suscripción, se seleccionará automáticamente.

Ubicación: ubicación geográfica donde se alojará su cuenta de DocumentDB.

Para utilizar DocumentDb en tu aplicación lo más sencillo es utilizar las librerías cliente que Microsoft provee gratis. Por eso utilizamos Nuget buscando por Microsoft.Azure.DocumentDB o utilizando directamente el mando: Install-Package Microsoft.Azure.DocumentDB

El modelo

Para utilizar en tú código DocumentDb, primero necesitas una clase POCO para dar forma a tu modelo de datos:

public class Item

  [JsonProperty(PropertyName = “id”)] 

  public string Id { get; set; }

  [JsonProperty(PropertyName = “name”)]

  public string Name { get; set; }

  [JsonProperty(PropertyName = “desc”)]

  public string Description { get; set; }

  [JsonProperty(PropertyName = “isComplete”)]

  public bool Completed { get; set; }

}

Todos los datos en DocumentDB se almacenan como JSON. Para controlar la forma en que JSON.NET serializa/deserializa sus objetos, puede usar el atributo JsonProperty o un JsonConverter para controlar completamente cómo se maneja la serialización.

El Identificador de documento

La propiedad más importante es ‘id’, lower case, DocumentDb utilizará esta propiedad para el identificador del documento, si no es presente o no tiene valor, la creará y asignará un GUID.

Acceder al database: el cliente

Para conectarte a DocumentDb necesitas el Url del servicio creado en el punto1 y la clave de autorización, con esta información es posible crear el cliente:

Uri endpointUri = new Uri(endpoint);

client = new DocumentClient(endpointUri, authKey);

Interrogar el servicio

El cliente os proporciona clases para interrogar el servicio, DocumentDb soporta un dialecto ‘Sql like’ y también integración con Linq.

Database query:

var db = Client.CreateDatabaseQuery()

                  .Where(d => d.Id == ‘databaseName’)

                  .FirstOrDefault();

Collection query:

var col = Client.CreateDocumentCollectionQuery(Database.SelfLink)

          .Where(c => c.Id == ‘collectionName’)

          .FirstOrDefault();

Document query:

return Client.CreateDocumentQuery<Item>(Collection.DocumentsLink)

                .Where(d => !d.Completed)

                .ToList<Item>();

Gestionar el servicio

También os proporciona métodos para gestionar el servicio de varias formas

Database

db = await Client.CreateDatabaseAsync(new Database { Id = ‘databaseName’ });

Collection:

col = await Client.CreateDocumentCollectionAsync(databaseLink, new DocumentCollection { Id = ‘collectionName’});

Document:

await Client.CreateDocumentAsync(Collection.SelfLink, item);

await Client.ReplaceDocumentAsync(doc.SelfLink, item);

await Client.DeleteDocumentAsync(doc.SelfLink);

Notas finales

El Url de database, collection y document necesarios para los métodos descritos se pueden obtener desde una instancia o calculado, de forma que no hay que ‘leer’ desde el database el objeto tan solo para generar su SelfLink: UriFactory.CreateDocumentCollectionUri y UriFactory.CreateDatabaseUri

Puedes acceder aquí para un Hands on Lab introductorio y aquí para más ejemplos.

Si quieres saber todo lo que puede hacer SOGETI bajo tecnología Microsoft, visita nuestra web.

robertograssiRoberto Grassi

. NET Senior Architect and Mobile Lead | Soluciones Microsoft | SOGETI ESPAÑA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s