Base de Datos No SQL y Windows Azure

30
1 Bases de datos NoSQL y Windows Azure

Transcript of Base de Datos No SQL y Windows Azure

Page 1: Base de Datos No SQL y Windows Azure

1

Bases de datos NoSQL y Windows Azure

Page 2: Base de Datos No SQL y Windows Azure

2

1. INTRODUCCIÓN

La sofisticación de la tecnología moderna de las bases de datos es el

resultado de la evolución que a lo largo de varias décadas ha tenido lugar en

el procesamiento de los datos y la gestión de la información. La tecnología

de acceso a los datos se ha desarrollado desde los años 50 hasta los potentes

e integrados sistemas de hoy en día. Los primeros sistemas de base de datos

ejecutaron tareas administrativas posteriormente se expandieron hacia la

producción y la gestión de la información así como los fundamentos para la

gestión corporativa .Después surgieron no solo las base de datos que

arrojaban cierta información (datos) sino que también surgieron las bases de

datos inteligentes. Actualmente, el amplio éxito de los sistemas de bases de

datos, combinado con las necesidades de gestión de información han dado

como resultado el desarrollo de bases de datos capaces de almacenar y

procesar cantidades innumerables de información sin mantener el modelo

de datos SQL y orientado a los servicios en la nube.

Page 3: Base de Datos No SQL y Windows Azure

3

TABLA DE CONTENIDO

1. INTRODUCCIÓN ............................................................................................................ 2

2. OBJETIVO GENERAL ...................................................................................................... 5

2.1. Objetivos Específicos ............................................................................................ 5

3. JUSTIFICACIÓN ............................................................................................................. 5

4. MongoDB ..................................................................................................................... 7

4.1. Características principales. .................................................................................... 7

4.1.1. Consultas Ad hoc ........................................................................................... 7

4.1.2. Indexación .................................................................................................... 7

4.1.3. Replicación .................................................................................................... 8

4.1.4. Balanceo de carga ......................................................................................... 8

4.1.5. Almacenamiento de archivos ........................................................................ 8

4.1.6. Agregación .................................................................................................... 8

4.1.7. Ejecución de JavaScript del lado del servidor ................................................. 8

4.2. Casos de éxito. ...................................................................................................... 9

4.3. Casos de Uso....................................................................................................... 10

4.4. Comandos para el manejo y administración de MongoDB ................................... 10

5. CouchDB (Apache) ...................................................................................................... 11

5.1. Características principales. .................................................................................. 12

5.1.1. Almacenamiento de documentos ................................................................ 12

5.1.2. Semántica ACID ........................................................................................... 12

5.1.3. Vistas e índices Map/Reduce ....................................................................... 12

5.1.4. Arquitectura distribuida con replicación ...................................................... 12

5.1.5. Interfaz REST ............................................................................................... 13

5.1.6. Consistencia Eventual.................................................................................. 13

5.1.7. Hecha para operar offline............................................................................ 13

5.2. Casos de éxito. .................................................................................................... 13

5.3. Componentes principales Apache CouchDB ........................................................ 14

6. Apache Cassandra ...................................................................................................... 16

Page 4: Base de Datos No SQL y Windows Azure

4

6.1. Características principales. .................................................................................. 17

6.2. Casos de éxito. .................................................................................................... 17

7. BigTable ..................................................................................................................... 18

7.1. Características principales. .................................................................................. 19

7.1.1. Google File System ...................................................................................... 19

7.2. Casos de éxito. .................................................................................................... 19

7.3. Estructura de BigTable ........................................................................................ 20

8. SQL AZURE ................................................................................................................. 21

8.1. Características principales. .................................................................................. 21

8.2. Casos de éxito. .................................................................................................... 22

8.3. Componentes ..................................................................................................... 22

8.4. Caracteristas de SQL ........................................................................................... 23

9. Amazon DiynamoDB ................................................................................................... 24

9.1. Características principales. .................................................................................. 25

9.2. Casos de éxito. .................................................................................................... 26

9.3. Funcionalidad ..................................................................................................... 26

10. CONCLUSIONES ...................................................................................................... 27

11. GLOSARIO ............................................................................................................... 28

12. WEBGRAFÍA ............................................................................................................ 30

Page 5: Base de Datos No SQL y Windows Azure

5

2. OBJETIVO GENERAL

Exponer las características y principales funciones de algunos de los actuales

motores de datos no relacionales

2.1. Objetivos Específicos

• Investigar los casos en los que la aplicación de estos motores de base

de datos tuvieron éxito y en donde se implementan actualmente

• Definir casos puntuales para los cuales seria optimo su uso

• Definir las características principales de las bases de datos NoSQL y

Windows Azure, junto a empresas que utilizan dicha tecnología

3. JUSTIFICACIÓN

Page 6: Base de Datos No SQL y Windows Azure

6

