关系型非关系型数据库区别,以MongoDB为例在express中连接MongoDB示例

目录

关系型数据库

关系型数据库常见的类型有:

关系型数据库的优点包括:

非关系型数据库

非关系型数据库常见的类型有:

非关系型数据库的特点包括:

关系型数据库和非关系型数据库区别

MongoDB是什么

MongoDB优势:

在Express中连接MongoDB步骤

Schema


关系型数据库

关系型数据库是以关系模型为理论基础的一类数据库系统。其基本原理是在关系模型的基础上,采用结构化的方式存储数据,以表格的形式存储。最常见的关系型数据库有 Oracle、MySQL、Microsoft SQL Server、PostgreSQL等。

关系型数据库的数据存储方式可以看做是一张张的表格,这些表格可以有多个列,每个列代表了一个数据项,每一行则代表了具体的数据记录。当需要对数据进行查询时,通过 SQL(Structured Query Language)语句来实现。SQL是一种标准化的查询语言,可以用来增、删、改和查数据。

关系型数据库常见的类型有:

1. MySQL:MySQL 是一种开源的关系型数据库管理系统,支持事务处理和 ACID(原子性、一致性、隔离性和持久性)特性。

2. Oracle:Oracle 是一种商用的关系型数据库管理系统,主要用于企业级应用。它包括了完整的事务处理、分布式处理和高可用性特性。

3. Microsoft SQL Server:Microsoft SQL Server 是微软公司推出的商用关系型数据库管理系统,适用于 Windows 平台。

4. PostgreSQL:PostgreSQL 是一种开源的关系型数据库管理系统,它提供了广泛的数据类型、函数和操作符,以及支持完整事务和并发控制等功能。

5. SQLite:SQLite 是一种轻量级的关系型数据库,常用于移动设备和嵌入式系统等场景。它支持许多 SQL 语言的特性,同时具有小巧、易部署、易维护的特点。

关系型数据库的优点包括:

1. 数据之间的联系可以用关系来描述,并在关系之间保持一致性。

2. 数据的描述性要求较低,使用起来比较方便。

3. 在数据逻辑结构简单的情况下,数据的增删改查性能比较高。

4. 处理的数据量相对来说较小,安全性较高,备份容易。

5. 可以进行事务控制和数据完整性的保护。

非关系型数据库

非关系型数据库(NoSQL)是指与传统的关系型数据库不同的一类数据库系统。与关系型数据库基于表格和 SQL 的结构化模式不同,非关系型数据库采用了不同的数据模型和存储方式,以适应不同的需求和场景。

非关系型数据库常见的类型有:

1. 键值存储数据库(Key-Value Store):将数据存储为键值对的形式,类似于字典或映射。示例包括 Redis、Riak 等。

2. 文档数据库(Document Store):将数据存储为文档的形式,通常使用 JSON 或类似的格式。示例包括 MongoDB、CouchDB 等。

3. 列族数据库(Column Family Store):将数据存储为列族的形式,类似于关系型数据库中的表,但具有更大的灵活性。示例包括HBase、Cassandra 等。

4. 图形数据库(Graph Database):将数据存储为图的形式,以节点和边的方式组织数据结构,并支持高效的图查询操作。示例包括Neo4j、OrientDB 等。

非关系型数据库的特点包括:

1. 可扩展性:非关系型数据库通常具备良好的可扩展性,可以方便地进行横向扩展以应对大规模数据和高并发的需求。

2. 高性能:非关系型数据库通常以高性能为目标,针对不同的数据模型和查询方式进行了优化。

3. 灵活的数据模型:非关系型数据库支持各种不同的数据模型,能够适应不同的应用场景和数据结构。

4. 弱化的一致性:非关系型数据库有时会放宽一致性要求,以达到更高的可用性和性能。

5. 存储方式多样:非关系型数据库可以选择不同的存储方式,如内存、磁盘、分布式文件系统等。

非关系型数据库适用于需要处理大量非结构化或半结构化数据、需要高度可扩展性和灵活性、以及需要高性能和低延迟的应用场景。然而,在某些特定的查询需求和复杂的事务控制方面,非关系型数据库可能不如关系型数据库表现出色。因此,选择何种类型的数据库还需根据具体的应用需求和场景来决定。

