什么是关系型数据库?
          是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,
            同时也是一个被组织成一组拥有正式描述性的表格(二维表),该形式的表格作用的实               
            质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存
            取或重新召集而不需要重新组织数据库表格(即表与表之间的联系)。
 
nosql和关系型数据库比较?
    优点:
        1)成本:nosql数据库简单易部署,基本都是开源软件,
             不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
        2)查询速度:nosql数据库将数据存储于缓存之中,
              关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
        3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,
              所以可以存储基础类型以及对象或者是集合等各种        格式,而关系数据库则只支持基础类型。
        4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
    缺点:
        1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
        2)不提供对sql语句的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。

3)不提供关系型数据库对事物的处理。

MongoDB简介:

MongoDB是一个非关系型数据库  他是NOSQL数据库技术相对成熟的一个文档型数据库

MongoDB的数据管理系统是由C++语言编写的 MongoDB支持丰富的增删改查功能并且支持

关系型所没有的更多数据类型 虽然支持丰富的增删改查但是他不支持SQL语句

MongoDB有着丰富的编程语言接口 例如:Python、PHP、C++、JavaScript、C#等

MongoDB也被誉为着最像关系型数据库的NoSQL

 
MongoDB(芒果数据库)
    数据存储发展阶段:
        文件管理阶段(.txt、.doc、.xls....)
        优点:
            数据可以长期保存 有一定的格式化规范 可以大量存储 使用简单方便
        缺点:
            数据一致性差 用查找修改不方便  数据冗余
    数据库管理阶段:
        优点:
            数据组织结构化 降低了冗余 提高了增删改查的效率 便于扩展
            方便程序调试做自动化管理
        缺点:
            数据库的使用专业性较强 相对比较复杂
 
基本概念
    什么是数据:
        能够输入到计算机中并被识别处理的信息的集合
    数据结构:
        相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成
    数据库:
        按照数据结构,存储管理数据的厂库
        是在数据管理系统软件管理和控制下创建在一定介质上的数据集合
    数据管理系统:
        数据管理软件 用于维护管理数据库 
    数据库系统:
        由数据库、数据管理系统,开发工具等组成的工具集合
 
    关系型数据库:
        采用关系模型来组织数据结构的数据库(关系模型:二维表)
        Oracle(甲骨文)、DB2(IBM)、SQL_Server(微软)、MySQL、Sqlite
        Sqlite:
            唯一不需要安装第三方包就可以用的数据库
            用于嵌入式  小形数据库
        优点:
            容易理解 逻辑类似常见表格 使用方便 都使用SQL语句 SQL语句本身非常成熟
            数据一致性高 冗余低  完整度高
            技术成熟 可以使用外部链接等复杂操作
        缺点:
            每次操作都需要SQL语句解析,消耗较大
            不能很好的满足并发需求,应对海量数据爆发力不从心
            关系型数据内存存在大量的加锁操作,读写能力受到限制
            数据不够灵活,有时会有空间数据结构复杂化,造成浪费
    非关系型数据库(NoSQL:Not only SQL)
        优点:
            高并发 读写能力强
            扩展性强,使用灵活
            优化数据结构,降低数据一致性
            可以做内存缓存
        缺点:
            通用性差,没有SQL操作统一的操作语句
            操作灵活  统一混乱
            没有join的复杂操作,版本更新快
    NoSQL的使用情况:
        1.数据一致性要求低
        2.处理数据的海量并发
        3.数据库大小不能确定 需要分布扩展
        4.给定的数据结构建立非关系模型更加容易
    NoSQL分类:
        键值数据库 Redis
        列存储数据库
        文档数据库 MongoDB
        图形数据库
 
