邱敬幃 Pardn Chiu
目錄NoSQL 與關聯式資料庫的差別1. NoSQL 資料庫是什麼?(1). NoSQL 的特點:(2). NoSQL 的常用資料庫:2. 關聯式資料庫是什麼?(1). 關聯式資料庫的特點:(2). 關聯式資料庫的常用資料庫:3. NoSQL 與關聯式資料庫的差異(1). 數據模型(2). 靈活性(3). 查詢(4). 擴展性(5). 事務處理(6). 適用場景開始使用 MongoDB 與 Mongoose 建立 Node.js 應用程式的 NoSQL 數據庫連接1. Mongoose 是什麼?2. 安裝 MongoDB3. 安裝 Mongoose 資料庫套件4. 連接 MongoDB 資料庫5. 定義 Mongoose 模型6. 執行 Mongoose 數據操作開始使用關聯資料庫 MySQL 建立 Node.js 應用程式的資料庫連接1. 什麼是 MySQL?2. 安裝 MySQL 資料庫3. 安裝 MySQL 資料庫套件建立資料庫連接執行 SQL 查詢系列文章相關連結
標籤
nosql mongodb mysql mongoose nodejs

前進資料庫! MongoDB 與 MySQL

Node.js: JavaScript 的後端魔法 (5)

307次觀看 1收藏 後端開發 Nodejs Database
本篇文章我們將討論兩個主要的資料庫選擇:NoSQL 的 MongoDB 和關聯式資料庫的 MySQL。討論 Mongoose 這個 MongoDB 的 ODM 庫,以及如何使用 Node.js 的模組來連接和操作 MySQL 資料庫。

NoSQL 與關聯式資料庫的差別

在現代 Web 開發中,選擇合適的資料庫系統是一個重要的決策,因為它將直接影響你的應用程式的效能、可擴展性和數據處理能力。兩個主要的資料庫類型是 NoSQL 資料庫和關聯式資料庫。以下我們將深入探討這兩者之間的差異。

1. NoSQL 資料庫是什麼?

NoSQL 資料庫是一種非關聯式分散式的資料儲存系統,主要特點是沒有嚴格的結構化模式。代表可以將各種不同格式的數據 (文本、圖像、JSON 文件等) 存儲在同一個資料庫中。

(1). NoSQL 的特點:
  • 靈活性
    NoSQL 資料庫允許動態添加和修改數據模式,這對於快速開發和應對需求變化非常有用。
  • 擴展性
    NoSQL 資料庫設計用於應對大規模數據和流量,通常能夠更容易地擴展以應付增長。
  • 高效的讀寫
    NoSQL 資料庫通常以低延遲處理讀寫操作,這使在需要快速存取數據的情況下表現更出色。
  • 多模型支持
    NoSQL 資料庫支持多種不同的數據模型,包括文件、圖形、列和鍵值存儲。
(2). NoSQL 的常用資料庫:
  • MongoDB
    一個廣泛使用的 NoSQL 資料庫,以 BSON (二進制 JSON) 文件格式儲存數據。
  • Cassandra
    用於處理大規模分散式數據的 NoSQL 資料庫,特別適合時間序列數據。

2. 關聯式資料庫是什麼?

關聯式資料庫是一種傳統的數據儲存系統,主要使用表格結構來組織數據,並使用 SQL (結構化查詢語言) 進行查詢和操作。每個表格都有預定義的模式,包括列名和數據類型。

(1). 關聯式資料庫的特點:
  • 結構化數據
    關聯式資料庫強制數據遵循特定的結構,確保資料的一致性和完整性。
  • ACID 事務
    關聯式資料庫支援 ACID (原子性、一致性、隔離性、持久性) 事務,確保數據的可靠性。
  • 複雜查詢
    使用 SQL 語法,可以執行複雜的查詢和連接操作,這使得關聯式資料庫非常適合需要多表格關聯查詢的應用。
  • 適用於結構穩定的數據
    關聯式資料庫適合處理結構穩定、需要高度一致性和完整性的數據。
(2). 關聯式資料庫的常用資料庫:
  • MySQL / MariaDB
    一個廣泛使用的開源關聯式資料庫管理系統。
  • PostgreSQL
    一個功能豐富的開源關聯式資料庫,強調擴展性和標準支持。

3. NoSQL 與關聯式資料庫的差異

(1). 數據模型
  • NoSQL
    NoSQL 資料庫支援文檔、圖形、列和鍵值等多種模型存儲。非常適合處理多樣性的數據。
  • 關聯式資料庫
    關聯式資料庫使用表格結構來組織數據,並要求數據遵循預定義的結構。
