Scrapy框架之认识MongoDB

目录

MongoDB

简介

特点

MongoDB的适用场景 

MongoDB的行业具体应用

如何抉择是否使用MongoDB


MongoDB

简介

MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位。它使用JSON类似的BSON(二进制JSON)格式来存储数据,可以处理大量的结构化、半结构化和非结构化数据。

{name: "itBaiZhan",age: 18,hobbies: ["python", "mongo"]
}

特点

文档型的数据存储方式有几个重要好处:

  • 文档的数据类型可以对应到语言的数据类型,如数组类型(Array)和对象类型(Object)
  • 文档可以嵌套,有时关系型数据库涉及几个表的操作,在 MongoDB 中一次就能完成,可以减少昂贵的连接花销;
  • 文档不对数据结构加以限制,不同的数据结构可以存储在同一张表
  1. 文档存储:MongoDB以文档的形式存储数据,一个文档类似于关系数据库中的一行记录,但是具有更灵活的结构。文档可以包含不同的字段,字段可以是嵌套的和具有不同数据类型的。

  2. 强大的查询语言:MongoDB提供了丰富的查询语言,可以根据各种条件和操作符来查询文档。它支持字段投影、排序、聚合等功能,并且具有灵活的查询语法。

  3. 高可扩展性:MongoDB具有良好的可扩展性,可以通过添加更多的服务器来处理大规模数据和高负载。它支持水平扩展(通过分片)和垂直扩展(通过复制集)。

  4. 复制和高可用性:MongoDB支持数据复制来实现高可用性和数据冗余。复制集是一组MongoDB服务器的集合,其中包含一个主服务器(用于写操作)和多个从服务器(用于读操作和备份)。

  5. 灵活的数据模型:MongoDB的数据模型非常灵活,可以根据应用程序的需求进行快速迭代和演变。字段可以根据需要添加、修改或删除,而无需对整个数据库进行模式更改。

  6. 高性能:MongoDB具有出色的性能表现,特别适用于大数据量和高并发负载。它支持索引、查询优化、内存映射存储引擎等技术,以提供快速的数据访问和处理能力。

MongoDB的适用场景 

  • 网站数据

    Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性

  • 缓存

    由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载

  • 大尺寸、低价值的数据

    使用传统的关系型数据库存储一些大尺寸低价值数据时会比较浪费,在此之前,很多时候程序员往往会选择传统的文件进行存储

  • 高伸缩性的场景

    Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持以及集群高可用的解决方案

  • 用于对象及JSON 数据的存储

    Mongo 的BSON 数据格式非常适合文档化格式的存储及查询

MongoDB的行业具体应用

  • 游戏场景

    使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

  • 物流场景

    使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

  • 社交场景

    使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

  • 物联网场景

    使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析

  • 直播

    使用 MongoDB 存储用户信息、礼物信息等

如何抉择是否使用MongoDB

应用特征Yes/No
应用不需要复杂事务及复杂join支持yes
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上的读写QPS(更高也可以)
应用需要TB甚至 PB 级别数据存储
应用发展迅速,需要能快速水平扩展
应用需要大量的地理位置查询、文本查询
应用需要99.999%高可用

有一个yes就可以选择MongoDB,两个以上yes,选MongoDB绝对不后悔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1468.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜

函数模板 交换两个整型变量的值的Swap函数: void Swap(int & x,int & y) { int tmp x; x y; y tmp; } 交换两个double型变量的值的Swap函数: void Swap(double & x,double & y) { double tmp x; x y; y tmp; }用函数模板解决: …

计算几何——gitf-wrapping算法

几何中的"gift-wrapping"算法,又称为"Jarvis算法",是一种用于计算凸包(convex hull)的方法。下面我将为你解释一下该算法的步骤: 1. 找到具有最小x坐标的点P,我们将其作为凸包的起点。 2. 将P标记为当前点&a…

Java Spring概述

1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦…

MySQL 备份与恢复

MySQL 备份与恢复 一、数据库备份的分类1.1 数据备份的重要性1.2 数据库备份的分类1.2.1 从物理与逻辑的角度,分为物理备份和逻辑备份1.2.2 从数据库的备份策略角度,分为完全备份,差异备份和增量备份1.2.3 常见的备份方法 二、MySQL完全备份与…

GreenPlum版本升级

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

10个图像处理的Python库

在这篇文章中,我们将整理计算机视觉项目中常用的Python库,如果你想进入计算机视觉领域,可以先了解下本文介绍的库,这会对你的工作很有帮助。 1、PIL/Pillow Pillow是一个通用且用户友好的Python库,提供了丰富的函数集…

芯片等高科技制造业 如何实现安全的跨网数据交换?

芯片是信息产业的基础,一直以来占据全球半导体产品超过80%的销售额,在计算机、家用电器、数码电子、自动化、电气、通信、交通、医疗、航空航天等几乎所有的电子设备领域中都有使用。 所以,对于芯片这种高科技制造业来说,数据的安…

新项目搞完啦!!!

大家好,我是鱼皮。 经过了 7 场直播,总时长近 20 小时,我在 自己的编程导航 的第 5 个 全程直播开发 的项目 —— 智能 BI 项目,完结啦! 我在这里对该项目做一个简单的总结,希望让更多需要它的同学看到&am…

开发框架前后端分离的好处是什么

关于将前端和后端保持在一起或分开,存在广泛的意见分歧。唯一重要的是,这两个组件对于开发成熟的应用程序都是必需的。 考虑:紧密耦合的前端和后端 许多人认为后端和前端的分离是一个坏主意,这两个角色之间没有太大区别。 以下…

剑指 Offer 51: 数组中的逆序对

这道题归根结底就是一个归并问题,逆序对本质上就是比较大小,如果两边作为一个整体比较过那么就可以排序合并(因为这个过程每一步都计算了count的值,所以合并起来是可以的)。 下面的k应该是mid1(从中间的右…

【数据库】事务、事务并发问题、并发事务隔离级别、及sql演示

文章目录 一、事务1.1 事务简介 及 sql 操作1.2 事务的特性 二、事务并发问题三、事务隔离级别四、sql 演示4.1 脏读4.2 不可重复读4.3 幻读 五、演示代码 一、事务 1.1 事务简介 及 sql 操作 事务:数据库执行的一系列操作,这些操作要么全部执行&#x…

WPS数据清洗+R语言读取文件画频数分布直方图

R语言是一门好语言,但很多人在读取文件中数据时会遇到问题。比如我遇到的问题就是从文件中读取数据后,数据无法用于画图。 检索了N篇博文(抱歉我实在无法一一列举30篇博文)后,终于看到曙光,事实告诉我学任…