人工智能(MongoDB)—— MongoDB基础知识

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

一、基础

1、数据存储阶段

        文件管理阶段(.txt  .doc  .xls)
                优点:使用简单方便
                            数据能够长期保存
                            可以存储大量数据
                缺点:数据一致性差
                            数据的查找修改不方便
                            数据冗余
        数据库管理阶段
                优点:数据组织结构化,降低了冗余度
                            提高了增删改查的效率
                            容易扩展
                            方便程序调用,做自动化的处理
                缺点:需要使用sql或者其他特定的语句,相对比较复杂

2、数据库相关概念

        数据:能够输入到计算机中并被识别处理的信息集合。
        数据结构:研究一个数据集合中数据之间关系的。
        数据库:按照数据结构,存储管理数据的仓库。数据库是在数据库管理系统管理和控制下,在一定介质上的数据集合。
        数据库管理系统:管理数据库的软件,用于建立和维护数据库。
        数据库系统:由数据库和数据库管理系统,开发工具等组成的集合。

3、数据库类型

a、关系型数据库

        采用关系模型来组织数据结构的数据库(二维表)
        典型代表:Oracle   DB2   SQLServer   MySql   SqLite(Python标准库支持)

        优点:容易理解,类似我们常见的表格
                    使用方便,都是使用sql语句,SQL语句非常成熟
                    数据一致性高,冗余度低,完整性好
                    技术成熟,可以使用外部链接等比较复杂的操作

        缺点:每次都需要sql语句的解析,消耗大
                    不能很好的满足高并发需求,针对含量数据的瞬间爆发读写性能不足
                    关系型数据库内部每一步操作都需要加锁,以保证操作的原子性,增加了数据库负担
                    数据扩展普遍比非关系型困难
                    数据一致性高,有时会浪费大量空间

b、非关系型数据库(NoSql --> Not only  Sql)

        优点:高并发,大数据读写能力强
                     支持分布式,容易扩展
                    弱化了数据结构,降低了数据的一致性

        缺点:通用性差,没有sql语句一样的一致化操作
                    操作过于冗长,容易混乱
                    没有join,很多也不支持事务等操作

        Nosql的使用情况:
            * 对数据一致性要求低
            * 数据库需要处理海量并发
            * 数据库设计时对大小的估算不确定,需要分布拓展
            * 给定的数据比较容易建立起Nosql的模型

        Nosql分类:
                键值型数据库:Redis、oracle、BDB、Tokyo
                列存储数据库:HBase
                文档型数据库:MongoDB、CouchDB
                图形数据库

二、MongoDB基础

MongoDB(非关系型数据库 --》文档型数据库)
        1. 由c++编写的数据库管理系统
        2. 支持非常丰富的增删改查数据操作
        3. 支持非常丰富的数据类型
        4. 使用方便,便于部署,支持分布,容易拓展
        5. 支持众多的编程语言接口 (python  ruby  c++  c#  PHP)

1、MongoDB 安装

a、自动安装

        sudo  apt-get  install  mongodb

        说明:
                默认安装位置   /var/lib/mongodb
                配置文件   /etc/mongodb.conf
                命令集    /usr/bin   /usr/local/bin

b、手动安装

        1.下载MongoDB(开源)
                www.mongodb.com  ---》 Download  ---》 community server
                选择合适版本下载  

        2. 选择安装目录解压(/usr/local   /opt)
                tar解压后得到mongo文件夹

        3. 将文件夹下的命令集目录(bin目录)添加到环境变量
                PATH=$PATH:/opt/mongo....../bin
                export PATH
                将以上两句写在 /etc/rc.local  

        4. 重启系统

c、补充说明

将mongodb设置为开机启动
        1. 新建文件夹db作为数据库数据存储了路径
                cd /data
                mkdir db
        2. 设置mongod为开机启动
                sudo vim /etc/rc.local
                添加如下一行到文件/etc.rc.local 的"exit 0"行之前:
                sudo /opt/mongodb-linux-x86_64-ubuntu1604-3.4.10/bin/mongod --dbpath /data/db
        3. 重启
                reboot

2、mongodb命令

        设置数据库存储位置
                mongod  --dbpath    目录
        设置端口号
                mongod  --port   8888
                *如果不设置则使用默认端口号  27017

        mongo  
                进入mongo  shell界面,mongodb的交互界面用来操作数据库
                退出mongo shell   :  quit()

3、mongodb组成结构

        键值对 ---》 文档 ----》集合 ----》 数据库

4、mysql与mongodb

mysql数据存储表
ID name    age
1 Lily     17
2 Lucy     18

mongodb数据存储格式:
        {
             "_id":ObjectId("abcd1234afhkasyr"),
             "name":"Lily",
             "age":17
        },
        {
             "_id":ObjectId("abcd1234afasfsyr"),
             "name":"Lucy",
             "age":18
        }

mysql 和 mongodb 概念对比
mysql mongo 含义
database database 数据库
table collection 表 / 集合
column field 字段 / 域
row document 记录 / 文档
index index 索引

三、数据库的维护

1、数据库的备份和恢复

        备份
                mongodump  -h  dbhost  -d  dbname   -o  dbdir
                e.g.   mongodump  -h 127.0.0.1 -d stu -o student
                             将本机下stu 数据库备份到当前目录的student文件夹中
                             会在student文件夹中自动生成一个stu文件夹则为备份文件

        恢复
                mongorestore  -h  <dbhost>:<port> -d  dbname  <path>
                e.g.  mongorestore -h 127.0.0.1:27017 -d test student/stu
                            将student文件夹下的备份文件stu恢复到本机的test数据库

2、数据库的监测
        命令:mongostat
                insert query update delete   :每秒增查改删的次数
                getmore command  每秒运行命令次数
                dirty used flushes  每秒操作磁盘的次数
                vsize   res   使用虚拟内存和物理内存
3、监测每个数据库的读写时长
        命令:mongotop
                ns           total    read    write
                数据集合    总时长    读时长  写时长

四、附录:目录

        人工智能(MongoDB)—— 目录汇总

猜你喜欢

转载自blog.csdn.net/qq_27297393/article/details/81133565