Las bases de datos, es el esfuerzo que se hace dentro de la organización para

construir conocimiento a partir de la información, se vuelve necesario

aumentar la competitividad y productividad del negocio, por eso crea la

necesidad de guardar la información e una forma segura y eficiente,

innovando cada vez más con avances como lo son las bases de datos no

relacionales

El objeto de este trabajo es investigar cuales son los máximos exponentes de

estas herramientas que tiene la capacidad de analizar grandes volúmenes de

información que proveen una gran cantidad de facilidades, todo ello en

tiempo récord, orientado a servicios en la nube y NoSQL.

Page 7: Base de Datos No SQL y Windows Azure

7

4. MongoDB

MongoDB es el sistema de base de datos desarrollada en 10gen por Geir

Magnusson y Dwight Merriman. Es una base de datos orientada a

documentos JSON, salvo que está diseñada para ser una verdadera base de

datos de objetos, más que para un almacenamiento de clave/valor puro. Es

un sistema de base de datos multiplataforma orientado a documentos, de

esquema libre. Esto significa que cada entrada o registro puede tener un

esquema de datos diferentes, con atributos o “columnas” que no tienen por

qué repetirse de un registro a otro. Está escrito en C++, lo que le confiere

cierta cercanía al bare metal, o recursos de hardware de la máquina, de modo

que es bastante rápido a la hora de ejecutar sus tareas. Además, está

licenciado como GNUAGPL 3.0, de modo que se trata de un software de

licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y

Solaris.

4.1. Características principales.

4.1.1. Consultas Ad hoc

MongoDB soporta la búsqueda por campos, consultas de rangos y

expresiones regulares. Las consultas pueden devolver un campo específico

del documento pero también puede ser una función JavaScript definida por el

usuario.

4.1.2. Indexación

Cualquier campo en un documento de MongoDB puede ser indexado, al

igual que es posible hacer índices secundarios. El concepto de índices en

MongoDB es similar a los encontrados en base de datos relacionales.

Page 8: Base de Datos No SQL y Windows Azure

8

4.1.3. Replicación

MongoDB soporta el tipo de replicación maestro-esclavo. El maestro puede

ejecutar comandos de lectura y escritura. El esclavo puede copiar los datos

del maestro y sólo se puede usar para lectura o para copia de seguridad, pero

no se pueden realizar escrituras. El esclavo tiene la habilidad de poder elegir

un nuevo maestro en caso del que se caiga el servicio con el maestro actual.

4.1.4. Balanceo de carga

MongoDB se puede escalar de forma horizontal usando el concepto de

“shard”. El desarrollador elije una llave shard, la cual determina como serán

distribuidos los datos en una colección. los datos son divididos en rangos

(basado en la llave shard) y distribuidos a través de múltiples shard. Un

shard es un maestro con uno o más esclavos.

4.1.5. Almacenamiento de archivos

MongoDB puede ser utilizado con un sistema de archivos, tomando la

ventaja de la capacidad que tiene MongoDB para el balanceo de carga y la

replicación de datos utilizando múltiples servidores para el almacenamiento

de archivos. Esta función (que es llamada GridFS) está incluida en los drivers

de MongoDB y disponible para los lenguajes de programación que soporta

MongoDB.

4.1.6. Agregación

La función MapReduce puede ser utilizada para el procesamiento por lotes

de datos y operaciones de agregación. Esta función permite que los usuarios

puedan obtener el tipo de resultado que se obtiene cuando se utiliza el

comando SQL “group-by”.

4.1.7. Ejecución de JavaScript del lado del servidor

MongoDB tiene la capacidad de realizar consultas utilizando JavaScript,

haciendo que estas sean enviadas directamente a la base de datos para ser

ejecutadas.

Page 9: Base de Datos No SQL y Windows Azure

9

4.2. Casos de éxito.

Este motor de DB es actualmente utilizado por muchos servicios online de la

más variada índole, a continuación algunos de los sitios que utilizan

MongoDB:

Parte de la infraestructura de Grooveshark.

Servicio de streaming de música online.

Disney

Electronics Arts (EA)

Forbes

The New Yourk Times

CNN

Foursquare

MTV

Craiglist, etc.

Al día de hoy MongoDB puede ser integrado en diversas aplicaciones

web utilizando los drivers de PHP, Perl, Java, .NET, Python, Erlang, Haskel,

entre muchos otros. Pero también se han desarrollado drivers para

usar MongoDB con CodeIgniter y una infinidad de frameworks. El siguiente

link nos dara el listado completo de las empresas que usan MongoDB:

http://www.mongodb.org/display/DOCS/Production+Deployments

{

"_id": ObjectId("4efa8d2b7d284dad101e4bc7"),

"Last Name": "PELLERIN",

"First Name": "Franck",

"Age": 29,

"Address": {

"Street": "1 chemin des Loges",

"City": "VERSAILLES"

}

}

