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

我们都知道,常用的后端数据库包括关系型数据库和非关系型数据库两种类型,每个类型市场上都有主流的数据库,就像前端的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 还支持更丰富的数据结构和操作命令,可以根据具体需求进行更多的操作。

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

相关推荐
Hello.Reader2 小时前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq195133454312 小时前
Redis-主从复制-分布式系统
java·数据库·redis
好奇的菜鸟5 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°5 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜5 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
DuelCode6 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社26 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术6 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理6 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
Hello.Reader7 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存