lunes, 23 de septiembre de 2019

Actividad en clase

-Usamos una Base de Datos llamada "College" y agregamos la collecion "class".

-Agregamos el comando  "db.class.insertOne({"id" :14, "name" :"Big Data")}; " , este nos insertara un documento

-Agregamos estos datos en nuestra colleccion "class" db.student.insertOne({"id" :1234, "name" :"Kevin", "lastname":"Grant")}; y db.student.insertOne({"id" :1235, "name" :"Joe", "lastname":"Kent")};.

-Usamos "db.student.find({});" para buscar los datos que hay en nuestra collecion.

-



-Despues usamos varios comando como: "db.student.find({"name" :{"$eq:"Joe"}});" ,
"db.student.find({"name" :{"$ne:"Joe"}});" etc.. para realizar varias buequedas.





-"db.class.update" Modifica un documento existente en nuestra collecion.


domingo, 22 de septiembre de 2019

Restaurar una base de datos en MongoDB

1-Primero seleccionamos la base de datos que borraremos.

-Mostramos las bases de datos con "show dbs"


-En este caso usaremos "Tienda" usaremos el comando "use Tienda"


2-Eliminamos la base de datos con el siguiente comando:

   "db.dropDatabase()"


-Y listo eliminamos la base de datos "Tienda"


3-Ahora abrimos la consola cmd e ingresamos lo siguiente:

>cd desktop

>"mongorestore --db mitiendaweb --collection empleados dump/Tienda/empleados.bson"


4-Listo, ya restauramos nuestra base de datos y lo podemos verificar entrando a mongo y mostrando nuestras bases de datos.




Backup o Respaldo en MongoDB

-Entremos a mongo

-Mostramos las base de datos que tenemos con el comando "show dbs":


-En este caso usaremos la bd "Tienda":


-Despues abrimos la consola cmd e ingresamos lo siguiente:

>cd desktop

-Agregamos el siguiente comando :

>mongodump --db Tienda


-Que creara el Backup y una carpeta en el escritorio con los archivos de la base de datos "Tienda"


-Contenido de la carpeta dump:

-Contenido de la carpeta Tienda:

  -Y eso seria todo.



Usuarios con Roles y contraseñas

db.createUser({user: "NombreUsuario", pwd: "Password", roles: [ { role:"Privilegios(readWrite, read,etc.)", db: "NombreBD"}]})


Para verificar que nuestros usuario y contraseñas fueron agregados debemos usar:

db.auth("usuario", "contraseña")

y  nos debe aparacer un 1



Para mostrar los usuarios que tenemos en la base de datos admin usamos:

 db.getUsers()


martes, 17 de septiembre de 2019

Crear usuario

Para crear usuarios vamos a usar la bases de datos admin:

use admin
que sirve para almacenar datos de usuarios y sus privilegios. El primer usuario que debemos crear debe tener el privilegio 'userAdminAnyDatabase', que es el equivalente a 'root' o 'admin' (el "superusuario" que administra el sistema)

> db.createUser({user:'bertoldo', pwd:'gominolas', roles: ['userAdminAnyDatabase']})
Successfully added user: { "user" : "bertoldo", "roles" : [ "userAdminAnyDatabase" ] }

Ahora podemos salir y volver a entrar en mongo, para lo que debemos usar los datos del recién creado usuario

 mongo admin -u bertoldo -p
MongoDB shell version: 3.2.1
Enter password:
connecting to: admin
 
Creamos un nuevo usuario que sí puede acceder a cualquier base de datos:

> db.createUser({user:'herminia', pwd:'chufas', roles: ['readWriteAnyDatabase']})

Herminia puede escribir/leer, cambiar de base de datos etc. Sin embargo:

  • No puede crear usuarios
  • Sigue estando obligada a conectarse inicialmente a la base de datos admin,
    que es dentro de la cual fue creado el usuario.
Volvemos a salir/entrar en mongo con el usuario bertoldo, Ahora queremos crear un usuario 'aniceto' que solo tenga acceso de lectura y escritura a la base de datos repuestos, y solo de lectura a la base de datos de clientes.
Para ello, el administrador escribe:

db.createUser({user:'aniceto', pwd:'regalices', roles: [{role:'readWrite', db:'repuestos'}, {role:'read', db:'clientes'}]})

Bertoldo siente que tiene poco poder. Tiene el poder de crear y modificar usuarios, pero él mismo no puede leer y escribir en cualquier base de datos. Por ello decide utilizar db.updateUser para ampliar sus propios privilegios.