Ejemplo Código para MongoDB

Page 10: Base de Datos No SQL y Windows Azure

10

4.3. Casos de Uso

La base de datos MongoDB es adecuada para los siguientes usos: Almacenamiento y registro de eventos Para sistemas de manejo de documentos y contenido Comercio Electrónico Juegos Problemas de alto volumen Aplicaciones móviles Almacén de datos operacional de una página Web Manejo de contenido Almacenamiento de comentarios

Votaciones Registro de usuarios Perfiles de usuarios Sesiones de datos etc.

Proyectos que utilizan metodologías de desarrollo iterativo o ágiles Manejo de estadísticas en tiempo real

4.4. Comandos para el manejo y administración de MongoDB

mongo: es un Shell interactivo que permite a los desarrolladores ver,

insertar, eliminar y actualizar datos en su base de datos.

mongostat: es un instrumento de línea de comandos que muestra en

resumen una lista de estadísticas de una instancia de MongoDB en

ejecución.

mongotop: es un instrumento de línea de comandos que provee un

método para dar seguimiento a la cantidad de tiempo que dura una la

lectura o escritura de datos en una instancia.

mongosniff: es un instrumento de línea de comandos que provee un

sniffing en la base de datos haciendo un sniffing en el tráfico de la red que

va desde y hacia MongoDB.

mongoimport/mongoexport: es un instrumento de línea de comandos

que facilita la importación exportación de contenido desde JSON, CSV o

TSV.

mongodump/mongorestore

Page 11: Base de Datos No SQL y Windows Azure

11

5. CouchDB (Apache)

Apache CouchDB, comúnmente llamada CouchDB, es un gestor de bases de

datos de código abierto, cuyo foco está puesto en la facilidad de su uso y en

ser "una base de datos que asume la web de manera completa". Se trata de

una base de datos NoSQL que emplea JSON para almacenar los

datos, JavaScript como lenguaje de consulta por medio

de MapReduce y HTTP como API. Una de sus características más peculiares

es la facilidad con la que permite hacer replicaciones. CouchDB fue liberada

por primera vez en 2005, transformándose en un proyecto Apache en 2008.

A diferencia de una base de datos relacional, CouchDB no almacena los datos

y sus relaciones en tablas. En cambio, cada base de datos es una colección de

documentos independientes. Cada documento mantiene sus propios datos y

su esquema autocontenido. Una aplicación puede acceder a múltiples bases

de datos, por ejemplo una residente en el teléfono móvil del usuario y otra

residente en un servidor. Los metadatos del documento contienen

información acerca de la versión del mismo, permitiendo refundir

cualesquiera diferencias que puedan haberse producido mientras las bases de

datos estaban desconectadas.

Page 12: Base de Datos No SQL y Windows Azure

12

Como se muestra en la anterior esquemática, esta base de datos se compone

de un núcleo desarrollado en Erlang y de dos enlaces externos: SpiderMonkey,

una implementación de JavaScript programada en C, y Lucene Java, una

biblioteca de búsqueda en Java

5.1. Características principales.

5.1.1. Almacenamiento de documentos

CouchDB almacena los datos como "documentos", esto es, uno o más pares

campo/valor expresados en JSON. Los valores de los campos pueden ser

datos simples como cadenas de caracteres, números o fechas. Pero también se

pueden usar listas ordenadas y vectores asociativos. Todos los documentos

en una base de datos CouchDB tienen un identificador único y no requieren

un esquema determinado.

5.1.2. Semántica ACID

CouchDB provee una semántica de atomicidad, consistencia, aislamiento y

durabilidad. Lo hace implementando una forma de control de concurrencia

multiversión, lo que significa que CouchDB puede manejar un gran número

de lectores y escritores en paralelo, sin que surjan conflictos.

5.1.3. Vistas e índices Map/Reduce

Los datos almacenados se estructuran por medio de vistas. En CouchDB,

cada vista se construye por medio de una función JavaScript que actúa como

la mitad Map de una operación map/reduce. La función recibe un

documento y lo transforma en un único valor, retornándolo. CouchDB puede

indexar vistas y mantener actualizados esos índices a medida de que se

agregan, eliminan o actualizan documentos.

5.1.4. Arquitectura distribuida con replicación

CouchDB se diseñó conteniendo en mente la replicación bidireccional (o

sincronización) y la operación off-line. Eso significa que múltiples réplicas

pueden tener cada una sus propias copias de los mismos datos, modificarlas

y luego sincronizar esos cambios en un momento posterior.

Page 13: Base de Datos No SQL y Windows Azure

13

5.1.5. Interfaz REST

Todos los ítems tienen una URI única que queda expuesta vía

HTTP. REST usa los métodos HTTP POST, GET, PUT y DELETE para las

cuatro operaciones básicas CRUD (Create, Read, Update, Delete) con todos

