FastAPI+React全栈开发03 为什么使用MongoDB

Chapter01 Web Development and the FARM Stack

03 Why use MongoDB

FastAPI+React全栈开发03 为什么使用MongoDB

In the following paragraphs, we will go through the main features of our selected database system - MongoDB - and give a high-level overview of the features that make it an excellent fit for our FARM stack. After a brief introduction of some specificities of the database, in the following chapter, we will go over the setup and create a working database environment that will enable us to showcase some basic methods.

在下面的段落中,我们将介绍所选数据库系统MongoDB的主要特性,并对使其非常适合FARM堆栈的特性进行高级概述。在简要介绍了数据库的一些特性之后,在下一章中,我们将检查设置并创建一个工作的数据库环境,使我们能够展示一些基本方法。

MongoDB is the database of choice in the FARM stack. It is fast, scalable, and document-oriented database that enables flexible schemas and, thus interative and rapid development. MongoDB is able to accommodate data structures of varing complexities, and its querying and aggregation methods make it an excellent choice for a flexible REST API framework such as FastAPI, coupled with an official Python driver. It has a high level of adoption and maturity and is one of the pillars of the NoSQL data storage movement that took the web development world by storm a decade ago.

MongoDB是FARM堆栈中首选的数据库。它是一种快速的、可伸缩的、面向文档的数据库,支持灵活的模式和交互式的、快速的开发。MongoDB能够适应各种复杂的数据结构,它的查询和聚合方法使它成为灵活的REST API框架(如FastAPI)的绝佳选择,再加上官方的Python驱动程序。它具有很高的采用率和成熟度,是十年前席卷web开发世界的NoSQL数据存储运动的支柱之一。

The main features that make MongoDB an ideal candidate for a flexible and fast-paced development environment, prototyping, and iterative development are listed as follows:

  • Easy and cheap: It is easy and fast to set up using an online cloud service that offers a generous free tier, while local installation is always on option.
  • Flexibility: The NoSQL nature of the database enables extremely flexible models and fast iterations and modifications on the fly.
  • Web-friendly format: The native data format BSON is practically a binary version of JSON, which, in turn, is the de facto data format of the modern web, so no complex parsing or transformations are necessary.
  • Complex nested structures: MongoDB documents allow other documents and arrays of documents to be embedded, which naturally translates into the data flow of a modern data web app (for example, we can embed all of the comments into the blog post they refer to). Denormalization is encouraged.
  • Simple intuitive syntax: The methods for performing basic CRUD operations (that is create, read, update, and delete), coupled with powerful aggregation frameworks and projections, allow us to achieve mostly all data reads relatively simply through the use of drivers, and the commands should be intuitive for anyone with a bit of SQL experience.
  • Built with scalability in mind: MongoDB is built from the ground up with several objectives - scalability, speed, and the ability to handle huge (huMONGOus) amounts of data.
  • Community and documentation: Lastly, MongoDB is backed by a mature company and strong community, and it offers various tools to facilitate the development and prototyping process. For instance, Compass is a desktop application that enables users to manage and admister databases. The framework of the serverless functions is constantly being updated and upgraded, and there are excellent drivers for virtually every programming language.

使MongoDB成为灵活、快节奏开发环境、原型和迭代开发的理想候选者的主要特性如下:

  • 简单和便宜:使用在线云服务进行设置既简单又快速,该服务提供了一个慷慨的免费层,而本地安装始终是一个选项。
  • 灵活性:数据库的NoSQL特性使得模型非常灵活,并且可以快速迭代和修改。
  • web友好格式:本机数据格式BSON实际上是JSON的二进制版本,而JSON反过来又是现代web的事实上的数据格式,因此不需要复杂的解析或转换。
  • 复杂的嵌套结构:MongoDB文档允许嵌入其他文档和文档数组,这自然会转化为现代数据web应用程序的数据流(例如,我们可以将所有评论嵌入到他们引用的博客文章中)。鼓励非正规化。
  • 简单直观的语法:执行基本CRUD操作(即创建、读取、更新和删除)的方法,加上强大的聚合框架和投影,允许我们通过使用驱动程序相对简单地实现大多数所有数据读取,并且对于任何具有一点SQL经验的人来说,这些命令都应该是直观的。
  • 构建时考虑到可扩展性:MongoDB是从头开始构建的,有几个目标-可扩展性,速度和处理大量数据的能力。
  • 社区和文档:最后,MongoDB由一个成熟的公司和强大的社区支持,它提供了各种工具来促进开发和原型过程。例如,Compass是一个桌面应用程序,它使用户能够管理和管理数据库。无服务器功能的框架不断更新和升级,并且几乎每种编程语言都有优秀的驱动程序。

