关系型非关系型数据库区别,以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. 首先,安装所需的依赖库。在项目文件夹中打开终端,并执行以下命令:

    javascript 复制代码
    npm install mongoose
  2. 在Express应用程序的入口文件(一般是app.js或index.js)中引入所需的模块:

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

    javascript 复制代码
    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对象来监听连接状态。你可以添加事件监听器,以便在连接成功或失败时执行相应的操作。示例代码如下:

    javascript 复制代码
    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实例。示例代码如下:

javascript 复制代码
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,你可以定义文档的结构和约束,以及各种操作方法。

如果要导出

javascript 复制代码
module.exports={
    User
    
}

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

相关推荐
Msshu1231 天前
Type-C 多协议快充诱骗电压芯片XSP28 芯片脚耐压高达21V 电路简单 性价比高
mongodb·zookeeper·rabbitmq·flume·memcache
hexiekuaile1 天前
mongodb8.2知识
mongodb
The Sheep 20232 天前
MongoDB与.Net6
数据库·mongodb
点灯小铭2 天前
基于单片机的智能收银机模拟系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
数据知道2 天前
一文掌握 MongoDB 存储引擎 WiredTiger 的原理
数据库·mongodb·数据库架构
清风6666663 天前
基于单片机的电加热炉智能温度与液位PID控制系统设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业
列御寇3 天前
MongoDB分片集概述
数据库·mongodb
水冗水孚3 天前
告别黑盒!手写Windows版简易NodeMON,学习文件监听代码修改与进程服务重启知识
node.js·express
列御寇3 天前
MongoDB分片集群——集群组件概述
数据库·mongodb
列御寇3 天前
MongoDB分片集群——mongos组件(mongos进程)
数据库·mongodb