什么是关系型数据库?
          是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,
            同时也是一个被组织成一组拥有正式描述性的表格(二维表),该形式的表格作用的实               
            质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存
            取或重新召集而不需要重新组织数据库表格(即表与表之间的联系)。
 
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. MariaDB修改端口号

    修改端口号 打开my.ini文件

  2. [luoguP3627][APIO2009]抢掠计划

    先来看一下题目描述: 题目描述 Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机.令人奇怪的是,Siru ...

  3. JS JavaScript闭包和作用域

    JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外一个函数作用域中变量的函数. 从概念上,闭包有两个特点: 1.函数 2.能访问另外一个函数的作用域中的变量 在ES6之前,JavaS ...

  4. Vue nodejs商城-订单模块

    一.订单列表渲染 新建OrderConfirm.vue订单确认页面,添加路由 src/router/index.js添加路由 import OrderConfirm from '@/views/Ord ...

  5. Django-rest-framework(一)简单入门使用

    简单的使用 Django-rest-framework 建成DRF,可以帮助我们快速构建出 django的rest full 风格的api接口. 其源码容易理解,所以我们可以很方便的使用. 安装 pi ...

  6. Mybaties保存后自动获取主键ID

    <!-- 插入记录 --> <insert id="saveTvTypeBatch" useGeneratedKeys="true" keyP ...

  7. fabricjs 的用途

    使用html5 的canvas画板做一些图片旋转,拖动,放大,缩小和合成图片的功能,有没有一个集成好的组件库呢?答案肯定是有的,而且还不止我前面提到的功能,下面介绍一下我使用的fabricjs. 官网 ...

  8. [codevs1036] 商务旅行

    题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任 ...

  9. poj_1091_跳蚤

    Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+1个自然数.其中最后一个是M ...

  10. Mysql连接报2003-10061以及1045错误

    Mysql连接不上报的异常,调了好几个小时,分享一下 2003-10061错误这种情况就是没有启动,我是重装系统后出现,我安装的Mysql下并没有my.ini配置 windows下也是没有,服务管理上 ...