MongoDB数据库:
    非关系型数据库 文档型数据库
    1.由C++编写的数据管理系统
    2.支持丰富的增删改查功能
    3.支持丰富的数据类型
    4.支持众多的编程语言接口(Python、PHP、C++、JS、C#)
    5.在NoSQL中技术相对比较成熟
 
 
MongoDB的安装:
    自动安装:
        sudo apt-get install mongodb
        默认安装路径:/var/lib/mongodb
        配置文件:/etc/mongodb.conf
        命令集:/usr/bin 或 /usr/local/bin
    手动安装:
        1.下载合适版本:www.mongodb.com
        2.选择合适位置解压:/usr/local  或 /opt
        3.将bin文件夹下的命令集加入到环境变量
            PATH = $PATH:/opt/mongodb/bin
            export PATH
           永久设置:可以将以上两句写入/etc/rc.local
        4.重启系统
 
whereis 软件名:
    查看一个软件的路径
 
Mongodb命令:
    设置数据库存储的位置:
        mongod --dbpath 目录
    设置数据库端口:
        mongod --port 8080
        默认27017
    mongodb的交互模式,操作数据库:
        mongo 进入mongo shell
 
MongoDB的数据组成结构:
    键值对   组成  文档
    文档      组成   集合
    集合      组成  数据库
 
 
关系形数据库与非关系型数据库存储数据对比
 
--------------------------
ID    |   name   |   age
--------------------------
1     |   Lily   |   17
--------------------------
2     |   Lucy   |   18
--------------------------
 
{
    "_id":1,
    "name":"Lily",
    "age":17
},
{
    "_id":2,
    "name":"Lucy",
    "age":18
}
 
 
概念对比:
    MySQL         MongoDB           含义
    database      database           数据库
    table             collection          表/集合
    column        filed                   字段/域
    row              document 记录/文档
    index            index                  索引
 
创建库:
    use databaseName
    创建一个stu的数据库
        use stu
    实际use是选择使用哪个数据库,当选者使用的数据库不存在时就会自动化创建
    只有向数据库插入数据时才会真实被创建出来  而use后不会马上被创建
查看库:
    show dbs
 
数据库命名:
    1.使用UTF-8字符
    2.不能含有 . 、 / 、 \ 、"\0" 字符
    3.长度不能超过64字节
    4.不能和系统数据库重名
    习惯上使用小写字母命名
 
系统数据库:
    admin:存放用户和权限
    local:存放本地化数据(不让被共享)
    config:存储分片信息
 
 db:
     mongo系统全局变量。绑定当前正在使用的数据库对象
     当不使用use选择任何数据库时,db表示test 此时插入数据会创建test数据库
 
数据库备份和恢复:
   备份:
        mongodump -h 主机地址 -d 库名 -o 文件名
   恢复:
       mongorestore -h 主机地址: 端口号 -d 库名 文件路径
       如果库不存在会自动创建库
数据库的监测:
    mongostat
       insert query update delete :每秒增查改删的次数
       command      每秒运行命令的次数
       flushes           每秒和磁盘的交互次数
       vsize               使用虚拟内存的大小
    mongotop
       监测每个数据读写时长
       ns      数据集合
       total 总时长
       read  读时长
       write 写时长
删除数据库
    db.dropDatabase()
        删除db所代表的数据库
创建集合:
    db.createCollection(“集合名”)
    向集合中插入数据时 如果这个集合不存在会自动创建
    db.集合名.insert(...)
查询集合:
    show collections
    show tables
集合命名规则:
    1.合法的UTF-8字符串
    2.不能有“\0”
    3.不能以system. 开头  是系统保留前缀
    4.不能和关键字重名
删除集合:
    db.集合名.drop()
 
集合的重命名:
    db.集合名.renameCollion("新集合名")
 
文档:
    MongoDB中的数据组织形式
    MongoDB文档:
        以键值对的形式组成的类似于字典的数据结合
        是对数据的一种描述
        键:
           即文档的域
           命名规则:
               1.utf-8字符串
               2.不能有“\0”
               3.一个文档中键不能重复
           文档中键值对是有序的
           mongodb严格区分大小写
        值:
            即文档存储的数据  也就是mongodb支持的数据类型
            值类型:
               整型数           1 2 3 -1 -2
               布尔类型        true false
               浮点型           3.1415926
               Array            数组[1,2,3]
               Timestamp  时间戳
               Data              时间日期
               Object           内部文档
               Null              空值
               String           字符串
               Symbol         特殊字符串
               binary data  二进制字符串
               code             代码
               regex           正则表达式
               ObjectID      ObjectID对象
   ObjectID:
   如果在插入文档时没有指定_id域,则系统会自动添加该域作为主键
   值则是在一个ObjectID类型数据
 
 "_id" : ObjectId("5b764646d4ff0ad8f415f977")
            24 位 16进制数  --> 保证所有的_id值的唯一性
            8位的文档创建时间    6位机器ID    4位进程id    6位计数器
 
集合中的文档:
    1.集合中的文档不一定域的个数相同
    2.集合中的文档不一定有相同的域
    关系型数据库中由表决定字段
    MongoDB数据库中由文档决定域
集合设计原则:
    集合的文档应该尽可能的描述同一类内容,有更多相同的域
    同一类数据信息,尽量不要过多的分散集合存放
    集合中文档的层次不要包含太多
 
插入文档:
    db.集合名.insert({name:"tom", age: 15})
        save插入文档:
            db.集合名.save({name:"tom", age: 15})
    插入文档时的键可以不加引号
    _id为系统自动天机为主键,如果自己写也可以,但是不能重复
插入多条文档:
    db.集合名.insert([{name:"tom", age: 15}, {}, {}...])
        save插入文档:
            db.集合名.save([{name:"tom", age: 15}], {}...)
注:
    如果不使用_id则save用法同insert一样
    如果加入_id项 此时该文档已经存在是则会覆盖原有文档

Python全栈 MongoDB 数据库(概念、安装、创建数据)的更多相关文章

  1. Python全栈 MongoDB 数据库(聚合、二进制、GridFS、pymongo模块)

    断网了2天  今天补上     聚合操作: 对文档的信息进行整理统计的操作 返回:统计后的文档集合 db.collection.aggregate() 功能:聚合函数,完成聚合操作 参数:聚合条件,配 ...

  2. Python全栈 MongoDB 数据库(数据的修改)

    修改操作符的使用   $set 修改一个域的值,增加一个域   阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}})   如果sex域不存在则 ...

  3. Python全栈 MongoDB 数据库(Mongo、 正则基础、一篇通)

                  终端命令:       在线安装:         sudo apt-get install mongodb         默认安装路径 :  /var/lib/mong ...

  4. Python全栈 MongoDB 数据库(数据的查找)

      非关系型数据库和关系型数据库的区别? 不是以关系模型构建的,结构自由 非关系型数据库不保证数据一致性 非关系型数据库可以在处理高并发和海量数据时弥补关系数据库的不足 非关系型数据库在技术上没有关系 ...

  5. Python全栈 MySQL 数据库 (索引、数据导入、导出)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图     表字段重命名(change)   alter table 表名 ...

  6. Python全栈 MySQL 数据库 (简述 、安装、基本命令)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图     一个月的python已经结束了  下面就是数据库了   先说M ...

  7. Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)

    ParisGabriel              每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图     存储引擎(处理表的处理器)     基本操作:         ...

  8. Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)

    为了梦想与了信仰    开局一张图   主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用   先删库 再跑路.....                         ...

  9. python全栈开发 * 进程理论 进程创建 * 180724

    一.进程理论 1.进程是资源分配的最小单位. 2.进程调度就是多个进程在操作系统的控制下被CPU执行,去享用计算机的资源. 先来先服务 短作业优先 时间片轮转 多级反馈队列 3.进程调度的过程是不能够 ...

