Diferencia entre revisiones de «Usuario:ManuelRomero/mongoDB»

De WikiEducator
Saltar a: navegación, buscar
(Página reemplazada por «{{:Usuario:ManuelRomero/mongoDB/nav}} ===Instalación en linux ubuntu=== <br /> {{MRM_Web|Title=Referencia oficial| https://docs.mongodb.com/ *Instalación https://d...»)
 
(Una revisión intermedia por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{:Usuario:ManuelRomero/mongoDB/nav}}
 
{{:Usuario:ManuelRomero/mongoDB/nav}}
{{:Usuario:ManuelRomero/dwes/B2T8/BasesDatos/nav}}
 
 
 
 
===Instalación en linux ubuntu===
 
===Instalación en linux ubuntu===
 
<br />
 
<br />
Línea 13: Línea 10:
 
}}
 
}}
  
*Proceso de instalación:
+
{{MRM_Objetivo|Qué se verá en este tema|
#Importamos la clave pública para garantizar la autentificación de los paquetes
+
*Ver Mongo como otro gestor de bases de datos de tipo noSQKL
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
+
;Gestión de firmas y claves
+
*Para la instalación necesitamos disponer de una implementación de openPGP
+
*[https://www.goanywhere.com/managed-file-transfer/encryption/open-pgp?__hstc=265834128.c6b8aa7425238171dc3bd42aeb8be117.1584955950745.1584955950745.1584955950745.1&__hssc=265834128.1.1584955950746&__hsfp=1619013292 '''''OpenPGP'''''] es un estándar de código abierto de '''PGP''' '''''Pretty Good Privacy para uso público.
+
*Vamos a instalar, tal como proponen en la página oficial [https://gnupg.org/ gnupg] que es una implementación libre de '''''OpenPGP'''''
+
*Con esta aplicación podremos gestionar las claves públicas y privadas necesarias para la instalación y garantizar que los fuentes vienen de su sitio y no de otro.
+
  
<source lang=php>
 
sudo apt-get install gnupg
 
</source>
 
*Una vez instalado descargamos la clave pública del sitio web y la agregamos a nuestro fichero de claves públicas de claves pública
 
<source lang=bash>
 
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
 
</source>
 
*Ahora creamos un nuevo repositorio de instalaciones, para lo cual en nuestro directorio de '''''/etc/apt/sources.list.d''''' vamos a agregar un nuevo fichero con ubicaciones de repositorios de dónde instalar paquetes.
 
*Esto lo hacemos con el siguiente comando
 
<source lang=bash>
 
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
 
</source>
 
*Actualizamos los paquetes
 
<source lang=bash>
 
sudo apt-get update
 
<source>
 
*Instalamos mongo
 
<source lang=bash>
 
sudo apt-get install  mongodb-org
 
</source>
 
  
===Ejecutando===
 
*Arrancamos el servicio
 
sudo service mongod start
 
*Miramos la versión instalada (Se habrá instalado la última estable)
 
  mongod -version
 
Documentación
 
*Conviene leerse la documentación de http://www.mongodb.org primero, se expone de forma muy clara y concisa los difentes conceptos, no obstante realizaremos aquí un resumen que se adapte a lo que queremos utilizar
 
*Importante  aprender a hacer sentencias con JSON
 
*Considereo muy importante aprender  qué estamos haciendo, más que cómo hacemos las llamadas al controlador de bajo nivel...
 
  
*Para hacer pruebas, recomendado instalarse  MongoDB , Mongochef, Rockmongo ( sería cómo línea de comandos mysql o bien herramientas gráfics tipo  phpMyAdmin  o workbench, lógicamente con el gestor MongoDB).
 
*Vamos a trabajar con MongoChef , es muy intuitivo y gráfico, y a la vez con MongoDB para ver la línea de comandos
 
{{MRM_Web|Title=Referenicas de instalación |
 
https://github.com/iwind/rockmongo    [https://github.com/iwind/rockmongo  Rock_mongo]
 
https://studio3t.com/ [https://studio3t.com/ MongoChef]
 
*Otras referencias web
 
https://scalegrid.io/blog/which-is-the-best-mongodb-gui/
 
https://data-flair.training/blogs/rockmongo-in-mongodb/
 
  
 
}}
 
}}
 
===Concepto===
 
*Mongo db es una base de datos de documentos '''''Document Database'''''
 
*En lugar de Base de datos, tablas, columnas y filas, tenemos base de datos, colecciones y documentos
 
*La siguiente figura trata de mostrar la comparativa entre elementos
 
 
[[Archivo:mongo_sql.png]]
 
*Las bases de datos en sql serán bases de datos en mongo
 
*Los tablas en sql serán colleciones en mongo
 
*Los registros o tuplas serán documentos en mongo
 
*Un campo será un elemento del documento (campo en el json o array).
 
 
 
*En Mongo una Base de datos es un conjunto de colecciones
 
*Una colección es un conjunto o serie de documentos
 
*Un documento es igual que un array asociativo en php. Puede ser multidimensional
 
*Una colección es como una tabla; Es un conjunto de documentos e índices
 
 
===Mongo gestión en línea de comandos===
 
https://docs.mongodb.com/manual/core/databases-and-collections/
 
*Vamos a usar mongo como usaríamos mysql en línea de comnados
 
<source lang=bash>
 
mongo
 
</source>
 
*Seleccionar una base de datos en mongo
 
<source lang=bash>
 
use <db>
 
</source>
 
*Crear una base de datos en mongo, consiste en especificar una que no existe
 
use <new_db>
 
*Ver las colecciones de una base de datos
 
<source lang=bash>
 
show collections
 
</source>
 
*Crear una colección nueva, al insertar el primer documento en una collección que no exista, ésta se crea
 
*Para insertar un documento usamos el método '''''save()'''''
 
<source lang=bash>
 
use datos_manuel
 
db.datos_manuel.amigos()
 
show collections
 
</source>
 
*Ver la estructura de una colección
 
 
 
*Ver el contenido de una coleccion  (select * from tabla)
 
<source lang=bash>
 
db.<colecion>.find()
 
</source>
 
*Dar a la salida un formato más legible
 
<source lang=bash>
 
db.<colecion>.find().pretty()
 
</source>
 
 
===MongoDB y PHP===
 
*Instalar el driver
 
#Interrogamos al sistema para ver si el driver está instalado
 
php --re mongo
 
*En nuestro caso obtenemos la siguiente respuesta, por lo que no está instalado
 
Exception: Extension mongo does not exist
 
*Para instalarlo lo podemos hacer de diferentes modos. En nuestro caso usaremos pecl
 
sudo pecl install mongo
 
*Es importante leer la última línea de la instación
 
...
 
You should add "extension=mongo.so" to php.ini
 
*Pues lo hacemos
 
 
*Si posteriormente queremos acutalizar
 
sudo pecl update-channels
 
sudo pecl upgrade mongo
 
*No olvidemos rebotar el sistema para que el driver tenga funcionalidad en el mismo
 
*En mi caso aún no funcionaba y he realizado lo siguiente:
 
Crear un fichero mongo.ini para que cargue la extension
 
 
#/etc/php5/mods-available $ sudo ln -s ../mods-available/mongo.ini  mongo.ini
 
*El contenido del fichero mongo.ini
 
extension=mongo.so
 
*Reboto el servicio y verifico que está el módulo
 
php --re monog
 
o
 
php -m
 
 
;Nomenglatura
 
Tabla            colección o collection
 
fila o tupla         
 
campo           
 
valor del campo
 
consulta
 
                  diccionario o dictionary
 
;Conectar a la bd
 
mongo
 
;seleccionando BD
 
*Muestra la bd con la que actualmente estoy trabajando, por defecto '''''test'''''
 
db
 
*Mostrar todas las bases de datos del sistema que contengan algo de información
 
show dbs
 
*Cambiar a una base de datos llamada local
 
use local
 
;
 
 
===Autorización===
 
*Si usamos autorización ya no cualquiera puede hacer cualquier cambio en la base de datos
 
*Para autorizarse
 
db.auth("user","pass");
 
*(user y pass son las credenciales).
 
==Práctica==
 
*Instalamos mongodb en docker
 
<source lang=bash>
 
  docker run --name mongodb -p 27017:27017 -v mongodbdata:/data/db mongo
 
</source>
 
*Instalamos la librería de php para utilizar mongo
 
<source lang=bash>
 
sudo apt-get install php-mongodb
 
</source>
 
 
*creamos '''''composer.json'''''
 
<source lang=php>
 
{
 
    "require": {
 
        "mongodb/mongodb":"^1.0.0"
 
    }
 
}
 
</source>
 
*Orquestamos en el directorio del nuevo proyecto
 
<source lang=bash>
 
composer update
 
</source>
 

Última revisión de 01:40 25 mar 2020


Instalación en linux ubuntu






Icon objectives.jpg
Objetivo
Qué se verá en este tema