BD Documental
BD Documental
BD Documental
Concepto
Una base de datos documental est constituida por un conjunto de programas que
almacenan, recuperan y gestionan datos de documentos o datos de algn modo
estructurados. Este tipo de bases de datos constituyen una de las principales subcategoras
dentro de las denominadas bases de datos No SQL. A diferencia de las bases de datos
relacionales, estas bases de datos estn diseadas alrededor de una nocin abstracta de
"Documento".
Este tipo de base de datos est orientada exclusivamente a gestionar de forma efectiva el
almacenamiento y acceso a documentos. Las bases de datos orientadas a documentos no
almacenan datos en esquemas estrictos ni usan tablas con campos uniformes.
Obviamente, los documentos son el concepto principal en las bases de datos NoSQL
basadas en documentos. La base de datos almacena y recupera documentos, que pueden
ser XML, JSON, BSON o muchos otros. Estos documentos son estructuras de datos
jerrquicas auto describibles que pueden contener mapeos, colecciones o valores
escalares. Los documentos almacenados son similares unos a otros pero no tienen que ser
en s exactamente iguales.
Dentro las bases de datos orientadas a documentos se hace un uso intensivo de pares
clave/valor, considerndose a la base como un conjunto de identificadores y documentos,
y los documentos a su vez como un conjunto de campos y valores.
Los pares clave/valor son muy usados en cloud computing (computacin de la nube), un
buen ejemplo de esto es el algoritmo Map/ Reduce; adicionalmente las bases de datos
documentales pueden ser consideradas tambin como tablas hash y son optimizadas para
datos accedidos mediante clave primaria.
El no contar con una estructura estricta las hace ms eficientes al momento de manejar
grandes volmenes de documentos. Y la ausencia de relaciones, facilita la replicacin de
datos, pero denota la dificultad para modelos complejos.
La indexacin y
El lenguaje Documental
Ventajas
No estn sujetas a esquemas estrictos
Poseen un lenguaje de consulta orientado al lenguaje natural
Extrema sencillez en el escalado horizontal.
Instalaciones
Instalacin de MongoDB en MS Windows
C:\data
C:\data\db
D:\mongodb\data\db
C:\mongodb\bin\mongod.exe
6. (Opcional) Si se usa una ruta personalizada se debe pasar un parmetro con la ruta
al iniciar el servidor de mongo.
C:\mongodb\bin\mongo.exe
Instalacin de MongoDB en Linux Ubuntu
A partir de la versin 3.0, MongoDB se puede instalar de una forma ms fcil en Linux
Para instalar una versin especfica, debe especificar cada componente de forma individual
junto con su nmero de versin, como en el siguiente ejemplo:
mongo --version
Si nos indica un nmero de versin, por ejemplo MongoDB shell version: 3.2.5, quiere
decir que tenemos instalada correctamente la versin 3.2.5 de MongoDB.
Manipulacin
Manipulacin de datos: colecciones y documentos
MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinmico
llamado BSON, lo que implica que no existe un esquema predefinido. Los elementos de los datos
se denominan documentos y se guardan en colecciones.
Una coleccin puede tener un nmero indeterminado de documentos. Comparando con una base
de datos relacional, se puede decir que las colecciones son como tablas y los documentos son
registros en la tabla. La diferencia es que en una base de datos relacional cada registro en una
tabla tiene la misma cantidad de campos, mientras que en MongoDB cada documento en una
coleccin puede tener diferentes campos. En un documento, se pueden agregar, eliminar,
modificar o renombrar nuevos campos en cualquier momento,22 ya que no hay un esquema
predefinido. La estructura de un documento es simple y compuesta por pares llave/valor, parecido
a las matrices asociativas en un lenguaje de programacin, esto es debido a que MongoDB sigue el
formato de JSON. En MongoDB la clave es el nombre del campo y el valor es su contenido, los
cuales se separan mediante el uso de :, tal y como se puede ver en el siguiente ejemplo. Como
valor se pueden usar nmeros, cadenas o datos binarios como imgenes o cualquier otro.
En este ejemplo se puede ver que en el campo Address se contiene otro documento que tiene
los campos de Street y City.
{
"_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
"Last Name": "PELLERIN",
"First Name": "Franck",
"Age": 29,
"Address": {
"Street": "1 chemin des Loges",
"City": "VERSAILLES"
}
}
Consultas
Algunas operaciones bsicas para saber cmo manipular los datos en MongoDB.
> db.autores.insert({
nombre : 'Jonathan',
apellido : 'Wiesel',
secciones : ['Como lo hago' , 'MongoDB']
});
> db.autores.insert(autorDelPost);
Ahora si se ejecuta el comando show collections se puede ver que se encuentra una nueva
coleccin de autores:
autores
...
> db.autores.insert({
nombre : 'Oscar',
apellido : 'Gonzalez',
secciones : ['iOS' , 'Objective C' , 'NodeJS' ],
socialAdmin : true
});
> db.autores.insert({
nombre : 'Alberto',
apellido : 'Grespan',
secciones : 'Git',
genero : "M"
});
Se aprecia que se insertaron nuevos documentos en la coleccin de autores que tienen otra
estructura, en MongoDB esto es completamente posible y es una de sus ventajas.
> db.autores.find();
Se denota que la bsqueda arroja los objetos resultantes, en este caso los documentos de los 3
autores que insertamos acompaados del identificador nico que crea MongoDB, este
campo _id se toma adems como ndice por defecto.
Si se desea se puede manualmente especificar el valor del campo _id cuando estas insertando los
registros con el comando db.coleccion.insert(); sin embargo ten en cuenta que debes asegurar que
este valor sea nico, de lo contrario los registros con dicho campo duplicado resultarn en error
por clave primaria duplicada.
Una bsqueda como la anterior sera similar en SQL a:
SELECT * FROM autores
Filtros
Si se quiere hacer la bsqueda pero filtrada por los algn parmetro. Para esto se debe pasar el
filtro deseado a la funcin find(), busquemos a los administradores sociales para probar:
Filtrar por varias condiciones, primero se probara con filtros donde TODOS se deben cumplir:
> db.autores.find({
$or: [
{socialAdmin : true},
{genero: 'M'}
]
});
En este caso se esta filtrando por aquellos autores que son administradores sociales aquellos que
tengan el campo gnero con el carcter M.
En SQL sera similar a:
SELECT * FROM autores WHERE socialAdmin = true OR genero = 'M'
Limitar y Ordenar
Si se quiere limitar los resultados a un nmero mximo especificado de registros es tan fcil como
agregar .limit(#) al final del comando .find():
> db.autores.find().limit(1)
Otros filtros