Download - Base de Datos No SQL y Windows Azure
1
Bases de datos NoSQL 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.
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
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
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
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.
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.
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.
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
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
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.
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.
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.
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."
}
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
}
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).
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
Rack
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.
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).
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.
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.
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.
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.
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.
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.
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.
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”.
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.
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.
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