盘点那些常用的数据库以及各自的原理和特点,简单明了的说一下

我们都知道,常用的后端数据库包括关系型数据库和非关系型数据库两种类型,每个类型市场上都有主流的数据库,就像前端的react,vue一样,但,会用归会用,你能说明白,他们都有哪些?分别什么特点,怎么用的吗?下面我来分别介绍它们及其原理,并附上实例代码说明用法,看看是不是你心中的标准答案。

1. 关系型数据库

关系型数据库采用表格结构存储数据,数据之间通过关系进行连接。常见的关系型数据库包括 MySQL、PostgreSQL、Oracle等。

1.1 MySQL

MySQL 数据库特点和原理

MySQL 是一个流行的关系型数据库管理系统(RDBMS),具有以下特点和原理:

  1. 开源免费:MySQL 是开源的数据库系统,并且提供免费使用,适合各种规模的应用场景。

  2. 高性能:MySQL 通过优化的查询处理、索引和缓存机制等,实现了高性能的数据访问和处理能力。

  3. 高可靠性:MySQL 支持事务和 ACID(原子性、一致性、隔离性、持久性)特性,能够保证数据的一致性和可靠性。

  4. 易用性:MySQL 提供了丰富的管理工具和客户端程序,如 MySQL Workbench、phpMyAdmin ,Navicate for mysql等,使得数据库的管理和操作变得更加简单和方便。

  5. 跨平台性:MySQL 支持多种操作系统平台,包括 Linux、Windows、macOS 等,能够在不同平台上运行和部署。

MySQL 代码实例(使用 Node.js 的 mysql 模块)

在示例中,我们将演示如何使用 Node.js 的 mysql 模块连接 MySQL 数据库,并进行数据操作。

首先,确保已经安装了 Node.js 和 MySQL,并且安装了 mysql 模块。

bash 复制代码
npm install mysql

然后,编写一个简单的 Node.js 脚本来连接 MySQL 数据库,并进行数据操作。

javascript 复制代码
// 导入 mysql 模块
const mysql = require('mysql');

// MySQL 数据库连接配置
const dbConfig = {
  host: 'localhost',
  user: 'your_username',
  password: 'your_password',
  database: 'your_database'
};

// 创建 MySQL 连接
const connection = mysql.createConnection(dbConfig);

// 连接 MySQL 数据库
connection.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err);
    return;
  }
  console.log('Connected to MySQL database');
  
  // 执行 SQL 查询
  connection.query('SELECT * FROM your_table', (error, results, fields) => {
    if (error) {
      console.error('Error executing query:', error);
      return;
    }
    // 输出查询结果
    console.log('Query Result:', results);
  });
  
  // 关闭 MySQL 连接
  connection.end((err) => {
    if (err) {
      console.error('Error closing connection:', err);
      return;
    }
    console.log('MySQL connection closed');
  });
});

在上面的示例中,我们使用 mysql 模块连接 MySQL 数据库,并执行了一个简单的 SQL 查询。这只是一个简单的示例,MySQL 数据库支持更丰富的 SQL 语法和功能,可以根据具体需求进行更多的操作。

1.2 Oracle 数据库

Oracle 数据库是一种关系型数据库管理系统(RDBMS),具有以下特点和原理:

  1. 高性能:Oracle 数据库具有优秀的性能和稳定性,在大型企业应用中广泛使用。

  2. 高可用性:Oracle 提供了多种高可用性解决方案,如数据保护、故障转移和自动故障恢复等,以确保数据的持续可用性。

  3. 扩展性:Oracle 支持水平和垂直扩展,能够满足不同规模和需求的应用场景。

  4. 安全性:Oracle 提供了多层次的安全机制,包括访问控制、数据加密和审计等,以保护数据的安全性和隐私。

  5. 丰富的功能:Oracle 提供了丰富的功能和工具,包括事务管理、并发控制、备份恢复、数据分析和报表等。

我们来演示一下,如何使用 Node.js 的 oracledb 模块连接 Oracle 数据库,并进行数据操作。