I believe that in some cases, and this includes a lot of cases, MongoDB should be your first choice, especially when you are designing something that still has a very fluid or vague specification, and let’s be honest, that happens a lot more than we would like to admit.

我相信在某些情况下,这包括很多情况下,MongoDB应该是你的第一选择,特别是当你设计的东西仍然有一个非常流动或模糊的规范,让我们说实话,这种情况比我们想承认的要多得多。

Of course, MongoDB is not a silver bullet, and some drawbacks are worth noticing upfront. On the one hand, the schemaless design and the ability to insert any type of data into your database might be a bit panic, inducing but translates to the need for stronger data integrity validation on the backend side. We will see how Pydantic, an excellent Python validation and type-enforcement library, can help us with that. The absence of complex joins, which are present in the SQL world, might be a dealbreaker for some types of applications. For analytics-intensive applications that require numerous complex queries, relational databases are a better, and often the only possible, solution. Finally, for mission critical applications that require adherence to the ACID principles (that is, atomicity, consistency, isolation, and durability) of transactions, MongoDB or any NoSQL database system migh not be the right solution.

当然,MongoDB不是灵丹妙药,一些缺点值得提前注意。一方面,无模式设计和将任何类型的数据插入数据库的能力可能会让人有点恐慌,这会导致后端需要更强的数据完整性验证。我们将看到Pydantic(一个优秀的Python验证和类型强制库)如何帮助我们实现这一点。缺少SQL世界中存在的复杂连接,可能会破坏某些类型的应用程序。对于需要大量复杂查询的分析密集型应用程序,关系数据库是更好的解决方案,而且通常是唯一可能的解决方案。最后,对于需要遵守事务的ACID原则(即原子性、一致性、隔离性和持久性)的关键任务应用程序,MongoDB或任何NoSQL数据库系统可能不是正确的解决方案。

Now that we understand what MongoDB brings to the table in terms of scalability, but especially flexibility with its schema less approach, let us take a look at the REST API framework of choice, FastAPI, and learn how it can help us leverage that schema-less approach and simplify our interactions with the data.

现在我们已经了解了MongoDB在可伸缩性方面带来了什么,尤其是它的无模式方法的灵活性,让我们来看看选择的REST API框架FastAPI,并了解它如何帮助我们利用无模式方法并简化我们与数据的交互。

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

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

相关文章

VSCode基本配置(编辑器)

VSCode基本配置 设置快捷键:Ctrl , 下载中文插件:Chinese,重启一下,如果没有,Ctrl Shift P,搜索:Display Language 主题推荐:Solarized Dark,快捷键:Ct…

速盾:cdn加速效果好吗

CDN(Content Delivery Network)是一种通过分布在全球多个节点的服务器来加速网络内容传输的技术。CDN加速效果好不好,需要从几个方面来考量。 首先,CDN可以显著提高网站的加载速度。由于CDN服务器分布在全球各地,用户…

C++零基础入门学习视频课程

教程介绍 本专题主要讲解C基础入门学习,所以不会涉及很深入的语法和机制。但会让你整体多面的了解和学习C的核心内容,快速学习使用C,我们的目标是先宏观整体把握,在深入各个击破! 学习地址 链接:https:/…

多线程合并练习题,线程安全(售票任务引入)--学习JavaEE的day30

day30 练习(day29) 注意代码注释,里面涉及代码实现遇到问题及解决方案,由于理解方便没有单独出来 1.计算任务 1.计算任务,一个包含了2万个整数的数组,分拆了多个线程来进行并行计算,最后汇总出…

计算机视觉的研究方向

随着科技的快速发展,计算机视觉已成为人工智能领域的一颗璀璨明星。从识别照片中的人物,到自动驾驶汽车的视觉系统,再到医学诊断的辅助工具,计算机视觉正以前所未有的方式改变着我们的生活。在这篇文章中,我们将探讨计…

uniapp先显示提示消息再返回上一页

一、描述 在有些业务场景中,需要先弹出提示后,再返回上一页。 二、思路 使用定时器,先弹出提示消息,然后开个定时器俩秒后再执行,返回上一页的操作,并且清除定时器。 三、实现 uni.showToast({title: …

MySQL三种开窗函数详细用法,图文详解

开窗函数的详细用法 第一章、开窗函数的语法1.1)从聚合开窗函数讲起1.2)开窗函数之取值1.3)排名开窗函数 第一章、开窗函数的语法 开窗函数的语法为:over(partition by 列名1 order by 列名2 ),括号中的两个关键词par…