los recursos.

5.1.6. Consistencia Eventual

CouchDB garantiza consistencia eventual para poder ofrecer tanto

disponibilidad como tolerancia a las particiones.

5.1.7. Hecha para operar offline

CouchDB puede replicar datos a dispositivos (como smartphones) que

pueden quedar offline y manejar automáticamente la sincronización de los

datos cuando el dispositivo vuelve a estar en línea.

CouchDB también ofrece una interfaz de administración incorporada y

accesible vía web llamada Futon.

5.2. Casos de éxito.

CouchDB se usa en determinadas aplicaciones para Android, tales

como "SpreadLyrics", así como aplicaciones para Facebook como "Will you

Kissme" o "Birthday Greeting Cards", o bien sitios web como "Friendpaste"

Entre las empresas que han usado o actualmente usan CouchDB se pueden

mencionar:

Ubuntu para su servicio de sincronización "Ubuntu One" hasta noviembre

de 2011 pero fue descontinuado por problemas de escalabilidad.

La BBC, para sus plataformas de contenidos dinámicos

Credit Suisse, para usos internos en el departamento de commodities para

su framework de mercados.

Meebo, para su plataforma social (web y aplicaciones) - Meebo fue

adquirido por Google y cesó sus operaciones el 12 de julio de 2012.

Page 14: Base de Datos No SQL y Windows Azure

14

5.3. Componentes principales Apache CouchDB

HTTP Client: Es decir, el cliente que realiza peticiones contra el servidor

de la base de datos.

Erlang HTTP: Es uno de los componentes más importantes y está basado

en Mochiweb un kit para servidores HTTP ligeros escrito en Erlang.

Mod_Couch: Es el núcleo de la máquina virtual Erlang de CouchDB.

View_Engine: Es en este componente donde se realiza todo el proceso de

las vistas, los documentos de diseño, la indexación, etc.

Storage_Engine: Es otra de las partes esenciales de CouchDB ya que

gestiona las escrituras a disco.

Replicator: Es el encargado de gestionar la replicación de los documentos

(incluyendo documentos de diseño).

Ejemplo de peticiones vía HTTP

A continuación hay algunos ejemplos con cURL, un utilitario de línea de

comando. En estos ejemplos se supone que CouchDB se está ejecutando

en localhost (127.0.0.1) en el puerto 5984

Acción Petición Respuesta

Acceder a la información del

servidor curl http://127.0.0.1:5984/

{

"couchdb": "Welcome",

"version":"1.1.0"

}

Crear una base de datos

llamada wiki

curl -X PUT

http://127.0.0.1:5984/wiki {"ok": true}

Intentar crear una segunda base

de datos llamada wiki

curl -X PUT

http://127.0.0.1:5984/wiki

{

"error":"file_exists",

"reason":"The database could not be

created, the file already exists."

}

Page 15: Base de Datos No SQL y Windows Azure

15

Consultar información sobre la

base de datos wiki

curl http://127.0.0.1:5984/wiki {

"db_name": "wiki",

"doc_count": 0,

"doc_del_count": 0,

"update_seq": 0,

"purge_seq": 0,

"compact_running": false,

"disk_size": 79,

"instance_start_time":

"1272453873691070",

"disk_format_version": 5

}

Page 16: Base de Datos No SQL y Windows Azure

16

6. Apache Cassandra

Apache Cassandra. Es un gestor de datos no-relacional y no SQL. Utiliza un

estilo denominado BigTable y está diseñada para guardar campos-valores, lo

que permite dinamismo en el diseño, pero pérdida para el paradigma

relacional de estricta tipificación. Es una base de datos distribuida de código

abierto altamente escalable para manejar grandes cantidades de datos es un

componente clave en cloud computing. Cassandra es desarrollada por

la Apache Software Foundation. En las versiones iniciales utilizaba un API

propia para poder acceder a la base de datos. En los últimos tiempos están

apostando por un lenguaje denominado CQL (Cassandra Query Language)

que posee una sintaxis similar a SQL aunque con muchas menos

funcionalidades. Esto hace que iniciarse en el uso de la misma sea más

sencillo. Permite acceder en Java desde JDBC. Fue programado en java y es

multiplataforma.

El desarrollo de Cassandra fue iniciado por, aunque parezca curioso,

Facebook, para intentar solventar la problemática relacionada con el

rendimiento del motor de búsquedas, concretamente con las relacionadas en

la comunicación entre usuarios (“Inbox Search“). Esta funcionalidad implica

un gran volumen de datos a almacenar, con una perpectiva de crecimiento

muy alta (el boom de las redes sociales se produjo después de la

implementación de Cassandra) y la necesidad de ofrecer un nivel de calidad

de servicio fijado (SLA, Acuerdo de Nivel de Servicio).

Page 17: Base de Datos No SQL y Windows Azure

17

6.1. Características principales.