首先,确保已经安装了 Node.js 和 Oracle Instant Client,并且安装了 oracledb 模块。

bash 复制代码
npm install oracledb

然后,编写一个简单的 Node.js 脚本来连接 Oracle 数据库,并进行数据操作。

javascript 复制代码
// 导入 oracledb 模块
const oracledb = require('oracledb');

// Oracle 数据库连接配置
const dbConfig = {
  user: 'your_username',
  password: 'your_password',
  connectString: 'your_connect_string' // 格式为 host:port/service_name
};

// 连接 Oracle 数据库
async function connectToOracle() {
  try {
    // 获取数据库连接
    const connection = await oracledb.getConnection(dbConfig);

    // 执行 SQL 查询
    const result = await connection.execute(
      `SELECT * FROM your_table`
    );

    // 输出查询结果
    console.log('Query Result:', result.rows);

    // 释放数据库连接
    await connection.close();
  } catch (error) {
    console.error('Error connecting to Oracle:', error);
  }
}

// 执行连接函数
connectToOracle();

在上面的示例中,我们使用 oracledb 模块连接 Oracle 数据库,并执行了一个简单的 SQL 查询。这只是一个简单的示例,Oracle 数据库支持更丰富的 SQL 语法和功能,可以根据具体需求进行更多的操作。

1.3 PostgreSQL

PostgreSQL 是一个开源的关系型数据库管理系统(RDBMS),具有以下特点和原理:

  1. 强大的扩展性:PostgreSQL 提供了丰富的扩展功能和插件接口,支持用户自定义数据类型、函数、存储过程和索引等,能够满足各种复杂的业务需求。

  2. 高级特性支持:PostgreSQL 支持许多高级特性,如复杂查询、窗口函数、CTE(Common Table Expressions)、JSON 数据类型和操作、地理空间数据处理等,能够处理各种复杂的数据场景。

  3. 多版本并发控制:PostgreSQL 使用多版本并发控制(MVCC)来实现事务的隔离和并发访问控制,能够提高数据库的并发性能和可靠性。

  4. 丰富的数据类型支持:PostgreSQL 支持多种数据类型,包括整型、浮点型、字符串、日期时间、数组、JSON、XML、地理空间数据等,能够满足不同类型的数据存储需求。

  5. 安全性和可靠性:PostgreSQL 提供了丰富的安全性功能,包括访问控制、数据加密、审计和备份恢复等,能够保护数据库的安全性和可靠性。

PostgreSQL 代码实例(使用 Node.js 的 pg 模块)

在示例中,我们将演示如何使用 Node.js 的 pg 模块连接 PostgreSQL 数据库,并进行数据操作。

首先,确保已经安装了 Node.js 和 PostgreSQL 数据库,并且安装了 pg 模块。

bash 复制代码
npm install pg

然后,编写一个简单的 Node.js 脚本来连接 PostgreSQL 数据库,并进行数据操作。

javascript 复制代码
// 导入 pg 模块
const { Client } = require('pg');

// PostgreSQL 数据库连接配置
const dbConfig = {
  user: 'your_username',
  password: 'your_password',
  host: 'your_host',
  database: 'your_database',
  port: 5432, // 默认 PostgreSQL 端口号
};

// 创建 PostgreSQL 客户端连接
const client = new Client(dbConfig);

// 连接 PostgreSQL 数据库
async function connectToPostgreSQL() {
  try {
    // 连接数据库
    await client.connect();

    // 执行 SQL 查询
    const queryResult = await client.query('SELECT * FROM your_table');

    // 输出查询结果
    console.log('Query Result:', queryResult.rows);
  } catch (error) {
    console.error('Error connecting to PostgreSQL:', error);
  } finally {
    // 关闭数据库连接
    await client.end();
  }
}

// 执行连接函数
connectToPostgreSQL();

在上面的示例中,我们使用 pg 模块连接 PostgreSQL 数据库,并执行了一个简单的 SQL 查询。这只是一个简单的示例,PostgreSQL 数据库支持更丰富的 SQL 语法和功能,可以根据具体需求进行更多的操作。