关系型数据库和非关系型数据库区别

关系型数据库和非关系型数据库(NoSQL)在数据模型、存储方式和使用场景等方面有一些区别。

1. 数据模型:关系型数据库采用基于表格的结构化数据模型,数据以行和列的形式组织,关系通过外键进行连接。而非关系型数据库则支持多种数据模型,如键值对、文档、列族和图等,更加灵活适应不同的数据结构。

2. 存储方式:关系型数据库通常使用固定模式的表格来存储数据,表格的架构需要事先定义,数据需要满足特定的结构和约束。而非关系型数据库则较为灵活,可以存储半结构化和非结构化的数据。

3. 可扩展性:关系型数据库在处理大规模数据和高并发的情况下,通常需要通过复制和分区等技术来实现扩展,但扩展性有限。非关系型数据库则具备良好的扩展性,可以通过水平扩展(添加更多节点)或垂直扩展(增加节点的资源)来应对大规模数据和高并发的需求。

4. 数据一致性:关系型数据库强调数据的一致性和完整性,支持 ACID(原子性、一致性、隔离性和持久性)事务保证数据的可靠性。非关系型数据库则更加倾向于弱化一致性要求,以换取更高的性能和可用性。

5. 查询语言:关系型数据库使用 SQL(Structured Query Language)作为标准查询语言,支持复杂的查询、连接和聚合操作。非关系型数据库则没有通用的查询语言,查询和操作语法由每个数据库所提供的接口和工具决定。

6. 使用场景:关系型数据库适用于需要高度结构化数据和复杂查询的场景,如企业应用、事务处理、数据分析等。非关系型数据库则适用于大规模数据的存储和处理,如大数据、实时日志、社交网络等。

MongoDB是什么

MongoDB是一种开源的文档型数据库管理系统,使用JSON-like的BSON(Binary JSON)格式来存储数据。它是非关系型数据库(NoSQL)的一种类型,以可扩展、灵活的数据模型和高性能而闻名。

MongoDB的设计目标是提供易用性、可扩展性和高性能。它没有严格的预定义模式,数据存储在名为集合(Collection)的文档容器中,并且每个文档可以有不同的结构和字段。这使得MongoDB非常适合存储半结构化和非结构化的数据,同时也方便了数据模型的更改和增量开发。

作为一个文档型数据库,MongoDB提供了强大的查询和索引功能,能够进行复杂的查询操作,还支持各种聚合管道操作。它还能够进行水平扩展,通过分片(Sharding)将数据分布在多个节点上以满足大规模的存储需求和高并发访问。

MongoDB广泛应用于多个领域和场景,如Web应用程序的后端存储、实时分析、移动应用程序的数据持久化和互联网的大数据平台等。它提供了多种编程语言的驱动程序和丰富的工具生态系统,使开发人员能够轻松地与数据库进行交互和管理。

MongoDB优势:

  1. 灵活的数据模型:MongoDB使用文档型数据模型,数据以类似JSON的BSON(Binary JSON)格式存储,可以灵活地表示复杂的层次结构和嵌套数据。

  2. 高性能:MongoDB具有快速的读写性能,支持水平扩展,可以通过横向增加服务器来提高系统的性能和吞吐量。

  3. 高可用性:MongoDB支持数据复制和故障转移,可以配置成多个副本集,当主服务器发生故障时自动切换到备用服务器,提供高可用性和数据冗余。

  4. 强大的查询功能:MongoDB支持丰富的查询语法,包括灵活的查询条件、索引和聚合管道等,能够满足各种复杂的查询需求。

  5. 高扩展性:MongoDB支持水平扩展,可以通过分片(Sharding)方式将数据分布在多个服务器上,以应对大规模数据存储和高并发访问的需求。

  6. 易用性和开发效率:MongoDB的操作和查询语法较为简单和直观,对于开发人员来说比较友好,同时还提供了丰富的驱动程序和开发工具,加快了开发效率。

  7. 社区支持和生态系统:MongoDB拥有庞大的开发者社区和活跃的生态系统,提供了丰富的文档、教程和各种第三方工具和库,方便开发者学习和使用。