Índices secundarios, una forma expresiva y eficiente para consultar los

datos a través de almacenamiento local de nodo en el lado del cliente

Amplia fila de apoyo, hasta dos millones de columnas por fila.

Los cambios de esquema en línea – los cambios de esquema en línea

automatizada de la API del cliente permiten agregar y modificar las

definiciones de objeto sin necesidad de un reinicio de clúster

Apache Cassandra está disponible bajo la licencia de Software Apache v2.0 y

que es supervisada por un comité de gestión de proyecto (PMC), que orienta

sus operaciones diarias, incluyendo versiones de desarrollo y producto de la

comunidad. El mayor grupo de Cassandra hasta la fecha contiene más de 400

máquinas.

Una tabla de datos por cada instancia de Cassandra. Cada familia de

columnas puede contener o bien columnas o bien supercolumnas. Las

supercolumnas son columnas son la agrupación de n-columnas. Cada

columna contiene elementos de la forma “Clave-Valor-Tiempo”, donde el

valor del campo tiempo es definible por el usuario.

Cada fila de una tabla puede tomar valores en columnas distintas de una

familia de columnas que otra fila, es decir, si se dispone de una familia de 5

columnas (A, B, C, D, E), la fila R1 puede tener valores en A y B mientras que

la fila R2 puede tenerlos en A, C, D y E.

6.2. Casos de éxito.

Apache Cassandra es desplegado con éxito en las organizaciones con

conjuntos de datos activos y clústeres de servidores de gran tamaño, como:

Cisco

Cloudkick

Digg

Facebook

Rack

Twitter

Page 18: Base de Datos No SQL y Windows Azure

18

7. BigTable

BigTable es un mapa multidimensional ordenado, disperso, distribuido y

persistente.

BigTable es un motor de bases de datos creado por Google con las

características de ser: distribuido, de alta eficiencia y propietario. Está

construido sobre GFS (Google File System), Chubby Lock Service, y algunos

otros servicios y programas de Google, y funciona sobre 'commodity

hardware' (sencillos y baratos PCs con procesadores Intel).

BigTable comenzó a ser desarrollado a principios de 2004.

BigTable almacena la información en tablas multidimensionales cuyas celdas

están, en su mayoría, sin utilizar. Además, estas celdas disponen de versiones

temporales de sus valores, con lo que se puede hacer un seguimiento de los

valores que han tomado históricamente.

Al igual que en estos momentos muchas empresas utilizan 'Google Apps'

para guardar la información que los empleados generan a través de

documentos, con 'BigTable como servicio' sus desarrolladores podrían creas

sus propias herramientas sabiendo que están utilizando la misma tecnología

que usa el buscador web de Google, y con la garantía de que ya hay creadas

varios (y exitosos) productos sobre ella. Además de los servicios públicos que

ya hemos comentado, por ejemplo el sistema interno de almacenamiento y

revisión de código de programación ('Google Mondrian') fue creado sobre la

tecnología de BigTable.

Algunos datos interesantes en cuanto al volumen de datos que nos da Google

están enfocados a pequeñas herramientas como Google Analytics o Google

Earth. En agosto de 2006, Google Analytics tenía ocupados 220 TB de

información distribuidos en 90 mil millones de celdas y Google Earth

ocupaba 70 TB distribuidos en 17 mil millones de celdas.

Page 19: Base de Datos No SQL y Windows Azure

19

7.1. Características principales.

Sistema almacenamiento distribuido.

Creado por Google a principios del 2004.

Almacena la información en tablas multidimensionales.

No es una base de datos relacional.

Pensado para crecer en un alto volumen rápidamente (pentabytes).

Variedad de aplicación, escalabilidad, alto rendimiento y alta

disponibilidad.

7.1.1. Google File System

Sistema de archivos distribuidos.

Eficiencia, fácil acceso, almacenamiento masivo (clusters),

procesamiento paralelo.

Archivos de tamaño fijo (64MB).

Se agregan o leen y muy rara vez se sobre escriben o reducen.

El nodo maestro tiene un id de 64 bits de cada porción.

Cada porción es replicada en al menos 3 servidores.

No está programado en el kernel, funciona como una librería.

7.2. Casos de éxito.

En octubre de 2005 se comenzo a hablar de BigTable, el sistema que comenzó

a desarrollar Google en el año 2004 con el objetivo de poder almacenar sus

enormes cantidades de información de una forma semi-estructurada. Con

esta tecnología, servicios como 'Google Analyticspuede almacenar los

registros de las visitas, 'Google Finance' sus millones de registros de valores

bursátiles, 'Google Earth' puede guardar las imágenes de satélite de todo el

planeta, o el buscador web puede almacenar los contenidos históricos de las

páginas web y de los links entre ellas. Google procesa diariamente varios

millones de Gigabytes, utilizando BigTable sobre servidores Linux

