資料庫與開發工具學習筆記

一、Oracle Database

1. Schema(模式)

Schema = 一個使用者擁有的資料物件集合
一個 User 對應一個 Schema(名稱相同)
物件類型 說明
Table儲存資料的主要結構
View查詢的邏輯視圖
Index加速查詢的結構
Sequence產生流水號
Procedure/FunctionPL/SQL 程式邏輯

2. SGA vs PGA

項目 SGA PGA
範圍 全域共享 每個 Session 獨立
建立時間 Instance 啟動時 Session 建立時
內容 Buffer Cache, Shared Pool, Redo Buffer Sort, Hash, Session 狀態

3. Cache 釋放時機

快取類型 釋放時機
Database Buffer Cache新資料塊需要空間時(LRU)
Shared Pool空間不足、未使用 SQL 被替換
Redo Log Buffer滿、3秒、COMMIT 時

4. Oracle 架構層級

Instance → Database → Tablespace → Datafile
邏輯:Database, Tablespace, Schema, Table
物理:Datafile

5. Segment 類型

段類型 作用
Data Segment存放資料表的實際資料
Index Segment存放索引結構
Temporary Segment存放排序/查詢中間結果
Undo Segment存放修改前舊值(支援回滾)

6. Oracle 版本

代號 含義 範例
iInternetOracle 8i, 9i
gGrid ComputingOracle 10g, 11g
cCloud ComputingOracle 12c, 19c
產品版本 說明
EE功能最完整,企業使用
SE功能較少,中小企業
XE免費版,功能限制

二、資料庫基礎

1. RDBMS vs NoSQL

特性 RDBMS NoSQL
結構固定 Schema彈性結構
擴展垂直擴展水平擴展
一致性強一致性(ACID)最終一致性(BASE)
適用金融、ERP大數據、高併發

2. ACID vs BASE

ACID 說明
Atomicity全成功或全失敗
Consistency資料永遠正確
Isolation事務彼此不干擾
Durability提交後永久保存
BASE 說明
Basically Available系統永遠能回應
Soft State狀態可暫時不一致
Eventually Consistent最終會同步

3. SQL 分類

類型 用途 指令
DDL定義結構CREATE, ALTER, DROP
DML操作資料INSERT, UPDATE, DELETE, SELECT
TCL控制事務COMMIT, ROLLBACK

4. ER 圖

元素 圖形 代表
Entity矩形資料表
Attribute橢圓欄位
Relationship菱形關聯

三、Git 版本控制

1. 版本控制系統

類型 代表 特點
分散式Git, GitHub, GitLab每人都有完整副本
集中式SVN, CVS需連接中央伺服器

2. 常用指令

# 查看設定
git config user.name
git config --global user.name "名字"

# 分支操作
git branch feature/功能名稱
git branch hotfix/修復名稱

# 合併提交
git rebase -i HEAD~3

# 找回刪除提交
git reflog
git reset --hard 版本號

# 中文檔名修正
git config core.quotepath false
    

3. 分支命名

前綴 用途
feature/功能分支
hotfix/修 bug
test/測試
master生產環境

四、Docker

Docker 是 Linux 原生工具
Windows 透過 WSL2 提供 Linux 環境來運行 Docker

CPU 架構

架構 說明
amd6464位元 x86(Intel/AMD)
arm64ARM 64位元(手機、M1/M2)

五、網路基礎

同網段 vs 不同網段

同網段 = IP AND 子網路遮罩 → 網路位址相同
情況 處理
同網段用 ARP 找 MAC,直接傳送
不同網段交給路由器轉送

六、其他工具

Cisco Packet Tracer

下載:https://www.netacad.com/resources/lab-downloads

GitLab 安裝

RPM = Linux 套件管理系統(Red Hat 系列)

Personal Access Token

用於取代密碼,安全存取 GitHub/GitLab

七、編碼

亂碼原因

不同編碼的解碼器會把每個 byte 當作合法字元
即使編碼錯誤,仍能對應到「某個符號」
結果就是亂碼:每個 byte 被當作不同編碼規則解讀