在Express中连接MongoDB步骤

  1. 首先,安装所需的依赖库。在项目文件夹中打开终端,并执行以下命令:

    npm install mongoose

  2. 在Express应用程序的入口文件(一般是app.js或index.js)中引入所需的模块:

    const express = require('express');
    const mongoose = require('mongoose');

  3. 建立与MongoDB数据库的连接。在代码的合适位置,使用mongoose.connect()方法来连接数据库。你需要提供数据库的URL地址以及任何其他的连接选项。示例代码如下:

    const mongoDBUrl = 'mongodb://localhost:27017/mydatabase'; // 替换为实际的数据库URL
    mongoose.connect(mongoDBUrl,{ useNewUrlParser: true,useUnifiedTopology: true })
      .then(() => {
        console.log('MongoDB连接成功!');
      })
      .catch((error) => {
        console.error('MongoDB连接失败:',error);
      });
    
    

  4. 使用mongoose.connection对象来监听连接状态。你可以添加事件监听器,以便在连接成功或失败时执行相应的操作。示例代码如下:

    const db = mongoose.connection;
    db.on('error',console.error.bind(console,'MongoDB连接错误:'));
    db.once('open',() => {
      console.log('MongoDB连接已建立!');
    });
  5. 现在,你可以在Express应用程序中使用mongoose模块进行数据库操作了。例如,定义模型、创建文档、执行查询等等。

Schema

在关系数据库中,Schema(模式)是用于定义数据库中表、字段、关系和约束的结构。它描述了数据库的布局和组织方式,以及数据存储和查询的规则。

在MongoDB和Mongoose中,Schema是指定义MongoDB文档结构的对象。它定义了文档中的字段、类型、验证规则和默认值等信息。通过使用Schema,你可以确保MongoDB文档具有一致的结构,并对字段值进行验证。

在Mongoose中,你可以使用mongoose.Schema方法创建一个新的Schema实例。示例代码如下:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  name: {
    type: String,required: true
  },age: {
    type: Number,default: 0
  },email: {
    type: String,required: true,unique: true
  },// 可以定义其他字段
});

const User = mongoose.model('User',userSchema);

在上面的例子中,我们创建了一个User模型,它基于userSchema定义。userSchema定义了name、age和email字段,每个字段都有不同的数据类型和验证规则。通过使用Schema,你可以定义文档的结构和约束,以及各种操作方法。

如果要导出

module.exports={
    User
    
}

Schema在MongoDB和Mongoose中起着非常重要的作用,它可以帮助你管理数据的结构和验证,使数据存储更加规范和可靠。

