資料庫系列 - 1: 儲存引擎

更新 發佈閱讀 3 分鐘

大家好,這個系列會介紹一些資料庫相關知識與內容,目前主要會偏向架構與一些應用上的知識為主,畢竟我不是 DBA 相關的工具,因此太過詳細的細節與內容會省略。好的,那麼第一節就來介紹一下資料庫的種類,以及主要的兩種儲存引擎吧[註1]!

關聯式資料庫 v.s. 非關聯式資料庫

根據資料之間的緊密、關聯程度,我們可以選擇使用關聯式或是非關聯式資料庫。

關聯式資料庫,資料都放在一個個資料表( table )中,而資料表與資料表間通常會有某些關聯,例如 A 資料表的 a 欄位與 B 資料表的 b 欄位數值相同,那麼我們就能藉由這種關聯性去篩選出我們在不同情境下所需要的資料。截至目前為止,由於這種關聯的特性,關聯式資料庫仍舊是最常使用的,而關聯式資料庫中應用最廣的則是 MySQL 。

非關聯式資料庫,資料則存放在一個個文件( document )中,而每筆資料則是用 json 的方式記錄在裡面。相比之下,由於非關聯式資料庫的文件之間無特定關聯,因此在建立上十分方便,也不需要指定輸入的欄位[註2],因此通常用於新創公司或是新業務拓展等,這些還不確定需要哪些資料的情況,或是用於紀錄 log 這種時間到就可以刪除的資料。

MyISAM

MyISAM,是改良自傳統的 ISAM ( Indexed Sequential Access Method ),也是 MySQL 最早的 Engine,它的主要優勢在於查詢的效能以及大容量的儲存空間。

由於 MyISAM 只管理索引並 cache ,因此比起同時管理索引與資料的 InnoDB 來的快上許多。然而 MyISAM 有兩個(對現代主流來說)嚴重的缺點, 就是不支援事務處理( Transaction )[註3]以及不支援外鍵( FK )[註4]。

此外,在清空資料( Drop )以及增長資料( Auto_Increment )這件事情上,MyISAM 比 InnoDB 快上許多,因此總結來說 MyISAM 本身比較適合處理高併發的情況。

InnoDB

InnoDB 是不同於 MyISAM 的另一種類型引擎,強調的是小而巧的功能。每張表的容量上限相對較低,但是能夠操作的功能更加細緻化,例如 Transaction 以及支援 FK。

此外, InnoDB 支援行級鎖( Row-level Lock ),代表不需要再跟之前的 MyISAM 一樣將整張表鎖起來進行操作,因此在處理 Select 以外的操作也快上許多。

目前 MySQL 的預設資料庫引擎已經改為使用 InnoDB ,因此若沒有特別調整的話都是直接使用目前偏主流的 InnoDB 囉~


[註1] 資料庫引擎有非常多種,以 MySQL 為例,只要輸入 SHOW ENGINES; 就可以看到長長一排它所支援使用的引擎。

[註2] 非關聯式資料庫依舊可以設定必須填入欄位,只是並不像關聯式資料庫一樣是必須的設定。

[註3] Transaction 多用於同時處理多張表的資料,或是一次性處理同張表內大量資料時,為了確保這些資料們都能成功處理的一種方式。

[註4] FK 算是關聯式資料庫在設計時的核心,連接資料表與資料表。

參考資料:

  1. https://www.codegym.tech/blog/sql-vs-nosql
  2. https://hackmd.io/@KaiChen/HkIYIad19
  3. https://www.runoob.com/w3cnote/mysql-different-nnodb-myisam.html
  4. https://www.cnblogs.com/wzh2010/p/17794018.html
留言
avatar-img
林柏宇的沙龍
2會員
57內容數
test
林柏宇的沙龍的其他內容
2025/05/04
本文詳細介紹了 RabbitMQ 的基本概念、架構以及其在現代系統中的重要性。RabbitMQ 作為一套開源的訊息佇列服務,旨在有效管理通訊流,增強系統穩定性和擴展性。透過描述佇列、交換器及消費者等核心組件的功能,並探討其在微服務和事件驅動架構中的應用。
Thumbnail
2025/05/04
本文詳細介紹了 RabbitMQ 的基本概念、架構以及其在現代系統中的重要性。RabbitMQ 作為一套開源的訊息佇列服務,旨在有效管理通訊流,增強系統穩定性和擴展性。透過描述佇列、交換器及消費者等核心組件的功能,並探討其在微服務和事件驅動架構中的應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
看更多
你可能也想看
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
※ 為什麼選擇SQLite? 安裝簡單:SQLite是一個零配置的資料庫,不需要複雜的設定和安裝過程。。 使用SQL語法。 設計選擇多元性(MySQL / SQLite):適合於小零件資料應用、嵌入式系統、物聯網設備。 ※ SQLite四大優點: 執行檔檔案很小:資料庫系統需要的磁碟空
Thumbnail
連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
Thumbnail
連接器故名思議就是兩個系統之間的橋樑, 而Kafka Connect正是扮演著這樣的角色, 如圖上, 我們可以透過Kafka Connect將SQL的資料導出到Kafka並導入到MySQL。 豐富的Plugin Confluent Hub提供了各式各樣的外掛套件, 包括了MongoDB、My
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
Thumbnail
支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。 映射關係 table->struct record->object field->attribute 安裝 go get github.com/astaxie/beego/orm​ go get github.com
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News