la base de datos MongoDB
A, conocimientos MongoDB
MongoDB es una fuente de desarrollo del lenguaje C abierto, multiplataforma, la base de datos NoSQL orientada a documentos
¿Cuál es NoSQL?
Los datos no se almacenan en el modelo relacional se basa, no requiere un formato de mesa fija. la base de datos no relacionales como un suplemento de base de datos relacional, en la era de cada vez más rápido desarrollo del sitio juega un eficiente y de alto rendimiento, NoSQL para almacenar datos muy gran escala
Comúnmente se usa la base de datos no relacionales: MongoDB, Memcache Redis, HBase
Las ventajas de las bases de datos no relacionales: 1. La demanda de alta simultáneas de lectura y escritura de base de datos
2. Alta eficiencia de almacenamiento masivo de datos y el acceso
Alta escalabilidad y alta disponibilidad requisitos 3. Base de datos
definición MangoDB
MongoDB es un producto con función entre bases de datos relacionales y bases de datos no relacionales, funciones de bases de datos no relacionales entre los más ricos y como una base de datos relacional
Proporciona aplicaciones escalables Web a soluciones de almacenamiento de datos de alto rendimiento, aplicados principalmente a la caché de datos, distribuida escena lugar de almacenamiento y datos en formato JSON de documentos para grandes cantidades de datos , alta concurrencia , bajo transaccionales aplicaciones de Internet
MongoDB ventajas y desventajas
Ventajas: Flexibilidad altamente escalable, Distributed Computing, de bajo costo, la arquitectura, los datos semi-estructurados, la relación no complicado
MongoDB proporciona replicación, la alta disponibilidad y la fragmentación automática, apoyar una rica expresiones de consulta, es compatible con una variedad de lenguajes de programación, tales como Ruby, Python, Java, C ++, PHP, C #, etc.
Contras: no estandarizada, función de búsqueda limitado
MongoDB ejecuta dos conceptos : de recogida (recogida) y documentos (document)
concepto de mesa MongoDB sustituyó a la recogida de datos en un documento de concepto
Dos, MongoDB para Linux instalación
1. Descargar e instalar MongoDB dependencias del paquete de instalación
yum -y install openssl-devel
tar zxf mongodb-Linux-x86_64-rhel62-3.2.10.tgz
mv mongodb-Linux-x86_64-rhel62-3.2.10 / usr / / mongodb locales
2. Crear de MongoDB directorio de almacenamiento de datos / Data / mongodb1 , directorio de registro / los registros de datos / , archivos de registro , y añadir la autoridad
Tenga en cuenta que algunos de los métodos más parecido a UNIX sistemas operativos, incluyendo Linux y OS X, proporciona límite básico para cada proceso y cada usuario utilizando hilos, archivos y conexiones de red y otros recursos del sistema:
mkdir -p / data / mongodb1
mkdir -p / data / logs / mongodb
tocar /data/logs/mongodb/mongodb1.log
chmod -R 777 /data/logs/mongodb/mongodb1.log
Cuando MongDB visitó con frecuencia en el estado, si el shell para iniciar el proceso ocupada de recursos es demasiado bajo, se producirá un error no se puede conectar MongoDB, necesita conjunto
sistemas Linux procesar un número máximo predeterminado de los archivos abiertos es de 1024 veces, valores por defecto para estos límites son demasiado pequeños, que pueden causar una serie de problemas durante el funcionamiento normal MongoDB
-u de 25.000 ulimit (número único proceso de archivos abiertos)
-n de 25.000 ulimit (proceso abierto / hilo)
3. Crear un archivo de configuración MangoDB y establecer los parámetros de inicio
vim /usr/local/mongodb/bin/mongodb1.conf
port=27017 \\默认服务端口号
dbpath=/data/mongodb1 \\数据存储目录
logpath=/data/logs/mongodb/mongodb1.log \\日志文件
logappend=true \\使用追加的方式写日志
fork=true \\后台运行
maxConns=5000 \\最大同时连接数,默认是2000
storageEngine=mmapv1 \\指定存储引擎为内存映射文件
4. Ajuste los parámetros del kernel
echo "0"> / proc / sys / vm / zone_reclaim_mode
sysctl -w vm.zone_reclaim_mode = 0
eco "nunca"> / sys / kernel / mm / transparent_hugepage / habilitado
eco "nunca"> / sys / kernel / mm / transparent_hugepage / desfragmentación
5. Inicio y parada MongoDB
启动: / usr / local / mongodb / bin / mongod --config /usr/local/mongodb/bin/mongodb1.conf
停止: / usr / local / mongodb / bin / mongod --config /usr/local/mongodb/bin/mongodb1.conf --shutdown
Multi-instancia de MongoDB
MongoDB para crear un nuevo directorio de almacenamiento de datos / Data / mongodb2 , archivos de registro y permisos para agregar,
mkdir / data / mongodb2
tocar /data/logs/mongodb/mongodb2.log
chmod -R 777 /data/logs/mongodb/mongodb2.log
En el directorio principal de almacenamiento de archivos de configuración para crear un nuevo archivo de configuración principales, comparando la primera instancia de los siguientes parámetros se pueden modificar el archivo de configuración (es necesario crear varias instancias de copia de editar varios nombres diferentes)
vim /usr/local/mongodb/bin/mongodb2.conf
port = 27018
dbpath = / data / mongodb2
logpath = / data / logs / mongodb / mongodb2.log
Iniciar la instancia (inicio de la misma forma con la primera instancia)
Tres, base MongoDB
estructura de almacenamiento MongoDB
Estructura lógica compone principalmente de una colección (Collection) , el documento (el documento) , base de datos (base de datos) compuesto de tres partes, que es el concepto básico del documento, que es la unidad de almacenamiento MongoDB almacenamiento lógico más pequeña
★ colección:
nombre legal de la colección: un nombre de colección no puede ser una cadena vacía "".
2. El nombre de la colección no puede contener el carácter \ 0 (carácter nulo), este personaje representa el final del nombre de la colección.
3. El nombre de la colección no puede ser "sistema". En un principio, que está reservado para el sistema de recogida del prefijo.
4. Nombre de la colección creada por el usuario no puede contener caracteres reservados, algunos conductores de apoyo incluidos en el conjunto estaban allí, esto se debe a que la colección contiene un poco de carácter generado por el sistema, a menos que desee acceder a esta colección creada por el sistema, o un mil $ millones no va a aparecer en el nombre
★ documento:
Documento es un conjunto de teclas (clave-valor) par (es decir BSON), MongoDB documento necesidad no establece el mismo campo, y el mismo tipo de necesidad campo de datos no ser idéntico, que es muy diferente de una base de datos relacional, también MongoDB característica muy destacada
Tenga en cuenta que: 1. El documento de pares clave / valor se ordenan
2. El valor del documento puede ser no sólo el interior de la cadena entre comillas dobles, también puede haber varios otros tipos de datos (o incluso todo el documento incrustado)
3.MongoDB para distinguir los tipos y sensible
4.MongoDB documento no puede tener claves duplicadas
Los documentos claves son cadenas , con pocas excepciones, la clave puede ser cualquier carácter UTF-8
estructura de almacenamiento físico:
estructura de almacenamiento de datos: archivo de espacio de nombres (.ns final del archivo) archivo de datos (.0,1,2,3 ...)
Entrar estructura de almacenamiento: archivos de registro diario: para la protección de recuperación de bloqueo MongDB
operación de copia de archivo de registro oplog: sólo aparece después de la apertura principal de la copia
registro de consultas lentas: puede ser necesario abrir después
★ base de datos:
Inicial base de datos integrada: admin: administrador de base de datos Biblioteca Central almacenar información de la cuenta.
locales: base de datos local nunca ha de ser copiado desde el nodo, que puede ser utilizado para almacenar cualquier conjunto de servidores se limita a un solo local,
config: config entorno de clúster de base de datos para la fragmentación, el almacenamiento de piezas de información relacionados metadatos.
prueba: por defecto MongoDB creó una biblioteca de prueba
tipo de datos MongoDB
Cadena : datos de cadena almacenados tipo de datos común, en MongoDB, cadena UTF-8 codificado es válido
Entero : valor entero para almacenar un valor, de acuerdo con el servidor que está empleado, puede ser dividido en 32 bits o un 64-bit
Boolean : valor booleano, para almacenar el operador booleano (verdadero / falso)
doble : doble precisión valor de punto flotante, para el almacenamiento de punto flotante valores
Min / Max Keys : un valor mínimo y el elemento de BSON (JSON binario) y los valores máximos de la proporción relativa
matriz : matriz o lista de uno o más valores se almacenan como una clave de
marca de tiempo : marca de tiempo, modificar o añadir registros documentar un momento determinado
de objetos : documentos incorporados para
nula : Crea un valor vacío
Símbolo : símbolos, sustancialmente idéntico al tipo de cadena de tipo de datos, pero la diferencia es que se utiliza generalmente con tipos especiales de símbolos de idioma
una fecha : fecha y hora, un formato de tiempo UNIX para almacenar la fecha o la hora actual. Se puede especificar su propia fecha y hora: crear un objeto Date, pasar información actualizada
de objetos ID : ID del objeto, que se utiliza para crear el documento de identificación
binaria Fecha : datos binarios para almacenar datos binarios
Código : Introduce el código para el documento código JavaScript se almacena
la expresión regular: Tipos de expresión regular. Se utiliza para almacenar expresiones regulares
operativo subyacente de MongoDB
Registro local: / usr / local / MongoDB / bin / mongo (27017 por defecto el puerto de inicio de sesión, prueba de la base de datos, no hay ninguna contraseña de usuario por defecto)
Telnet: MongoDB: // zhangsan: [email protected]: 27017
Ver la base de datos:> Mostrar DBS
Muestra al usuario:> Mostrar los usuarios
bases de datos de conmutación:> nombre de la base uso (si la base de datos no existe, crear una base de datos, o el interruptor a la base de datos especificada)
Base de datos de visualización comando de operación:> db.help ()
Ver la colección:> Mostrar las Colecciones
Viendo comando de operación de recolección:> . Db nombre de la colección .help ()
Cómo encontrar la documentación:> nombre de la colección db .find ().
Crear una colección:> db.createCollection (nombre, Opciones)
Opciones parámetros:
cubiertas (booleanas) :( opcional) Si es verdad, a continuación, crear un conjunto de, conjunto fijo fijo es una colección con un tamaño fijo, cuando se alcanza el valor máximo, se sobrescribe automáticamente los documentos más antiguos, cuando el valor es verdadero se debe especificar el tamaño de parámetro
autoIndexId (Boolean) :( opcional) como verdadero, el índice se crea por defecto de campo automáticamente _id a falsa
tamaño (valor) :( opcional) especificar un conjunto de máximo fijado (en bytes metros), si el tapado es cierto, pero también es necesario especificar el campo
máximo (valor) :( opcional) Especifica el número máximo de documentos contenidos en el conjunto de fijo
Crear un conjunto fijo de prueba, todo el espacio de recogida 6142800 KB, el número máximo de documentos a 10000
> Db.createCollection ( "test", {cubiertas: true, autoIndexId: verdad, tamaño: 6142800, max: 10000})
La colección se va a convertir en un conjunto fijo de recopilación de datos no se pueden modificar fijo , sólo para descubrir - borrado - y luego insertar , crear una colección que se establece cuando el parámetro cubiertas de verdad
Insertar un documento para crear automáticamente una colección:
> Db.test.insert ({ "name": "zhangsan"}
Crear un documento:
generar automáticamente _ID:> . DB .Insert collectionname ({ "clave": " valor"})
Puede especificar manualmente _id:> Db nombre de la colección .save (documento).
mantenimiento de rutina cuatro, MongoDB
MongoDB respaldo y recuperación de
Herramienta de exportación de datos: mongoexport
MongoDB es una herramienta de recopilación mongoexport se puede exportar como archivos JSON o CSV
mongoexport -d -c nombredb collectionname -o archivo --type JSON / csv -f campo
Herramienta de importación de datos: mongoimport
mongoimport -d -c nombredb collectionname --file nombre --type JSON / csv -f campo
-d: especifica el nombre de la base
-c: Especifica el nombre de la colección de la colección
-f: Especifica qué columnas a la exportación
-o: Especifica el nombre del archivo que desea exportar
-q: Especifica los criterios de filtrado de datos a la exportación
Nota: En la importación de MySQL tiempo , antes de la exportación de MySQL cuando las bases de datos complemento opciones, la importación cuando no pueden crear
MongoDB copia de seguridad y recuperación: mongodump
Copia de seguridad: mongodump dbhost -d nombrebd -h -o dir
Recuperación: mongorestore dbhost -d nombrebd -h dir -dir
-H: MongoDB dirección IP del servidor se encuentra (especifique el número de puerto se puede añadir más tarde)
-d: Especifica la copia de seguridad de la instancia de base
-o: Especifica la ubicación de la base de datos almacenada en la copia de seguridad (el directorio que se ha creado de antemano, directorio de prueba los datos de copia de seguridad se almacena creado automáticamente en el directorio)
Copiar la base de datos MongoDB base de datos
> Db.copyDatabase ( "DB1", "DB2", "localhost")
Un conjunto de clones (de la copia remota para el conjunto actual de ejemplos instancia MongoDB MongoDB, el mismo nombre es set)
> Db.runCommand ({ "cloneCollection": "abc.test", "de": "192.168.100.7:27017"})
Gestión de la Seguridad MongoDB
Restricciones de escucha dirección IP y el puerto (situado en el archivo de configuración)
vim /usr/local/mongodb/conf/mongodb.conf
= 192.168.0.111 bind_ip \\ sólo permiten el acceso a esta dirección IP
= 27017 Puerto \\ sólo permiten el acceso al número de puerto
Está autorizado para iniciar la conexión userAdminAnyDatabase (MongoDB contraseña por defecto primero no es necesario, ni ningún usuario)
1. Accede a la base de datos, cambiar al administrador de la biblioteca
> Utilización de administración
2. Crear un usuario administrativo
> Db.createUser ({usuario: "admin", pwd: "123456", los roles: [{rol: "userAdminAnyDatabase", db: "admin"}]})
funciones: las funciones de usuario especificados , puede ser una matriz vacía a la nueva función de usuario conjunto vacío, en papeles en el campo, puede especificar la función funciones definidas por el usuario incorporado y
Funciones integradas (integradas en parte):
los roles de base de datos de usuarios: lectura, escritura y lectura;
las funciones de administración de bases de datos: dbadmin, dbowner, UserAdmin
funciones de gestión de racimo: clusterAdmin, clusterManager, clusterMonitor, hostManager
copia de seguridad y la función de recuperación: copia de seguridad, restaurar
todas las funciones de base: readAnyDatabase, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase
rol de superusuario: raíz
suplementos: hay varios papel directo o indirecto proporciona acceso súper sistema de usuario (dbowner, UserAdmin, userAdminAnyDatabase)
funciones internas: __ sistema
dbadmin : permite a los usuarios realizar las funciones de gestión de bases de datos específicas, como la indexación para crear, eliminar, o ver las estadísticas de acceso system.profile
UserAdmin : permite a un usuario escribir en system.users, usted puede encontrar especificar la base de datos para crear, eliminar y administrar usuarios
clusterAdmin : admin sólo está disponible en la base de datos, el usuario da toda función de correlación privilegios fragmentación y conjuntos de replicación
3. Inicio de autenticación de usuario
/ Usr / local / mongodb / bin / mongod -f /usr/local/mongodb/conf/mongodb.conf --auth
O editar el fichero de configuración: vim /usr/local/mongodb/conf/mongodb.conf
Añadir auth = true
Vista de usuario existente:> Mostrar los usuarios o> db.system.users.find ()
4. Registro de MongoDB, utilizando la biblioteca de verificación de acceso de administrador de usuario de administración
> Utilización de administración
> Db.auth ( "admin", "123456")
Con administrativa usuario administrador de usuario para crear el nombre de usuario y la contraseña de base de datos adicional
> Prueba de uso
> Db.createUser ({Usuario: "testuser", pwd: "123456", papeles: [{papel: "READWRITE", db: "test"}]})
更新用户:> db.updateUser ( 'testuser', {pwd: "111111", los roles: [{rol: "lectura-escritura", db: "test"}]})
Eliminar usuario:> db.dropUser ( "testuser")
Nota: con permisos de usuario administrativos usuario administrador puede eliminar un usuario después de aterrizar
Gestión de procesos
Procesar el bienestar operación de consulta realizada:> db.currentOp ()
Terminar el proceso:> db.killOp ( "shard3: 466 404 288")
Monitoreo MongoDB
1. Base de datos de Command View
Ver base de datos de información del estado de instancia:> db.serverStatus ()
Ver las estadísticas de bases de datos actuales:> db.stats ()
Ver una recopilación de estadísticas:> db.users.stats ()
Ver el tamaño de la colección:> db.users.dataSize ()
2. ser monitoreados (editar el archivo de configuración) a través de la web: vim /usr/local/mongodb/conf/mongodb.conf
Añadir httpinterface = true
Por 28017: http: // localhost para el acceso web
3. Herramientas de monitoreo tripartitos: Nagios
Suplementaria instalar MongoDB bajo Windows:
inicio mongo.exe
instalación de software de visualización MongoDB