martes, 30 de enero de 2018

Crear nuestro propio sistema de migración de datos para CosmosDB

Para desarrollar nuestro sistema que nos permite pasar los datos a comosdb, ocupamos crear primero un proyecto en c# con ayuda del Visual Studio. Después de crear el proyecto de tipo console app en el visual studio debemos buscar en Nuget.


  • Microsoft.Azure.DocumentDB
  • Microsoft.Azure.Graphs

Vamos a buscar en Nuget la librería de DocumentDB para guardar los documentos ahora si queremos guardarlos como un Graph podemos usar la librería Microsoft.Azure.Graphs.

Después de instalar la que necesitamos podemos iniciar a trabajar en la aplicación en c#.

Vamos a usar una pequeña tabla con datos de personas. Esta es la tabla que vamos a migrar a cosmosDB.

Ahora vamos a crear un pequeño archivo de EnityFramework para leer los datos de SQL Server

Aquí vamos a enlistar las referencias que vamos a ocupar para poder crear nuestra aplicación.


Vamos a analizar el código que estamos desarrollando


  public class Program
    {
        public static void Main(string[] args)
        {
            const string EndpointUrl = "https://ddfaa853-0ee0-4-231-b9ee.documents.azure.com:443/";
            const string PrimaryKey = "5yc3kFkmLqpVfTG2tr98Doe6zoivswJ4QZBoDS9DfUyUMmm0p2kiMI26X" +
                "XOBnakslOtIqfBpXgUChfqlooQXHQ==";
            var policy = new ConnectionPolicy()
            {
                ConnectionMode = ConnectionMode.Direct,
                ConnectionProtocol = Protocol.Tcp,
                MaxConnectionLimit = 1000
            };
            using (DocumentClient client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey, policy))
            {
                DocumentCollection graph = client.CreateDocumentCollectionIfNotExistsAsync(
                            UriFactory.CreateDatabaseUri("CosmosDBResult"), new DocumentCollection { Id = "person" }, new RequestOptions { OfferThroughput = 1000 }).Result;
                using (var db = new cosmosdbEntities())
                {
                    var dataToImport = (from p in db.people
                                        select p).ToList();

                    foreach (var currentData in dataToImport)
                    {
                        var documentToSave = "g.addV('person').property('name', '" + currentData.name + "').property('id', '" + currentData.id + "')" +
                        ".property('lastName', '" + currentData.lastName + "').property('email', '" + currentData.email + "').property('phone', '" + currentData.phone + "')";
                        IDocumentQuery<dynamic> query = client.CreateGremlinQuery<dynamic>(graph, documentToSave);
                        dynamic result = query.ExecuteNextAsync().Result;
                        Console.WriteLine(result);
                    }
                }
            }
        }
    }



Con la variable EndPoint definimos el url para acensar a nuestra base de datos y con la variable PrimaryKey se almacena la clave primaria de nuestra base de datos de cosmosdb (la cual la puede encontrar en los Keys en Azure)

En el bloque de ConnectionPolicy vamos a definir que la manera de conectar a cosmos para guardar los datos es por medio de TCP y no usando HTTP. En los proyectos que he trabajado con cosmos nos ha funcionado mejor.

Con el objeto de tipo DocumentClient podemos conéctanos a la base de datos usando los paramatros antes definidos como el URL de la base de datos, la clave y la política. Ahora el ultimo objeto no es necesario definirlo ni pasarlo (Policy).

Ahora vamos a crear un objeto DocumentCollection para apuntar a la colección donde queremos guardar los datos. En nuestro caso usamos “CosmosDBResult” como el nombre de nuestra base de datos y person como la colección donde vamos a guardar todos los documentos.

Db es el objeto que nos permite extraer los datos de SQL usando EF. Hacemos un query y leemos todos los datos.