2. 非关系型数据库

非关系型数据库通常以键值对、文档、列族、图形等形式存储数据,适用于处理大量无结构或半结构化的数据。常见的非关系型数据库包括 MongoDB、Redis等。

2.1 MongoDB

  • 类型:文档型数据库
  • 原理:MongoDB 使用文档模型来存储数据,每个文档都是一个 JSON 格式的记录,类似于关系型数据库中的行。MongoDB 数据库使用了 B 树索引来提高查询性能,并且支持副本集和分片来实现数据的高可用性和水平扩展。
  • 用法示例(使用 Node.js 的 mongoose 库):
javascript 复制代码
const mongoose = require('mongoose');

// 连接 MongoDB 数据库
mongoose.connect('mongodb://localhost/my_database', { useNewUrlParser: true, useUnifiedTopology: true });

// 定义 Schema
const userSchema = new mongoose.Schema({
  username: String,
  email: String
});

// 定义 Model
const User = mongoose.model('User', userSchema);

// 创建文档
const user1 = new User({ username: 'user1', email: 'user1@example.com' });

// 保存文档
user1.save()
  .then(() => {
    console.log('User saved successfully');
  })
  .catch((error) => {
    console.error('Error saving user:', error);
  });

// 查询文档
User.find({}, (err, users) => {
  if (err) {
    console.error('Error finding users:', err);
    return;
  }
  console.log('Users:', users);
});

2.2 Redis 数据库

Redis 是一个开源的基于内存的数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并提供了丰富的操作命令。Redis 的特点包括:

  1. 基于内存:Redis 将数据存储在内存中,因此读写速度非常快。
  2. 持久化支持:Redis 支持将数据持久化到磁盘上,以便在重启时恢复数据。
  3. 多种数据结构:Redis 支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,能够满足不同场景的需求。
  4. 支持事务和发布订阅:Redis 支持事务操作和发布订阅模式,可以实现复杂的应用场景。

Redis 的原理包括:

  1. 单线程模型:Redis 使用单线程模型来处理客户端请求,通过多路复用技术实现并发处理多个客户端请求。
  2. 事件驱动:Redis 使用事件驱动模型来处理网络事件,包括客户端连接、请求读取、数据写入等。
  3. 数据结构实现:Redis 内部实现了各种数据结构的存储和操作算法,如哈希表、跳表等。

在示例中,我们将演示如何使用 Node.js 的 ioredis 库连接 Redis 数据库,并进行数据操作。

首先,确保已经安装了 Node.js 和 Redis,并且在本地启动了 Redis 服务器。

bash 复制代码
npm install ioredis

然后,编写一个简单的 Node.js 脚本来连接 Redis 数据库,并进行数据操作。

javascript 复制代码
// 导入 ioredis 库
const Redis = require('ioredis');

// 创建 Redis 客户端连接
const redis = new Redis();

// 设置键值对
redis.set('name', 'Alice')
  .then(() => {
    console.log('Key-value pair set successfully');
  })
  .catch((error) => {
    console.error('Error setting key-value pair:', error);
  });

// 获取键值对
redis.get('name')
  .then((value) => {
    console.log('Value:', value);
  })
  .catch((error) => {
    console.error('Error getting value:', error);
  });

// 关闭 Redis 客户端连接
redis.quit();

在上面的示例中,我们使用 ioredis 库创建了一个 Redis 客户端连接,并进行了设置和获取键值对的操作。这只是一个简单的示例,Redis 还支持更丰富的数据结构和操作命令,可以根据具体需求进行更多的操作。

最后也是全文最重要的,码字不易,你的鼓励是我持之以恒码字的动力,欢迎关注搜藏,共同学习进步,感谢!

相关推荐
奶糖趣多多29 分钟前
Redis知识点
数据库·redis·缓存
CoderIsArt2 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
师太,答应老衲吧4 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
码农小旋风4 小时前
详解K8S--声明式API
后端
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~4 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616884 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
Channing Lewis5 小时前
salesforce case可以新建一个roll up 字段,统计出这个case下的email数量吗
数据库·salesforce