instalados en 'commodity hardware' (simples PCs de bajo precio).

Page 20: Base de Datos No SQL y Windows Azure

20

7.3. Estructura de BigTable

Datos son indexados usando el nombre de la fila, la columna y un

timestamp.

Se puede describir como un mapa distribuido, persistente y

multidimensional.

Los datos de las celdas son tratados como un array no interpretado de

bytes.

(row:string, column:string, time:int64) -> string

Ejemplo de una table

La tabla es particionada dinámicamente por filas dentro de tabletas

(tablet).

Cada tableta puede medir entre 100 a 200 MB.

Cada tableta contiene un rango continuo de registros.

Accesar registros o tabletas cercanos requiere la comunicación de un

bajo número de servidores.

Page 21: Base de Datos No SQL y Windows Azure

21

8. SQL AZURE

SQL Azure es una base de datos relacional en la nube construida sobre la tecnología de SQL Server. Proporciona servicios de bases de datos altamente escalables y con altísima disponibilidad alojados por Microsoft en la nube. Estos servicios facilitan enormemente el despliegue de bases de datos.

Una ventaja añadida es que los desarrolladores y el personal de IT no necesita instalar, actualizar y gestionar la infraestructura de bases de datos. La alta disponibilidad, aspecto siempre complejo, es gestionado de manera transparente.

La gran ventaja de utilizar SQL Azure frente a otros sistemas de almacenamiento en la nube es que todos los conocimientos sobre bases de datos relacionales y el lenguaje de consulta SQL siguen siendo válidos. No es necesario adaptar los conocimientos a nuevos paradigmas de almacenamiento, como pasa con otros sistemas de almacenamiento en la nube no basados en bases de datos relacionales ni SQL. “Si sabes utilizar SQL Server, todos tus conocimientos te valen para SQL Azure”.

8.1. Características principales.

Proceso: el servicio de proceso de Windows Azure ejecuta aplicaciones basadas en Windows Server.

Almacenamiento: objetos binarios grandes (blobs) proporcionan colas para la comunicación entre los componentes de las aplicaciones de Windows Azure e ofrece un tipo de tablas con un lenguaje de consulta simple.

Controlador de tejido: Windows Azure se ejecuta en un gran número de máquinas.

Page 22: Base de Datos No SQL y Windows Azure

22

Red de entrega de contenido (CDN): el almacenamiento en caché de los datos a los que se accede frecuentemente cerca de sus usuarios agiliza el acceso a esos datos.

Connect: organizaciones interactúan con aplicaciones en la nube como si estuvieran dentro del propio firewall de la organización.

8.2. Casos de éxito.

Microsoft SQL Azure proporciona una base de datos de alta escalabilidad y

de varios inquilinos que no tiene que instalar, configurar, actualizar o

gestionar. Kelley Blue Book, 3M, Siemens y otras empresas líderes usan SQL

Azure en la actualidad.

8.3. Componentes

Windows Azure Compute es una plataforma para hospedar y administrar

aplicaciones en los centros de datos de Microsoft.

Windows Azure Storage tiene servicios de básicos como parte de la

cuenta de almacenamiento de Windows Azure.

Microsoft SQL Azure es un servicio de base de datos en la nube basado en

las tecnologías de SQL Server.

Content Delivery Network (CDN) de Windows Azure coloca copias de

los datos cerca de donde estos se encuentran.

Azure AppFabric El servicio de Appfabric (en fase beta se llamaba .NET

Services) ofrece diferentes servicios para aplicaciones. Los servicios de

autenticación, autorización y mensajería permiten la comunicación segura

entre aplicaciones y servicios desplegados tanto en la nube y en local.

Azure Market Place es un mercado en línea global compartir, comprar y

vender aplicaciones SaaS completas y conjuntos de datos.

Azure Virtual Network es una serie de funciones de red. Windows Azure

Connect es la primera característica de Azure Virtual Network que

configura la conectividad de red basada en IP entre recursos locales y de

Windows Azure.

Page 23: Base de Datos No SQL y Windows Azure

23

8.4. Caracteristas de SQL

Características Soportadas

Tablas, tablas temporales, vistas, índices, roles, procedimientos almacenados y funciones.

Consultas complejas y „joins‟ entre múltiples tablas. Insert, update y delete. Restricciones Transacciones

Características NO soportadas

Transacciones distribuidas El broker de mensajes de SQL Server Consultas a servidores remotos Acceso desde tecnología antigua, ya obsoleta, en concreto OleDb.

A la hora de conectarse desde las aplicaciones clientes, se pueden elegir

varios tipos de conexión:

ADO.NET, incluido Entity Framework.

Acceso ODBC nativo.

Soporte para PHP.

Page 24: Base de Datos No SQL y Windows Azure

24

9. Amazon DiynamoDB

Amazon DynamoDB es un servicio de datos NoSQL totalmente gestionado y

