iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
1
影片教學

想盡辦法當好一個Junior Backend Developer系列 第 5

Golang - 如何當好一個junior backend developer - 想想Primary Key設計這件事情

  • 分享至 

  • xImage
  •  

Yes

先想想Primary key這件事情

  • Natural Key

    • 身分證

      如果natural key能絕對不會因為未來系統邏輯改動而失效的,能用就用

  • Surrogate Key

    • Auto Incresment
      • 無法保證序號一定是加一遞增,可能會因為delete recorde or rollback的時候放棄這次的序號
      • 性能一定比較好
      • 容易被猜到PK (可以做額外的方式避免:經由hash 或是 額外多存UUID當作公開暴露)
      • 數字ID天然排序
      • 分散式資料庫 PK會有衝到的問題
      • INSERT record的時候需要拿ID 需要多作RETURNING語法拿到PK的值
      • 合併資料會很麻煩
    • UUID
      • 因為佔的空間大 性能略差(個人認為很大量的資料才有顯著的差距)
      • 理論上是唯一
      • 沒有排序,無法保證趨勢遞增
      • 可以由Application Server產生UUID在INSERT Record 不需要透過RETURNING語法拿到PK的值

歡迎參觀團隊其他成員的文章~


上一篇
Golang - 如何當好一個junior backend developer - PostgreSQL安裝與權限探討
下一篇
Golang - 如何當好一個junior backend developer - 來設計貓咪平台的schema吧
系列文
想盡辦法當好一個Junior Backend Developer13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言