随机推荐

  1. Android学习笔记_23_服务Service之AIDL和远程服务实现进程通信以及进程间传递自定义类型参数

    一.了解AIDL语言: 在Android中, 每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢? 显然, Java中是不支持跨进程内存共享的.因此要传递对象, 需要把对象解析 ...

  2. 课时15.DTD文档声明下(了解)

    W3C的官方网站是W3School,我们可以去官方网站查询DTD文档声明. HTML4.01       Strict  非常严谨的 如果你写了这个DTD文档声明,你就不能写如下样式: <fon ...

  3. 微信小程序已发布版本vconsole仍出现问题解决办法

    解决办法很简单,进入小程序的体验或者开发版,点击关闭调试,再次进入小程序,就不会出现了

  4. spring入门(三) 使用spring mvc

    1.建立project / module 新建空的project:springMvcStudy 新建module:type maven-webapp,名字mvcStudy 2.为module设置Sou ...

  5. swift计算label动态宽度和高度

    swift计算label动态宽度和高度 func getLabHeigh(labelStr:String,font:UIFont,width:CGFloat) -> CGFloat { let ...

  6. ABAP术语-BAPI Explorer

    BAPI Explorer 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/24/1012110.html Tool for developi ...

  7. substr在oracle和mysql中的应用和区别

    Oracle: 书写格式: (1)Select  substr(字段名(string) , 起始位置(int) , 截取长度(int)) 示例: selectsubstr('123456',0,3)a ...

  8. Percona-Tookit工具包之pt-kill

      Preface       Sometimes,we are determined to kill some MySQL connections which are occupying huge ...

  9. 【linux下dhcp服务的简单搭建及优化部署】

    dhcp server: 1::vim /etc/sysconfig/network-scripts/ifcfg-scfg:配置 server的 static IP: 2:vim /etc/dhcpd ...

  10. what is feeding and what is 读扩散 and 写扩散?

    what is feeding? 通俗点说feed系统就是当你登陆进对应网站后:微信朋友圈的动态.人人网上看到的一件件新鲜事.新浪微博上推到你面前的一条条新围脖等等.系统中的每一条消息就是一个feed ...