Con el foreach vamos a crear todos los documentos que ocupamos guardar. Creando un string que representa cada uno de los vértices que vamos a crear. La etiqueta de cada vértice es “person” y cada valor lo agregamos como una propiedad. El id es el que va a identificar el documento como único.  
Después query es el que nos permite crear un Gremli query para poder guardar nuestro documento. Pasándole el documento y la colección que queremos usar.


Finalmente, client.CreateGremlinQuery nos permite ejecutar el query y guardar los documentos en cosmos. Los resultados los podemos ver en el console de Windows. 

Ahora solo nos queda ver los documentos en cosmosdb.
Si nos vamos a Azure y luego a nuestra base de datos de cosmosdb. Podemos ver un menú como el de la fotografía. Tenemos que dar clic en “Data Explorer” para poder ver nuestra base de datos y poder ver los datos. 

Podemos usar SQL o Gremlin para poder visualizar los datos.

Por ejemplo, SQL: 

Etiquetas:

domingo, 21 de enero de 2018

¿Cómo migrar los datos a cosmosDB? - Microsoft Migration tools

En mi investigación encontré dos formas para pasar datos de una base de datos de SQL a cosmosDB. La primer es usando un mirador de Microsoft que nos ayuda a pasar los datos fácilmente o podemos crear nuestra propia herramienta para migrar los datos.

Primero si queremos utilizar la herramienta de Microsoft podemos descargarla en este link 



Después se debe extraer los archivos, cuando la tarea se termina se debe abrir el ejecutable para iniciar la migración de datos

Con este migrador se puede seleccionar diferentes tipos de fuentes de datos. Por ejemplo, SQL. Lo que ocupamos es agregar el connectionString y el query que vamos a usar para leer los datos.  
En el caso de nosotros vamos a usar JSON como fuente de datos.


Ahora se debe ingresar la información de cosmosdb y el migrador se va a encargar de importar los datos en la nueva base de datos.

Al finalizar ya podemos ir al Data Explorer para poder ver como lucen nuestros datos en cosmosdb.


Etiquetas:

Competencias-habilidades y destrezas del gerente de mercadeo

Estamos viviendo en un mundo que cambia rápidamente y con retos nuevos y diferentes a los que ya conocemos. La tecnología es una parte fundamental para los negocios modernos, como en automatización de procesos, generación de herramientas para comunicarnos, análisis de datos para mejorar la toma de decisiones, etc.

Mucho de los comentarios, opiniones e información de los pequeños, medianos y grandes negocios están viajando por medio de las redes sociales. El internet tiene una gran importancia para el proceso de negocios en cualquier área que se desea desarrollar.

Seria bueno tener un entendimiento de los datos que se están generando en tiempo real en todos los diferentes sistemas de las empresas. Si se pueden entender estos datos se podría interpretar las necesidades de los clientes y poder encontrar soluciones más adecuadas para cada uno. Entender el comportamiento de los clientes va a generar una ventaja competitiva contra otras empresas.

Poder entender las necesidades reales de los clientes nos permite crear productos o soluciones mas acorde a sus necesidades. En muchas ocasiones los consumidores no saben que es los que están buscando, pero con la ayuda de la tecnología se podría encontrar.  

Actualmente por medio de las redes sociales y otras herramientas podemos aprender a leer las experiencias y necesidades de los usuarios para poder determinar lo que necesitan en muchos casos estos datos son gratuitos y los administradores deberían de aprender a utilizar esta fuente de conocimiento de nuestra nueva era. Las personas ahora por medio de las redes sociales están brindando información de servicios que necesitan, productos que quieren comprar o que ya compraron, información de sus servicios, gustos, preferencias en sus estilos de vida, si podemos leer esto podríamos mejorar la relación con nuestros clientes.

El mercado cambia tan rápido que los nuevos administradores deberían ser capaces de tomar decisiones rápidas y durante el proceso de proyectos y los procesos que se están desarrollando. El administrador que tome las decisiones mas acertadas va a tener mayor éxito. Para esto se ocupa contar con información rápida y de calidad.