db.updateUser('bertoldo',  {roles: ['userAdminAnyDatabase', 'readWriteAnyDatabase']})
db.updateUser tiene dos parámetros (hay más que no contamos por simplicidad):

  • El nombre de usuario
  • El documento de configuracińo con la misma estructura que en createUser, y que reemplaza al que existe en todas las claves en las que coincidan

 

Roles

Tenemos que saber que a cada usuario se le pueden asignar uno o más roles. Los roles funcionan a nivel de base de datos.
Algunos de los roles más importantes son:

  • read: solo se permite la lectura en la base de datos (find, listar índices, colecciones)
  • readWrite: todos los de read y además permisos de escritura (creación y borrado de índices, drop, remove, update)
  • dbAdmin: permisos de lectura sobre las bases de datos system.indexes, system.namespaces y system.profile y además permiso de creación borrado de índices y colecciones en cualquier base de datos (pero no permiso de lectura)
  • dbOwer; cualquier acción administrativa en la base de datos
  • userAdmin: manejo de usuarios
  • clusterMonitor: lectura sobre las herramientas de monitorización
  • hostManager: Puede modificar y administrar servidores
  • clusterManager: manejo y moniorización del cluseter. Puede acceder a las bases de datos config y local
  • clusterAdmin: permisos de clusterManager, clusterMonitor, hostManager y además la acción dropDatabase
  • backup: privilegios para hacer backups (colección admin.mms.backup)
  • restore: permiso para la recuperación de backups (mongorestore sin opción --oplogReplay)
  • root: combina readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, y restore

Los roles: read, write, userAdmin, dbAdmin se aplican a una base de datos en concreto. También se dispone de versiones que se aplican a todas las bases de datos: readAnyDatabase, writeAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase.

Comandos para Backup y recuperación mongoDB

Mongodump

Mongodump creará ficheros bson grabando todos los datos de un mongod. Se puede usar con la sintaxis:

mongodump --host mongodb.example.net --port 27017

En el caso de conexión local podemos hacer simplemente mongodump En cualquier caso creará una carpeta dump (se puede cambiar con --out). La carpeta tendrá una subcarpeta por cada base de datos, incluyendo una para admin (y excluyendo la base de datos local).

Si se quiere hacer una copia de seguridad de solo una base de datos se puede usar la opción --db base de datos, y si dentro de la base de datos se quiere especificar una colección se usará --collection.

mongodump --collection cromos --db aficionesinfantiles

Si queremos podemos grabar la información comprimida añadiendo --gzip.

Otra opción interesante es --query <json>: permite grabar solo los documentos que devuelve la query, que debe incluirse entre comillas simples. La query también peude incluirse en un fichero y en ese caso se usará la opción --queryFile <path>

Un ejemplo;

mongodump --collection cromos --db infantil 
--query '{"_id":"patrulla canina"}' --out cromosquery

En cualquier la información grabada se puede consutar usando:
bsondump  fichero_dump

Mongorestore

Recupera un fichero creado con mongodump. Admite prácticamente los mismos argumentos, (exceptuando --query o --queryFile), añadiendo al final el nombre del fichero .bson.

Por defecto, mongorestore no "borra" las bases de datos y colecciones ya existentes; simplemente añade la nueva información. Si se quiere borrar previamente hay que añadir la opción --drop.

En el caso de haber usado compresión al hacer el dump se debe recuperar usando la opción --gzip:

mongorestore --gzip --archive=test.20150715.gz --db test
 
aunque también se puede hacer directamente a través del sistema operativo:

zcat /opt/backup/mongodump-2014-12-03/accounts.people.bson.gz 
| mongorestore --collection people --db accounts -
 
Mongoimport

Mongoimport: Permite importar ficheros en formato CSV, TSV o JSON. Un ejemplo:

mongoimport --db test --collection restaurants --drop --stopOnError --file primer-dataset.json

Importa el fichero (--file) primer-dataset.json dentro de la base de datos (--db) test, en particular como parte de la colección (--collection) restaurants. La colección será borrada primero (--drop) si ya existe. La importación parará si se encuentra un error (--stopOnError)

Mongoexport

Sirve para exportar ficheros en JSON or CSV, que luego se importarán con mongoimport

Este sistema es muy útil para colecciones sencillas o como interfaz con otras herramientas, pero el paso de BSON a JSON puede implicar pérdida de datos (por ejemplo fechas), y por tanto no se recomiendo para copias de seguridad.