原文地址:https://blog.csdn.net/kkkys_kkk/article/details/135512038

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读552次。com.mongodb.MongoQueryException: Query failed with error code 292 and error message 'Executor error during find command :: caused by :: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting.' on server 11.51.141.63:27017 _mongodb 大文件 下载失败
文章浏览阅读635次,点赞9次,收藏8次。MongoDB 是一种 NoSQL 数据库,它将每个数据存储为一个文档,这里的文档类似于 JSON/BSON 对象,具体数据结构由键值(key/value)对组成。
文章浏览阅读2.1k次。和。_mongodb 日期类型
文章浏览阅读1.7k次。Scalestack等客户期待使用MongoDB Atlas Vector Search和Amazon Bedrock构建下一代应用程序
文章浏览阅读970次。SpringBoot整合中间件mongodb、ES_springboot3 elasticsearch json数据
文章浏览阅读673次。MongoDB 简介_尚医通sql
文章浏览阅读1k次,点赞8次,收藏9次。官网下载MongoDB安装包后进行解压(因了解并不深入,故暂不进行详细说明,自行查找其他安装方法,后期了解深入后将进行该教程的完善)在bin目录下使用命令启动:./mongod --config …/mongodb.conf。该文章任然处于完善中,如果存在错误遗漏的地方,欢迎私信联系。安装相关的nuget包后即可通过以下方法连接数据。YX9010_0@的第二十篇文章。
文章浏览阅读1.2k次,点赞17次,收藏26次。社交场景, 使用 MongoDB 存储存储用户信息, 以及用户发表的朋友圈信息, 通过地理位置索引实现附近的人, 地点等功能.游戏场景, 使用 MongoDB 存储游戏用户信息, 用户的装备, 积分等直接以内嵌文档的形式存储, 方便查询, 高效率存储和访问.物流场景, 使用 MongoDB 存储订单信息, 订单状态在运送过程中会不断更新, 以 MongoDB 内嵌数组的形式来存储, 一次查询就能将订单所有的变更读取出来.物联网场景, 使用 MongoDB 存储所有接入的智能设备信息, 以及设备汇报的日
文章浏览阅读686次。您可以使用 update_one() 方法来更新 MongoDB 中调用的记录或文档。update_one() 方法的第一个参数是 query 对象,用于定义要更新的文档。注释:如果查询找到多个记录,则仅更新第一个匹配项。第二个参数是定义文档新值的对象。_python 更新 mongodb 数据
文章浏览阅读1.3k次。首先来学习一下nosql这里安装就不进行介绍 只记录一下让自己了解mongodb。_nosql注入
文章浏览阅读4.1k次,点赞8次,收藏7次。在data的目录下,创建一个db文件。因为启动MongoDB服务之前必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。第一步:安装时,Custom是指可以自定义安装路径,然后傻瓜式安装即可(注意:先不要安装图形化工具,否则安装时间会特别长):如果要想连接成功,必须要开服务,即mongod -dbpath C:MongoDBdatadb的cmd要一直开着。然后回车,ctrl+F输入port找到端口号,一般为:27017。打开命令行,然后找到bin文件地址,并输入。_mongodb windows安装
文章浏览阅读5.1k次,点赞3次,收藏43次。详细介绍MongoDB数据库的基本知识,安装方法,基本操作,_mongodb数据库
文章浏览阅读3.2k次。安装教程翻看以往文章。_navicat 连接mongodb
文章浏览阅读426次,点赞9次,收藏12次。win10开放端口:https://blog.csdn.net/m0_43605481/article/details/119255256。我的是阿里云服务器,所以直接在安全组中加入规则,端口范围:27017,授权对象:0.0.0.0。windows在mongodb安装文件夹的bin文件夹中的mongod.cfg。数据库名字是test,打算创建一个用户,账号aaa,密码bbb,权限readWrite。因为该用户是创建在test数据库的,所以在最后要加上test。O了,然后恢复了test的数据。
文章浏览阅读1.1k次。聚合操作主要用于处理数据并返回计算结果。聚合操作将来自多个文档的值组合在一起,按条件分组后,再进行一系列操作(如求和、平均值、最大值、最小值)以返回单个结果。MongoDB的聚合查询​聚合是MongoDB的高级查询语言,它允许我们通过转化合并由多个文档的数据来生成新的在单个文档里不存在的文档信息。MongoDB中聚合(aggregate)主要用于处理数据(例如分组统计平均值、求和、最大值等),并返回计算后的数据结果,有点类似sql语句中的count(*)、groupby。..._如何将几个db的数据统整在一起做查询
文章浏览阅读680次,点赞7次,收藏8次。(2)application.properties配置文件。(4)UserService类。(5)测试和测试结果。
文章浏览阅读1k次,点赞17次,收藏25次。Studio 3T 2023.9 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端,支持自然语言查询_mongodb客户端
文章浏览阅读1.1k次,点赞32次,收藏27次。插件式的存储引擎架构可以实现 Server 层和存储引擎层的解耦,可以支持多种存储引擎,如 MySQL 既可以支持 B-Tree 结构的 InnoDB 存储引擎,还可以支持 LSM 结构的 RocksDB 存储引擎。MongoDB 中的记录就是一个 BSON 文档,它是由键值对组成的数据结构,类似于 JSON 对象,是 MongoDB 中的基本数据单元。的简称,是 JSON 文档的二进制表示,支持将文档和数组嵌入到其他文档和数组中,还包含允许表示不属于 JSON 规范的数据类型的扩展。
文章浏览阅读5.1k次,点赞6次,收藏96次。本文设计了一种基于智能室内温度控制的自动调速风扇。以STM32系列单片机为核心主控板,通过程序代码驱动和使用温度传感器模块实现对环境温度的实时监测,并可以实时显示环境温度。同时,可以设置温度检测的上下警告值,根据需求自行调节。_stm32 温控风扇
文章浏览阅读898次,点赞13次,收藏21次。在MongoDB中,我们使用find()和find_one()方法来在集合中查找数据,就像在MySQL数据库中使用SELECT语句来在表中查找数据一样。_pymongo find_one