0%

About Database

關於 Database 的一些 Note

Database

Transaction: 一串資料對DB執行Read/Write,trnsaction內所有操作完成/不完成 (InnoDB特有)

  • Atomicity: 若發生意外,rollback到未執行時狀態
  • Consistency: 交易完成,維持資料完整性
  • Isolation: 多個交易同時獨立執行
  • Durability: 交易完成,異動結果完整保留

SQL & NoSQL 差異

SQL NoSQL
資料 Table之間串聯 JSON格式儲存資料,key-value型態
優點 資料一致性、完整 處理大量的結構化資料、易擴展
缺點 複雜場景、關係操作不易 缺乏標準化
舉例 處理金融信息和交易 資料分析、事件紀錄

資料庫正規化

  1. Primary key、消除意義上重複的欄位(性別、Gender)、欄位保持單一值
  2. 消除部分相依(Foreign key概念)
  3. 消除遞移相依(欄位與主鍵無直接關係,舉例:避免數量改變而總金額沒改到造成資料錯誤,應把總金額欄位移除。)

建立 index 規則

  • 常拿來做條件判斷的欄位
  • 欄位不要NULL、欄位內的值不大不用
  • Foreign key

Hibernate

  • Spring Data JPA(JpaRepository,底層實現hibernate)
  • JDBC透過 Java 來連接資料庫的一種技術
  • ORM(概念)物件關係的映射
  • JPA(規範) 來映射「物件的欄位」與「表的欄位」之間的對應關係 (@Column…)
  • 遵循 JPA 規範的 ORM 框架: Spring Data JPA、Hibernate

Q & A

  • 如何優化SQL?

    可使用explain分析SQL query (加index/建立view)
    explain 解讀

  • 使用索引

  • 選擇適當的type

  • 使用Join替代子查詢

  • 避免掃描整張表、臨時表

  • 避免 select *