加速新能源汽车产品迭代:融合前沿科技的重要性

新能源汽车新质生产力提升咨询方案 一、新能源汽车企业行业目前发展现状及特点: 1、快速增长 2、技术迭代快 3、竞争加剧 二、新能源汽车企业发展新质生产力面临的痛点: 1、技术创新压力巨大 2、市场竞争激烈 3、供应链稳定性欠缺 4、成本控制压…

复试专业前沿问题问答合集2

复试专业前沿问题问答合集2 计算机视觉基础知识问答 Q1: 计算机视觉是什么? A1: 计算机视觉是人工智能的一个分支,它使计算机和系统能够从图像和视频中提取信息、分析和理解视觉内容。它结合了图像处理、模式识别和机器学习等技术,以模拟人眼的视觉感知能力。 Q2: 计算机…

微信小程序实战:无痛集成腾讯地图服务

在移动互联网时代,地图服务无疑是应用程序中最常见也最实用的功能之一。无论是导航定位、附近搜索还是路线规划,地图服务都能为用户提供极大的便利。在微信小程序开发中,我们可以轻松集成腾讯地图服务,为小程序赋能增值体验。本文将详细介绍如何在微信小程序中集成使用腾讯地图…

GPT结合R语言回归模型、多元统计分析、混合效应模型、结构方程实战案例

查看原文>>>科研新边界:GPT & R语言联手,让数据分析不再难! 自2022年GPT(Generative Pre-trained Transformer)大语言模型的发布以来,它以其卓越的自然语言处理能力和广泛的应用潜力&#xf…

jmeter中参数加密

加密接口常用的方式有: MD5,SHA,HmacSHA RSA AES,DES,Base64 压测中有些参数需要进行加密,加密方式已接口文档为主。 MD5加密 比如MD5加密的接口文档: 请求URL:http://101.34.221…

【笔试】2023年秋招部分笔试(JD,58、MI,B站,雷火)

文章目录 1、京东笔试2、58笔试(dp)3、B站笔试(sql/leetcode)4、小米15、小米26、网易雷火 这边的笔试都是带选择题的,编程题部分占比只有一半上下。 我这里主要只记录下算法题部分的,毕竟单选多选反正408我…

面试算法-105-相交链表

题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回…

各大pdf转word软件都用的哪家的ocr引擎?

国内一般的PDF软件一般都调用某国际PDF原厂的OCR接口,但这家公司是主要做PDF,在OCR方面并不专注,一些不是很复杂的场景还能应付得过来,复杂一点的效果就强差人意了,推荐用金鸣表格文字识别系统,它主要有以下…

【Java学习】JVM:探索Java虚拟机的黑科技与无限可能

1. 概述: Java虚拟机(JVM)是Java程序运行的核心,它负责将Java字节码转换为特定平台上的机器码并执行。JVM包含了七大核心系统,它们共同协作以支持Java程序的运行和管理。本文将从基础理论到高级应用,深入探…

思考(九十四)跨服跨区消息处理

主要问题 跨服跨区消息如何处理消息交互性代码,不想涉及架构细节,只想写一次跨服跨区消息如何处理 没有什么黑魔法,就是通过路由表,做消息转发 如引入消息总线的概念,可能会简化架构和部署 角色路由信息 消息如何投递,依赖角色路由信息 比如知名项目分配方式(道听途…

抖音视频关键词无水印下载软件|手机网页视频批量提取工具

全新视频关键词无水印下载软件,助您快速获取所需视频! 随着时代的发展,视频内容已成为人们获取信息和娱乐的重要途径。为了方便用户获取所需视频,推出了一款功能强大的视频关键词无水印下载软件。该软件主要功能包括关键词批量提取…

yolov8直接调用zed相机实现三维测距(python)

yolov8直接调用zed相机实现三维测距(python) 1. 相关配置2. 相关代码3. 实验结果 相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1.yolov5直接调用zed相机实现三维测距(python&#…

ISAC代码仿真学习笔记

文章目录 A. MIMO Communication ModelB. MIMO Radar Model III. Joint Waveform and Phase Shift Matrix Design for Given Radar BeampatternA. Problem FormulationB. Proposed Algorithm V. S IMULATION RESULTS A. MIMO Communication Model 用户处的接收信号矩阵由 Y …