tarea academica sistemas distribuidos i

Upload: raineiro-franco-infantas

Post on 05-Apr-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    1/13

    Facultad de Ingeniera de Sistemas, Computacin y Telecomunicaciones

    NO SQL Y SU USO EN LA

    COMPUTACIN EN LA NUBE

    Presentado por

    Franco Infantas Raineiro Patricio

    Tacna Per

    Mayo 2012

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    2/13

    2

    INDICE

    Que es NoSQL 03

    Caractersticas de NoSQL 04

    MongoDB 07

    Caractersticas 08

    Ejemplo de implementacin de BD con MongoDB 10

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    3/13

    3

    QUE ES NOSQL

    NoSQL fue desarrollado por primera vez en finales de 1990 por Carlo

    Strozzi se refiere a una nueva arquitectura de sistemas de bases de datos,

    generalmente distribuidos, que no requieren tablas con esquemas fijos,

    evitan el uso de la operacin JOIN, tpicamente escalan de forma

    horizontal y no siempre exponen sus datos mediante interfaces SQL. Es de

    notar que existen proveedores NoSQL tanto propietarios como basados en

    software libre. En algunos casos el termino NoSQL incluso se utiliza con el

    significado de un sistema totalmente no relacional, pero en la prctica no es

    tan sencillo como a decir que los sistemas RDBMS y NoSQL son

    totalmente opuestos, ya que existen diferentes soluciones y bibliotecas

    intermedias que adicionan y complementan los sistemas NoSQL con las

    caractersticas ACID de los sistemas RDBMS.

    Por lo general, en el mbito acadmico a este tipo de bases de datos a e se

    les refiere como almacenamiento estructurado, trmino que tambin incluye

    a las bases de datos relacionales clsicas.

    Werner Vogels, CTO de Amazon dice no llamarlos "bases de datos", se

    refiere a su sistema Dynamo como "un almacenamiento de clave-valor de

    alta disponibilidad". Google llama a su BigTable, otro de los modelos para

    muchos simpatizantes de NoSQL, "un sistema de almacenamiento

    distribuido para gestionar datos estructurados".

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    4/13

    4

    CARACTERSTICAS DE NOSQL

    Entre las caractersticas que ms demandan las aplicaciones actuales y han

    incidido en la creacin e incremento en el uso de las bases de datos NoSQL

    se pueden enumerar las siguientes:

    Gran cantidad de peticiones de lectura y escritura de forma concurrente. La

    propia complejidad de la lgica detrs del funcionamiento de las bases o a

    de datos relacionales, tiende a perder eficiencia en relacin al crecimiento o

    de los datos. Esto hace responder con poca latencia en el caso de las

    aplicaciones que atienden un gran nmero de pedidos a la misma vez.

    Necesidad de almacenar y gestionar eficientemente cantidades masivas de

    datos.

    Aplicaciones multimedia, redes sociales o los buscadores, por solo citar

    algunos ejemplos, requieren almacenar y gestionar cantidades de datos

    continuamente crecientes sin que esto implique una perdida de eficiencia.

    Estas son aplicaciones para los cuales los RDBMS en general no estndiseados.

    Brindar un servicio alta escalabilidad y alta disponibilidad. Para la gestin

    de altos volmenes de datos y para garantizar su disponibilidad, se hacen

    necesarios sistemas redundantes y fciles de escalar. Los sistemas NoSQL

    estn diseados para lograr fcilmente un escalado en forma horizontal a

    diferencia de los clsicos sistemas relacionales que escalan a verticalmente.

    Disminuir costos de operacin y de mantenimiento. La existencia de

    buenos proveedores NoSQL basados en Software Libre y de los bajos

    costes del hardware necesario para un escalado horizontal, convierten los

    sistemas NoSQL en una opcin econmicamente ventajosa. Es por todo lo

    anterior, que el concepto NoSQL no se entiende solamente como una forma

    de llamar a los sistemas diferentes a los tradicionales, sino que se refieren a

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    5/13

    5

    las ventajas que estos traen sobre los clsicos sistemas RDBMS a como una

    interpretacin en abreviatura de Nosolo SQL.

    Pueden manejar enormes cantidades de datos. Hypertable, una

    implementacin de cdigo abierto basada en BigTable, se usa dentro del

    motor de bsqueda Zvents para escribir 1000 millones de celdas de datos

    por da, segn cuenta el ingeniero Doug Judd.

    A su vez, BigTable, en conjunto con su tecnologa hermana MapReduce,

    procesa hasta 20 petabytes de datos por da.

    Definitivamente la cantidad de datos es tan grande que las personas estn

    buscando otras tecnologas", dice Travis de SpringSource, que con su

    tecnologa VPork ayuda a los usuarios de NoSQL a realizar benchmarks de

    rendimiento de sus bases de datos alternativas.

    "No slo de SQL"

    No relacionales: base de datos de archivo plano horizontal

    Escalable: los nuevos nodos o mdulos puede ser fcilmente aadidos

    para los usuarios ms.

    Verticalmente escalable: se puede aadir ms informacin.

    Almacenamiento estructurado: por lo general una coleccin de tablas de

    datos estructurados (como las tablas hash o un diccionario).

    No esquema predefinido

    No es necesario trazar diseos orientados a objetos en un modelo

    relacional.

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    6/13

    6

    Ejemplos: BigTable de Google, el Dynamo de Amazon. Cassandra

    (utilizado en la bandeja de entrada de Facebook de bsqueda) y HBase

    (Apache) son de cdigo abierto.

    Ventajas de NoSQL

    Barato, fcil de aplicar

    Los datos se replican y se puede dividir

    Fcil de distribuir

    No se requiere un esquema

    Puede escalar hacia arriba y abajo

    procesar rpidamente grandes cantidades de datos

    Relax el requisito de consistencia de los datos (PAC)

    Desventajas de NoSQL

    Nuevo y con errores a veces,

    Los datos se duplican por lo general, el potencial de inconsistencia

    No esquema normalizado

    No existe un formato estndar para consultas

    Ninguna lengua estndar

    La mayora de los sistemas de NoSQL evitar que en la memoria de

    almacenamiento

    Dificultad para imponer estructuras complicadas

    Confe en la capa de aplicacin para hacer cumplir la integridad de datos

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    7/13

    7

    MongoDB

    MongoDB es un sistema de bases de datos NoSQL orientado a

    documentos, a diferencia de MySQL, este no es una base de datos

    relacional.

    Es open source y esta entre nosotros desde el 2009. Est escrito en C++ y

    tiene intencin de aumentar la escalabilidad de un sistema. Es compatible

    con Linux, OS X, Windows y Solaris.

    Adems de MongoDB existen otros sistemas NoSQL como por ejemplo

    Cassandra, CouchDB, Redis, Riak, Membase, Neo4j y HBase.

    Considera que mongoDB fue diseado para ser un motor de bsqueda

    sobre aplicaciones en la nube, debes de ser bien especfico al momento de

    elegir un sistema NoSQL. Esto porque tienen diferentes funciones o estn

    optimizados para diferentes tareas: Como Cassandra que fue diseado para

    bsquedas en Facebook.

    Una base de datos en MongoDB tiene diferentes conceptos a una base de

    datos regular como MySQL. Cada registro o unidad bsica de datos se le

    denomina documento. Y cada conjunto de documentos, que formaran una

    tabla, se le llama coleccin.

    Un documento se podra comprar con el concepto de fila y una coleccin a

    una tabla.

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    8/13

    8

    Caractersticas

    MongoDB 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 cercana a los recursos de hardware de la mquina, de

    modo que es bastante rpido a la hora de ejecutar sus tareas. Adems, est

    licenciado como GNU AGPL 3.0, de modo que se trata de un software de

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

    Solaris.

    Las caractersticas que ms destacara de MongoDB son su velocidad y su

    rico pero sencillo sistema de consulta de los contenidos de la base de datos.

    Se podra decir que alcanza un balance perfecto entre rendimiento y

    funcionalidad, incorporando muchos de los tipos de consulta que

    utilizaramos en nuestro sistema relacional preferido, pero sin sacrificar en

    rendimiento.

    Los distintos documentos se almacenan en formato BSON, o Binary JSON,

    que es una versin modificada de JSON que permite bsquedas rpidas de

    datos. Para hacernos una idea, BSON guarda de forma explcita las

    longitudes de los campos, los ndices de los arrays, y dems informacin

    til para el escaneo de datos. Es por esto que, en algunos casos, el mismo

    documento en BSON ocupa un poco ms de espacio de lo que ocupara de

    estar almacenado directamente en formato JSON. Pero una de las ideas

    claves en los sistemas NoSQL es que el almacenamiento es barato, y es

    mejor aprovecharlo si as se introduce un considerable incremento en la

    velocidad de localizacin de informacin dentro de un documento.

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    9/13

    9

    Sin embargo, en la prctica, nunca veremos el formato en que

    verdaderamente se almacenan los datos, y trabajaremos siempre sobre un

    documento en JSON tanto al almacenar como al consultar informacin.

    Las caractersticas principales son:

    Las consultas son a nivel de collection (sin joins)

    Los ndices se generan en las collection

    Los documentos tienen una ID nica

    La atomicidad es a nivel de document.

    MongoDB ofrece adems una serie de mtodos y herramientas novedosos

    para hacer consultas (querying) y operaciones de una forma muy sencilla y

    muy optimizado. Estos son:

    Consultas:

    Permite consultas dinmicas (cdigo JavaScript u objetos)

    'Map/Reduce' (funciones JavaScript)

    Creacin de indices secundarios (B-tree, R-tree, etc.)

    Operaciones:

    Replicacin

    Master/Slave

    Herramientas tiles:

    Mongo shell, mongostat, mongo (dump,restore,export,import)

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    10/13

    10

    Ejemplo de implementacin de BD con MongoDB

    Un ejemplo de un documento en MongoDB podra ser perfectamente ste:

    {

    _id : 4da2c0e2e999fb56bf000002

    title : Una introduccin a MongoDB,

    body : Loremipsum dolor sit amet,

    published_at : 2012-05-09T18:17:07-07:00,

    author_info : {

    _id : 4dc8919331c0c00001000002

    name : franco rai

    },

    tags : [MongoDB, NoSQL, Basesde datos]

    comments : [

    {

    author_info : { name : rai franco,email : [email protected] },

    body : Test,

    created_at : 2012-05-10T10:14:01-07:00

    },

    {

    author_info : { name : infantaspatricio, email : [email protected] },

    body : Otrotest,

    created_at : 2012-05-10T10:14:09-07:00

    }

    ]

    liked_by : [4d7cf768e999fb67c0000001,4da34c62ba875a19d4000001]

    }

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    11/13

    11

    Como podemos ver en este documento pretende representar la manera en

    que podran almacenarse los datos correspondientes a un post de un blog.

    Los atributos _id o clave principal pueden tener el formato que se desee,

    aunque MongoDB utiliza un valor parecido a un UUID en hexadecimal por

    defecto si no se ha especificado ninguno. A pesar de parecer un valor

    completamente aleatorio aunque ya se sabe que la aleatoriedad real no

    existe en informtica, utilizan como base una semilla basada en la MAC de

    la interfaz de red de la mquina y otros detalles de la misma para evitar que

    dos mquinas diferentes puedan generar el mismo valor para la clave de un

    documento. Y los primeros bytes corresponden a una marca de tiempo, de

    modo que las claves se ordenan de forma natural por orden de creacin o

    casi, pues est claro que las distintas mquinas corriendo MongoDB deben

    tener la fecha y hora sincronizadas sin tener que mirar cul fue el ltimo

    valor usado. Una solucin inteligente, a mi modo de ver bastante ms

    eficiente que un campo autonumrico, en especial para evitar que una

    mquina bloquee la insercin de registros en una coleccin slo paraasegurarse que no se dan condiciones de carrera al intentar dos mquinas

    diferentes escribir un documento con el mismo valor para _id. Por cierto,

    este atributo _id es el nico obligatorio para un documento.

    Las etiquetas y los comentarios estn en el propio documento que

    representa al post, en lugar de guardarlos en colecciones separadas y

    utilizar claves forneas para referenciar a los mismos. Sin embargo, en el

    atributo liked_by s que guardamos una relacin de claves, que

    corresponden a los usuarios que han marcado el post como que les ha

    gustado. Utilizar una forma u otra depender de las necesidades de acceso a

    estos datos En este caso, por ejemplo, sabemos que no vamos a pintar

    informacin sobre los usuarios que han marcado un post con un me

    gusta, pero s queremos ver cuntos lo han marcado as, o si el usuario

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    12/13

    12

    actual ya lo ha marcado o no, con lo que almacenar nicamente las claves

    de esos usuarios y guardar su informacin personal detallada en otra

    coleccin es lo ms conveniente.

    No es necesario pedir a MongoDB que nos devuelva todo el documento

    cada vez que lo consultamos. Si por ejemplo vamos a pintar nicamente un

    listado de posts recientes, seguramente sea suficiente obtener el atributo

    title, con los documentos ordenados por published_at. As, ahorramos

    ancho de banda entre el motor de base de datos y la aplicacin, al mismo

    tiempo que memoria dado que no hay que instanciar todo el documento.

    Adems, si tenemos muchos miles de visitantes, el atributo liked_by

    podra llegar a crecer bastante. Aunque el tamao de un documento de

    MongoDB puede llegar hasta los 16 Megabytes, con lo que podemos

    almacenar bastante informacin dentro de un nico documento sin

    necesidad de utilizar referencias, si as lo necesitamos. En caso de que

    tuviramos que almacenar mucho ms, habra que optar por utilizar otro

    esquema.

    En momentos vamos a tener que desnormalizar para poder tener a mano la

    informacin necesaria a la hora de pintar un post. Es por eso que en el

    atributo author_info he utilizado una versin intermedia: Si bien tenemos

    la clave principal del usuario que ha escrito este post, como es habitual que

    pintemos el nombre del autor, he almacenado tambin dicho nombre en el

    documento que representa al post, para que no sea necesario realizar una

    segunda consulta a la coleccin usuarios. Estas desnormalizaciones

    dependen nuevamente del uso que se den a los datos. En este caso, tengo

    claro que el nombre de un usuario no va a cambiar demasiado, as que

    recorrer todos los posts para cambiar este valor en caso de que el usuario

    realice esta operacin, si bien es una modificacin que podra llevar un

    tiempo considerable para ejecutarse, no es una operacin habitual frente a

  • 7/31/2019 Tarea Academica Sistemas Distribuidos i

    13/13

    13

    la consulta del nombre del autor, y por tanto compensa. Incluso podramos

    llegar a tratar el post como algo ms permanente, de modo que aunque un

    usuario cambiara su nombre a posteriori, el nombre utilizado para firmar

    los posts anteriores no vare, o sencillamente los posts puedan firmarse con

    diferentes pseudnimos.

    Como creo que habr quedado patente a estas alturas, el modelado del

    esquema de datos con MongoDB depende ms de la forma en que

    consultaremos o actualizaremos los datos que de las limitaciones del propio

    sistema.