PYTOHN2.day11

MongoDB

一.基础概念
     1.数据:能够输入到计算机中并被识别处理的信息集合
     2.数据结构:研究一个数据集合中,数据之间关系的学科
     3.数据库:按照数据结构,存储管理数据的仓库,数据仓库是在数据库管理系统管理控制下一定介质中构建的
     4.数据库管理系统:数据库管理软件,用于建立维护数据库
     5.数据库系统:由数据库和数据库管理系统等构成的开发工具集合
    
二.关系型数据库 or 非关系型数据库
     1.采用关系模型来组织数据结构的数据库(二维表)
       [1]常见关系型数据库Oracle   DB2   SQLServer  Mysql  sqlite(python标准库支持)
          [2]优缺点:
             优点:1.逻辑清晰,容易理解,结构类似于常见的表格
                   2.使用sql语句进行数据操作,技术成熟,使用方便
                   3.数据一致性高,冗余低,完整性好
                   4.关系型数据库比较成熟,可以使用一些复杂操作
                  
             缺点:1.每次操作需要专门sql语句解析,速度较慢
                   2.关系型数据可内部往往进行加锁处理也影响了处理速度
                   3.不能很好的处理海量数据高并发的需求,读写能力差
                  
     2.非关系型数据库(NoSql  --Not only sql)
       [1]常见非关系型数据库
             1.键值型数据库:Redis(键值对)
             2.列存储数据库:HBase(存储速度快,每一列为一个存储单元)
             3.文档性数据库:MongoDB,CouchDB
             4.图形数据库:Graph
         
       [2]优点缺点
             优点:*读写速度快,可以更好应对并发处理需求
                   *使用灵活多样,容易扩展
             缺点:*没有sql那样同一的语句操作
                   *技术曾数度较差,缺少一些复杂操作
       [3]应用场景:
             1.对数据格式一致性要求不严格
             2.对数据处理速度特别是海量数据并发请求的情况
             3.某些特定场景,如需要较强的扩展,数据库需要缓存等
            
要求:关系型数据库和非关系型数据库的区别特点、

二.MongoDB数据库
    1.MongoDB特点
         [1]非关系型数据库中的文档型数据库
         [2]开源数据库,使用(相对)广泛,更新比较快
         [3]是由c++编写的数据库管理系统
         [4]支持丰富的存储类型,和数据操作
         [5]有众多编程语言提供操作接口
         [6]方便扩展和部署,使用方便
     2.MongoDB安装
         [1]Linux:sudo apt-get install mongodb
         [2]Mac OS:brew install mongod
         [3]Windows:www.mongodb.com 下载对应的安装包
            -->Try free-->server-->版本-->downlod
        
         [4]Linux 安装目录
            安装位置:/var/lib/mongodb
            配置文件:/etc/mongodb.conf
            命令集:/usr/bin
           
三.MongoDB命令
     1.mongod  配置mongodb基本信息
       [1]mongod -h 查看命令帮助
       [2]mongod --dbpath [dir]  设置数据库存储位置
       [3]mongod --port  [port]  设置数据库的端口,默认端口27017
     2.mongo 进入mongo shell 界面
       [1]mongo 进入mongoshell界面。即可操作数据库
       [2]quit()  ctrl -c可以退出mongo shell
      
四.MongoDB 数据库的数据结构
     1.组成:键值对-->文档-->集合-->数据库
     e.g. :
     ------------------------------------
     ID     |   NAME       |AGE
     ------------------------------------
     1      |   Lily           |17
     ------------------------------------
     2      |  Lucy           |18
     ------------------------------------
     {
     "_id":1,
     "NAME":"Lily",
     "AGE":17
     },
     {
     "_id":2,
     "NAME":"Lucy",
     "AGE":18
     }
2.基本概念对比
     mysql          mongodb         含义
     database      database         数据库
     table         collecttion      表/集合
     column        field            字段/域
     row           document         记录/文档
     index         index            索引
    
    
