Python全栈 MongoDB 数据库(概念、安装、创建数据)

什么是关系型数据库?

是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,

同时也是一个被组织成一组拥有正式描述性的表格(二维表),该形式的表格作用的实

质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存

取或重新召集而不需要重新组织数据库表格(即表与表之间的联系)。

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项 此时该文档已经存在是则会覆盖原有文档

原文地址:https://www.cnblogs.com/ParisGabriel/p/9495853.html

时间: 2024-10-30 03:33:48

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

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

断网了2天  今天补上 聚合操作: 对文档的信息进行整理统计的操作 返回:统计后的文档集合 db.collection.aggregate() 功能:聚合函数,完成聚合操作 参数:聚合条件,配合聚合操作符使用 返回:聚合后的结果 常用聚合操作符: 1.$group  分组聚合   要配合具体的统计操作符获取结果 $sum  求和 db.class1.aggregate({$group:{_id:'$gender',num:{$sum:1}}}) 分组   按照gender值统计 统计结果,求和每

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

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 表字段重命名(change)  alter table 表名 change 原名 新名 数据类型: SQL查询 执行顺序: 3. select ...聚合函数 from 表名 1. where ... 2. group by... 4. having... 5. order by... 6. limit... group by 语句 作用:给查询结果进行分组 注意: 1.group by之后的字段

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

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 一个月的python已经结束了  下面就是数据库了   先说MySQL 这个数据库应该差不多是用户量最多的了 MySQL概述:1.什么是数据库: 存储数据的厂库2.有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站...3.提供数据库服务的软件: 1.软件的分类: MySQL.Oracle.SQL_Server.DB2.MongoDB.MariaDB 2.生产环境中,如何选择使用哪些数据

Python全栈学习:如何安装Python方法,详解!

因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先就得把Python安装到你的电脑里.安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境. 安装Python 3.7 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的.由于3.x版越来越普及,我们的教程

Python全栈 MySQL 数据库 (SQL查询、备份、恢复、授权)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 今天接着昨天的说 索引有4种: 普通 索引 :index  唯一索引:unique 主键索引:primary key 外键索引:foreign key 索引查询命令: show index from 表名\G: Non_Unique:1   :index Non_Unique:0  :unique 外键索引(foreign key):  定义:让当前字段的值在另一个表的范围内选择   语法:  

Python全栈 MySQL 数据库 (表字段增、删、改)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 打字 回车时不小心发布了  正在编辑中.............. 原文地址:https://www.cnblogs.com/ParisGabriel/p/9398614.html

巨蟒python全栈开发数据库前端8:jQuery框架2

1.事件 2.批量操作 3.事件冒泡 4.事件委托 1.事件 常用事件 click(function(){...}) hover(function(){...}) blur(function(){...}) focus(function(){...}) change(function(){...}) //内容发生变化,input,select等 keyup(function(){...}) mouseover 和 mouseenter的区别是:mouseover事件只要你在绑定该事件的对象上移动

python 全栈之路

python 全栈之路 一. python 1. Python基础知识部分 Python Python那点事 Python windows和linux下 安装 Python2,Python3 Python 开启入坑之路 Python 基本数据类型 Python 那些零碎的知识点 Python -函数 Python - 面对对象 Python - 模块 Python - 文件操作 Python - python中经常踩得的坑 2. Python - 网络编程 3. Python - 并发编程 二.

python 全栈开发,Day30(第一次面向对象考试)

月考题: python 全栈11期月考题 一 基础知识:(70分) 1.文件操作有哪些模式?请简述各模式的作用(2分) 2.详细说明tuple.list.dict的用法,以及它们的特点(3分) 3.解释生成器(generator)与函数的不同,并实现且使用简单generator(3分) 4.如何理解lambda函数/表达式(2分) 5.a=10 b=20 def test(a,b): print(a,b) c = test(b,a) print(c) 上述代码中,打印出来的值a,b,c分别是什么