que ofrece un rendimiento rápido y predecible gracias a una perfecta

escalabilidad. Con tan solo unos clics en AWS Management Console, los

clientes pueden crear una nueva tabla de base de datos en Amazon

DynamoDB, aumentar o reducir la capacidad de solicitud para la tabla sin

tiempos de inactividad ni reducción del rendimiento, así como aumentar la

visibilidad de la utilización de recursos y de las métricas de rendimiento. Este

servicio permite a los clientes evitar las cargas administrativas que supone

tener que utilizar y escalar bases de datos distribuidas a AWS, ya que no

tienen que preocuparse del aprovisionamiento del hardware, ni tampoco de

las tareas de instalación y configuración, replicación, revisiones del software

ni de escalar el clúster.

Amazon DynamoDB es un servicio diseñado para abordar los problemas

principales relativos a la gestión, el rendimiento, la escalabilidad y la

fiabilidad de la base de datos. Los desarrolladores pueden crear una tabla de

base de datos capaces de almacenar y recuperar cualquier cantidad de datos,

así como de satisfacer cualquier nivel de tráfico de solicitud. DynamoDB

distribuye automáticamente los datos y el tráfico de la tabla por una cantidad

suficiente de servidores como para gestionar la capacidad de solicitud

especificada por el cliente y la cantidad de datos almacenados, al mismo

tiempo que mantiene un rendimiento uniforme y rápido. Todos los elementos

de datos se almacenan en unidades de estado sólido y se replican

automáticamente por tres zonas de disponibilidad de una región a fin de

ofrecer las prestaciones integradas de alta disponibilidad y durabilidad de los

datos.

Page 25: Base de Datos No SQL y Windows Azure

25

9.1. Características principales.

Escalable – Amazon DynamoDB es un servicio diseñado para ofrecer un

rendimiento perfecto y escalabilidad de almacenamiento.

Rendimiento previsto: al crear una tabla, solo tiene que especificar cuánta

capacidad de solicitud necesita. DynamoDB asigna recursos específicos a

su tabla a fin de satisfacer sus necesidades de rendimiento y, de forma

automática, realiza las particiones de los datos entre un número suficiente

de servidores como para cubrir la capacidad de solicitud que necesita.

Escalabilidad automática de almacenamiento: no existe ningún límite para

la cantidad de datos que puede almacenar en una tabla de DynamoDB.

Arquitectura no compartida y totalmente distribuida: Amazon

DynamoDB realiza la escalabilidad de forma horizontal y puede escalar

perfectamente una única tabla en cientos de servidores.

Rendimiento rápido y predecible: el promedio de latencias de servicio de

Amazon DynamoDB suele ser de milisegundos de un solo dígito.

Administración sencilla: Amazon DynamoDB es un servicio totalmente

gestionado; solo tiene que crear una base de datos y el servicio se encargará

del resto.

Flexible: Amazon DynamoDB no tiene una estructura fija. En su lugar, cada

elemento de datos puede tener un número distinto de atributos.

Rentable: Amazon DynamoDB es una solución diseñada para ofrecer la

máxima rentabilidad para las cargas de trabajo de cualquier escala.

Seguro: Amazon DynamoDB utiliza métodos criptográficos probados para

autenticar a los usuarios y prevenir el acceso no autorizado a los datos.

Supervisión integrada: Amazon DynamoDB muestra métricas operativas

clave sobre su tabla en AWS Management Console.

Integración de Elastic MapReduce: Amazon DynamoDB también se integra

con Amazon Elastic MapReduce (Amazon EMR). Amazon EMR permite a las

empresas realizar análisis complejos de sus grandes conjuntos de datos

mediante la utilización de un marco Hadoop alojado en AWS de pago según

consumo.

Page 26: Base de Datos No SQL y Windows Azure

26

9.2. Casos de éxito.

"En Amazon Cloud Drive hemos cambiado a Amazon DynamoDB para

poder acceder con rapidez a los metadatos y a otros recursos, porque ofrece

un alto rendimiento y un servicio de base de datos de baja latencia que

podríamos implementar con facilidad", comentó Russell Dicker, director de la

sección de Cloud Drive de Amazon.com. "Nos sorprendió lo rápido que

pudimos poner DynamoDB en producción y la cantidad de tiempo que

hemos conseguido ahorrar a los desarrolladores. Además, DynamoDB nos

permite aumentar o reducir la escala simplemente con reservar mayor

capacidad de rendimiento cuando la necesitamos y devolverla cuando no la

necesitamos.

Elsevier

Formspring

IMDb

SmugMug

Tapjoy

9.3. Funcionalidad

Para utilizar Amazon DynamoDB, simplemente necesita:

Utilizar AWS Management Console o las API de Amazon DynamoDB para

crear una tabla y especificar la capacidad de solicitud que necesita.