Estar dispuesto a cometer errores, con una rápida recuperación, pero con la capacidad de escuchar y manejar la retroalimentación de la mejor manera. Escuchar a los clientes y los colaboradores para mejorar en todas las ares de la empresa. Las sugerencias de los clientes nos podrían dar una gran cantidad de oportunidades de mejora.

También se debe tener la capacidad de poder crecer en los momentos calves y disminuir también en los momentos que sean necesarios tanto en capital como en proyectos, ideas, etc. Para poder mantener el negocio a flote.


Me parece que los retos de un gerente de mercadeo son muy difíciles en nuestra época ya que lo único que tenemos constante es el cambio y los que sean capaces de adaptarse al cambio serán los que tengan mayores posibilidades de ganar. El futuro va a traer grandes retos que debemos de percibir y analizar para poder mantenernos en el mercado. 

Etiquetas:

miércoles, 10 de enero de 2018

¿Cómo crear una base de datos con CosmoDB?

Para nuestro ejemplo vamos a trabajar con una suscripción gratuita de cosmosdb. Para poder crear la base de datos vamos a seguir los siguientes pasos

  1. Ir a este link 
  2. Damos clic al botón que dice “Try Azure Cosmos DB for free
  3. Clic en el botón que dice crear. En este caso el que utiliza Graph
  4. Iniciamos sesión o creamos una cuenta nueva
  5. Ahora se tiene que abrir el portal de azure


Ya tenemos lista la base de datos de cosmosDB la cual estará disponible por unos 6 días. La base de datos saldrá en tu Dashboard con el nombre de la suscripción gratuita. Simplemente tenemos que dar clic a tu nueva cosmosDB para iniciar a trabajar con esta.
 

Ahora lo primero que debemos hacer es irnos para el botón de “Overview” y luego a “Add Graph”


Debemos llenar unos campos como el nombre de la base de datos y el nombre de la colección. El nombre de la base de datos es TestPerson y la colección Person.














Clic en OK y estamos listos para trabajar con la base de datos. 

Etiquetas:

domingo, 7 de enero de 2018

CosmosDB

¿Qué es comosDB? 



CosmosDB es una base de datos de Microsoft que funciona en la nube de Azure. Esta base de datos es de tipo NoSql. Permite de manera muy simple distribuir los datos en las diferentes zonas donde Azure tiene disponibles sus centros de datos.

Con cosmosDB tenemos la opción de leer datos de distintos repositorios y diferentes formatos, pero almacenarlos todos en formato de JSON.

Soporta diferentes motores para manejar los datos, como SQL API, Mongo API, Graph, etc. El formato de tipo Graph utiliza el motor de Apache TinkerPop.

Estoy trabajando en una implementación de cosmosDB y estamos utilizando TinkerPop. Este tiene muy buen rendimiento a la hora de guardar o leer los datos. Para hacer las consultas podemos usar SQL (tiene algunas limitaciones) o el lenguaje de Gremlin para leer y guardar datos también.

Tiene características muy interesantes. Lo primero es que es muy fácil de crear e iniciar la base datos. Tiene opciones para crear replicaciones a nivel global. Para el uso de la replicación con un solo clic podemos tener nuestras bases de datos en cualquier otra región de Azure.

Como no tiene una estructura rígida se puede cargar cualquier documento sin importar la estructura del mismo. Al final se van a guardar como documentos de JSON que se pueden leer con SQL o Gremlin.

Esta base de datos está diseñada para el manejo de datos de manera masiva que se podría implementar para proyectos web, móviles, IoT, etc. Otra de las ventajas que tiene es que se pueden crear funciones o procedimientos almacenados usando JavaScript como lenguaje del procedimiento.  
Microsoft tiene a disposición diferentes SDK para la implementación de cosmsoDB en lenguajes como C#, Java, Groovy, etc.


Etiquetas: