|
|
(2 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
| + | {{:Usuario:ManuelRomero/mongoDB/nav}} |
| ===Instalación en linux ubuntu=== | | ===Instalación en linux ubuntu=== |
| <br /> | | <br /> |
Línea 9: |
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>
| |