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

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: MongoDB 数据库、MongoDB简介、nosql和关系型数据库比较?什么是关系型数据库?数据库
什么是关系型数据库?
           是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,
            同时也是一个被组织成一组拥有正式描述性的表格(二维表),该形式的表格作用的实               
            质是装载着 数据项 的特殊收集体,这些表格中的数据能以许多不同的方式被存
            取或重新召集而不需要重新组织数据库表格(即表与表之间的联系)。

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}], {}...)
注:
    如果不使用 _idsave用法同 insert一样
    如果加入 _id项 此时该文档已经存在是则 会覆盖原有文档


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
6天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
31 15
|
14天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
2月前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
24 1
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
75 0
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
47 2
|
1月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
46 2
|
1月前
|
数据采集 数据可视化 数据挖掘
Python数据分析:Pandas库实战指南
Python数据分析:Pandas库实战指南
|
1月前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集