Sistema de ficheros

Se trata de hacer copia de los directorios data. En otras bases de datos este sistema no es seguro; además de las carpetas con datos del usuario existen otras con diccionarios de datos etc, y copiar solo los directorios de datos del usuario puede conducir a incoherencias tras la recuperación en mongo no hay problema: si nos llevamos el directorio de datos podemos recuperarlo y la base de datos volverá al mismo estado (esto es cierto en loca, no tanto en conjuntos réplica o en sistemas con sharding).

Backup desde los secundarios


Sistema utilizado en conjuntos de réplica. La idea es que en un conjunto réplica se puede desconectar un secundario, hacer una copia de seguridad y luego volver a activarlo. Esto evita tener que parar el sistema durante la grabación. La administracion automática de los conjuntos de réplica haran que el servidor se "ponga al día" en poco tiempo.



Entrevista a un DBA



Entrevista a u DBA (Video)

Lo que entendi en el video fue que un DBA es el encargado de administar todos los datos de una empresa, manejan varios sistemas que estan conectados a base datos y resguardan los datos, una de sus principales herramientas son los manejadores y diseñadores de base datos, y usan compañias fuera de la empresa para los respaldos de los datos que ellos manejan.


Django, Yii y Hadoop.

Django es un framework de aplicaciones web gratuito y de código abierto (open source) escrito en Python. Un framework web es un conjunto de componentes que te ayudan a desarrollar sitios web más fácil y rápidamente.

 
¿Por qué necesitas un framework?
Para entender para que sirve realmente Django, necesitamos fijarnos en cómo funcionan los servidores. Lo primero es que el servidor necesita enterarse de que tu quieres que te sirva una página web.
Imagina un buzón (puerto) en el que alguien está constantemente mirando si hay cartas entrantes (peticiones). Esto es lo que hace un servidor web. El servidor web lee la carta, y envía una respuesta con la página web. Pero para enviar algo, tenemos que tener algún contenido. Y Django nos ayuda a crear ese contenido.



Yii es un framework open source (código abierto) de programación utilizado para desarrollar todo tipo de aplicaciones Web.

- Usa el patrón de Arquitectura de Software MVC (Modelo Vista Controlador) que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
- Provee un Nivel de Abstracción hacia la Base de Datos (DAO, Data Access Object) y se apoya en el patrón de arquitectura de datos Active Record.
- Incluye soporte para autenticación de usuarios basado en el modelo RBAC role-based access control o control de acceso basado en roles.
-   Herramientas para automatización y validación de Formularios
-   Integración con jQuery.
-   Avanzado control de Themes
-   Web services, herramientas para simplificar la tarea de generar y consumir servicios Web en diferentes formatos.
-   Internacionalización y Localización.
-   Sistema de manejo de cache.
-   Manejo de Errores.
-   Manejo de Seguridad (Sql injection,XSS, CSRF, cookie tampering, etc.).
- Generador de código automático, muy útil a la hora de implementar formularios o bien operaciones CRUD. Además de que el código generado cumple XHTML standards.
- Amigable y extensible, por lo cual se pueden usar sin problemas librerías de terceros como Pear, Zend, etc.
-  El manejo de errores y logging. Los errores son manejados y personalizados, y los log de mensajes pueden ser categorizados, filtrados y movidos a diferentes destinos.
- Las medidas de seguridad incluyen la prevención cross-site scripting (XSS), prevención cross-site request forgery (CSRF), prevención de la manipulación de cookies, etc.
-  Herramientas para pruebas unitarias y funcionales basados en PHPUnit y Selenium.
-  Generación automática de código para el esqueleto de la aplicación, aplicaciones CRUD, etc.
-Generación de código por componentes de Yii y la herramienta por línea de comandos cumple con los estándares de XHTML.
-Cuidadosamente diseñado para trabajar bien con código de terceros. Por ejemplo, es posible usar el código de PHP o Zend Framework en una aplicación Yii.




Hadoop es una estructura de software de código abierto para almacenar datos y ejecutar aplicaciones en clústeres de hardware comercial. Proporciona almacenamiento masivo para cualquier tipo de datos, enorme poder de procesamiento y la capacidad de procesar tareas o trabajos concurrentes virtualmente





Unidad 3 - Configuracion y Administracion del Espacio en Disco

3.1 Estructuras logicas de almacenamiento. Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien definidos que ...