(2). 靈活性
  • NoSQL
    NoSQL 資料庫具有高度的靈活性,可以動態調整數據模型,適應需求變化。
  • 關聯式資料庫
    關聯式資料庫的結構較為固定,需要事先定義模式,更難應對結構變化。
(3). 查詢
  • NoSQL
    多數 NoSQL 資料庫使用自家的查詢語言或 API,而不是 SQL。這可能需要學習新的查詢方式。
  • 關聯式資料庫
    關聯式資料庫使用 SQL,這是一種廣泛使用的結構化查詢語言。
(4). 擴展性
  • NoSQL
    NoSQL 資料庫擴展性高,能夠更容易地處理大規模數據和高流量。
  • 關聯式資料庫
    關聯式資料庫的擴展性有限,通常需要複雜的垂直和水平分割策略。
(5). 事務處理
  • NoSQL
    NoSQL 資料庫通常不支援 ACID 事務,因此在需要強事務支援的應用中可能不適用。
  • 關聯式資料庫
    關聯式資料庫支援 ACID 事務,確保數據的一致性和可靠性。
(6). 適用場景
  • NoSQL
    NoSQL 資料庫適合需要處理多樣性數據、擴展性和快速開發的場景,如大數據分析、社交媒體、日誌存儲等。
  • 關聯式資料庫
    關聯式資料庫適合結構穩定、需要高度一致性和完整性的應用,如金融系統、訂單處理、內部業務應用等。

開始使用 MongoDB 與 Mongoose 建立 Node.js 應用程式的 NoSQL 數據庫連接

1. Mongoose 是什麼?

Mongoose 是一個 Node.js 的 ODM (Object-Document Mapping) 庫,專為 MongoDB 提供了一個優雅的方式來定義數據模型、執行查詢和管理數據庫連接。

2. 安裝 MongoDB

MongoDB 官方網站 下載適合你系統的版本。

3. 安裝 Mongoose 資料庫套件

  1. npm install mongoose

4. 連接 MongoDB 資料庫

  1. const mongoose = require("mongoose");
  2. mongoose.connect("mongodb://localhost/[db-name]", {
  3.     useNewUrlParser: true,
  4.     useUnifiedTopology: true,
  5. });
  6. const db = mongoose.connection;
  7. db.on("error", console.error(console));
  8. db.once("open", () => {
  9.     console.log('Connected');
  10. });

請將 mongodb://localhost/[db-name] 替換為目標資料庫 MongoDB 連接字串,並確保 MongoDB 伺服器正常運行。

5. 定義 Mongoose 模型

使用 Mongoose,我們需要定義模型來描述數據的結構。以下新增一個 user.js 作為範例:

  1. const mongoose = require("mongoose");
  2. const userSchema = new mongoose.Schema({
  3.     username: String,
  4.     email: String,
  5.     age: Number
  6. });
  7. const User = mongoose.model('User', userSchema);
  8. module.exports = User;

6. 執行 Mongoose 數據操作

透過上面設定的模型創建一個新用戶作為範例:

  1. const User = require('./models/user'); // 替換為user.js路徑
  2. const newUser = new User({
  3.     username: "pardnchiu",
  4.     email: "mail@pardn.ltd",
  5.     age: 30
  6. });

這個範例創建了一個新使用者物件,並將其保存到 MongoDB 數據庫中。


開始使用關聯資料庫 MySQL 建立 Node.js 應用程式的資料庫連接

1. 什麼是 MySQL?

MySQL 是一個開源的關聯式資料庫管理,使用表格結構來儲存數據,並使用 SQL 作為查詢語言,以高性能、穩定性和廣泛的支援而聞名。適用於各種規模的應用程式。

2. 安裝 MySQL 資料庫

MySQL 官方網站 下載適合你系統的版本。

3. 安裝 MySQL 資料庫套件

  1. npm install mysql

建立資料庫連接

需要引入 mysql 模組並建立與 MySQL 資料庫的連接。

  1. const mysql = require("mysql");
  2. const db = mysql.createConnection({
  3.     host: "[HOST]",
  4.     user: "[ACCOUNT]",
  5.     password: "[PASSWORD]",
  6.     database: "[DATABASE]"
  7. });
  8. // 測試連接
  9. db.connect(err => {
  10.     if (err) {
  11.         console.error(err);
  12.     } 
  13.     else {
  14.         console.log("success");
  15.     };
  16. });

執行 SQL 查詢

使用 db.query() 方法執行 SQL 查詢。

  1. // 查詢所有使用者
  2. db.query("SELECT * FROM users", (err, ary) => {
  3.     if (err) return console.error(err);
  4.     console.log(ary);
  5. });

系列文章


相關連結