Diferencia entre revisiones de «Usuario:ManuelRomero/mongoDB/conceptos»

De WikiEducator
Saltar a: navegación, buscar
 
Línea 2: Línea 2:
 
   
 
   
 
===Concepto===
 
===Concepto===
 
 
*Mongo db es una base de datos de documentos '''''Document Database'''''
 
*Mongo db es una base de datos de documentos '''''Document Database'''''
 +
*Esto quiere decir que está basada en documentos
 +
*Nosotros conocemos una base de datos referenical de tipo sql, basada en tablas con tuplas o registros y referencias entre ellas a partir de la clave pública/clave privada
 +
*Ahora
 +
*En este nuevo modelo, las bases de datos, en lugar de estar formadas por , '''tablas, columnas y filas''', estarán formadas por '''''colecciones y documentos'''''.
 +
*Analiza la siguiente imagen viendo la comparativa entre de los elementos en ambos sistemas:
 +
[[Archivo:mongo_sql.png|800px|center]]
 +
{{MRM_Activdad|Title=Puntos clave
 +
'''''Bases de datos''''' en sql serán '''''bases de datos''''' en mongo
 +
'''''Lss tablas''''' en sql serán '''''colecciones''''' en mongo
 +
'''''Los registros o tuplas00000 serán '''''documentos''''' en mongo
 
   
 
   
*En lugar de Base de datos, tablas, columnas y filas, tenemos base de datos, colecciones y documentos
+
*La forma de especificar un docuemento (una fila en el modelo sql), será a través de un fichero json o un array asociativo.
 +
}}
 
   
 
   
*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
 
*En Mongo una Base de datos es un conjunto de colecciones
 
   
 
   
 
 
*Una colección es un conjunto o serie de documentos
 
*Una colección es un conjunto o serie de documentos
 
   
 
   
 
 
*Un documento es igual que un array asociativo en php. Puede ser multidimensional
 
*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
 
*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 03:53 25 mar 2020



Concepto

  • Mongo db es una base de datos de documentos Document Database
  • Esto quiere decir que está basada en documentos
  • Nosotros conocemos una base de datos referenical de tipo sql, basada en tablas con tuplas o registros y referencias entre ellas a partir de la clave pública/clave privada
  • Ahora
  • En este nuevo modelo, las bases de datos, en lugar de estar formadas por , tablas, columnas y filas, estarán formadas por colecciones y documentos.
  • Analiza la siguiente imagen viendo la comparativa entre de los elementos en ambos sistemas:
Mongo sql.png

Plantilla:MRM Activdad

  • 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