Utilizar las API de Amazon DynamoDB para escribir y recuperar datos.

Controlar el estado y el rendimiento de sus tablas de Amazon DynamoDB

con Amazon CloudWatch enAWS Management Console.

Pagar solo por lo que utilice. La factura mensual se basa en la capacidad de

solicitud prevista para la tabla y en la cantidad de datos almacenados.

Page 27: Base de Datos No SQL y Windows Azure

27

10. CONCLUSIONES

Conocer bases de datos que no manejen el lenguaje SQL, pensábamos

que se trabajan solo bases de datos relacionales y con lenguaje SQL

Conocer Cloud Computing, un nuevo modelo para prestar servicios de

negocios y tecnologías. Por ejemplo Hardware como servicio o

Software como servicio

Algunos de los aspectos aprendidos y que de gran peso es la base de

datos su definición, requerimiento, ventajas y características donde

podemos decir que la base de datos: Es una colección de datos o

información usados para dar servicios a muchas aplicaciones al mismo

tiempo.

Si bien NoSql, no pretende erradicar ni suplantar al SQL y a las bases

de datos relacionales, Sino pretende ser una alternativa dentro del

desarrollo del software donde las condiciones sean requeridas

principalmente cuando se manejan millones y millones de datos y el

procesamiento y escalabilidad sean puntos críticos, Sin embargo Las

Comunidades NoSQL anuncian que: “No tienes que ser Google! Para

usarlo”.

Page 28: Base de Datos No SQL y Windows Azure

28

11. GLOSARIO

BARE METAL

Es una plataforma que permite aplicar diversas técnicas de control

de virtualización para utilizar, al mismo tiempo, diferentes sistemas

operativos (sin modificar o modificados en el caso de para virtualización) en

una misma computadora.

AD HOC

Una red ad hoc es aquella (especialmente inalámbrica) en la que no hay

un nodo central, sino que todos los dispositivos están en igualdad de

condiciones. Ad hoc es el modo más sencillo para el armado de una red.

INDEXACIÓN

Se refiere a la acción de registrar ordenadamente información para elaborar

su índice.

AWS

Amazon Web Services le ofrece un conjunto completo de servicios de

infraestructuras y aplicaciones que le permiten ejecutar prácticamente todo

en la nube, desde aplicaciones empresariales y proyectos de grandes datos

hasta juegos sociales y aplicaciones móviles.

API

Interfaz de programación de aplicaciones (IPA) o API (del inglés Application

Programming Interface) es el conjunto de funciones y

procedimientos (o métodos, en la programación orientada a objetos) que

ofrece ciertabiblioteca para ser utilizado por otro software como una capa de

abstracción

ERLANG

Es un lenguaje de programación concurrente y un sistema de ejecución que

incluye una máquina virtual y biblioteca.

Page 29: Base de Datos No SQL y Windows Azure

29

HASKEL

Haskell (hæskəl) es un lenguaje de programaciónestandarizado multi-

propósito puramente funcional con semánticas no estrictas y fuerte

tipificación estática.

JSON

Acrónimo de JavaScript Object Notation, es un formato ligero para el

intercambio de datos. JSON es un subconjunto de la notación literal de

objetos de JavaScript que no requiere el uso de XML.

APACHE

Es un servidor web HTTP de código abierto, para

lataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y

otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual.

TIPIFICACIÓN

Ajuste o adaptación de varias cosas semejantes al patrón de un modelo o

norma común:

CLUSTER

El término clúster (del inglés cluster) se aplica a los conjuntos o

conglomerados de computadoras construidos mediante la utilización de

hardwares comunes y que se comportan como si fuesen una única

computadora.

ODBC

Es un estándar de acceso a las bases de datos desarrollado por SQL Access

Group en 1992. El objetivo de ODBC es hacer posible el acceder a cualquier

dato desde cualquier aplicación, sin importar qué sistema de gestión de bases

de datos (DBMS) almacene los datos.

Page 30: Base de Datos No SQL y Windows Azure

30

12. WEBGRAFÍA

http://es.wikipedia.org/wiki/MongoDB#cite_note-12

http://apachefoundation.wikispaces.com/Apache+Couch+DB

http://es.wikipedia.org/wiki/Apache_Cassandra

http://www.ecured.cu/index.php/Apache_Cassandra

http://www.nosql.es/blog/nosql/cassandra.html

http://www.nosql.es/blog/nosql/uso-de-google-bigtable-parte-1.html

http://www.cosasquecontar.com/tag/bigtable/

http://es.wikipedia.org/wiki/BigTable

http://es.wikipedia.org/wiki/Windows_Azure

http://www.estoyenlanube.com/recursos/sql-azure/que-es-sql-azure/

http://www.windowsazure.com/es-es/

http://aws.amazon.com/es/dynamodb/

http://www.nosql.es/blog/nosql/amazon-dynamo.html