五.数据库操作
1.
     1.创建数据库: use   [database]   
        e.g.  创建一个stu的数据
                use stu

         *   use 实际为选择使用哪个数据库,当这个数据库不存在时会自动创建     
         *   使用use创建数据库不会立即建立起来,而是需要真正插入数据是才会产生
    2.    show dbs 查看系统中数据库
    3.数据库的命名规则
         1.使用utf-8字符
         2.不能含有 空格 . / ''字符
         3.不能超过64字节
         4.不要和系统数据库重名
     4.全局变量db:代表当前正在使用的数据库
         *当不选择任何数据库时 db 为"test"
     5.数据库的删除
         db.dropDatabase()

     6.数据库的备份和恢复
         1.备份命令(mongo命令,在终端执行)
             命令: 
                     mongodump -h[host] -d [database] -o [path]

            e.g.将本机下stu数据库被分到dir目录中
                 mongodump -h 127.0.0.1 -d stu -o dir

         2.恢复命令
             命令:mongorestore -h [host:port] -d [db] [file]
             将备份文件恢复到本机数据库中
             e.g.将备份文件恢复到本机的student数据库
                 mongorestore -h 127.0.0.1:27017 -d student dir/stu

    7.数据库监控命令
         1.查看数据库的运行状态:mongostat
             insert query update delete :每秒增查改删次数
             command :每秒执行mongo命令操作次数
             flushes :和磁盘交互情况
             vsize   res :使用虚拟内存和物理内容情况
             time:运行时间
         2.监控数据中数据表读写情况:mongotop
                               ns      total            read         write   
                             数据集合  每秒读写总时长   每秒读时长   每秒写时长
                            
                            
   2.创建集合
     【1】创建集合
         1.db.creatCollection(collectionName)
             e.g.在数据库中创建集合class1
                 db.createCollection('class1')

         2.当插入数据时,如果指定集合不存在则自动创建
            e.g.入果Class2集合不存在则自动创建
                 db.class2.insert({'name':'圣枷','age':32})

     【2】查看数据库集合:show collections
                          show tables

     【3】集合命名规则 
         1.使用utf-8字符
         2.不能含有''字符
         3.不要以system.开头,这是系统集合默认开头
         4.不要和关键字重名
     【4】删除集合
            命令:db.collection.drop()
            e.g.删除class集合
                 db.class.drop()

    【5】集合重命名
         命令:db.collection.renameCollection("new_name")

        e.g.class2重命名为class0
             db.class2.renameCollection('class0')

   3.文档
         【1】什么是文档:
             *文档是mongodb数据库中基本的数据库组织单元
             *文档有多个键值对组成,每个键值对表达一个数据项
             *mongodb文档属于bson类型数据
         【2】文档中的键值对
             1.特点:*文档键值对是无序的
                     *通过键取其中的值
                     *键不能重复
             2.键:即文档数据的域名,表达数据的基本信息
               规定:*使用utf-8字符串
                     *不能含有''
             3.值:即数据库中存储的数据
            
             类型             值
             整形(int)        整数
             浮点型(double)   小数
             布尔类型         true  false
             Array数组        [1,2,3]类似于列表
             String字符串     "abc"utf-8           
             Date日期时间     日期
             Timestamp        时间戳           
             Binary data      二进制字节串(二进制格式类型)
             Null             空 null
             Object           对象(内部文档)
             code             JS代码
             regex            正则
             ObjectId         ID对象
         【3】ObjectId:是插入文档时,mongodb 会自动为文档生成一个主键ID值
                       保证不会和其他文档id值重复
             e.g.'_id':Object("5c76359727e5b540***")
                  *_id为自动生成的域名,表示主键域
                  *ObjectId值由24或16进制码通过一定算法得到
         【4】集合中的文档设计
             1.一个集合中的文档尽量表达相同的数据内容
             2.集合中文档层次不宜嵌套过多
             3.在集合中文档使用比较自由,原则上文档结构可以各不相同
            
                
六.数据基本操作

     1.插入文档
         【1】插入单个文档:
             命令:db.collection.insertOne(doc)
             e.g.向class0中插入一个文档
                 db.class0.insertOne({'name':'Jame','age':16,'sex':'m'}) 
                 db.class0.insertOne({'name':'Lily',age:17,sex:'f'})

             *数据操作时键可以不加引号,默认为utf-8字符串
             *文档插入集合是一个有序行为
             *可以自己设定文档的_id域值,但是ID不能重复

inserOne
        【2】插入多条文档
             命令:db.collection.insertMany([doc,doc...])

             e.g.向class0中插入多个文档
                 db.class0.insertMany([{name:'Tom',age:19,sex:'m'},{name:'Levi',age:18,sex:'m'}])

insertMany
         【3】一个综合的函数
             命令:db.collection.insert()

             说明:用法为insertOne+insertMany,但是官方文档已不推荐
         【4】save保存文档
             命令:db.collection.save()

             说明:参数用法与insert(),但是当ID重复时会覆盖原有文档。
                   如果_id不重复则同为插入文件
            save

作业:能够回答关系习惯数据库与非关系型数据库的区别
       熟练mongo数据的创建,集合操作,数据插入
       使用Mongodb完成mysql数据库练习中数据库数据表的创建,数据的添加

原文地址:https://www.cnblogs.com/shengjia/p/10445890.html