What is UUID ?

UUID為通用唯一識別碼,其目的,是讓分散式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人衝突的UUID。在這樣的情況下,就不需考慮資料庫建立時的名稱重複問題。

UUID的優點

安全

使用一般INT IDENTITY確實非常方便,但若今天網頁需要查詢,那不就公開的說明這是第幾筆資料了嗎? 甚至他可以慢慢地嘗試出你資料表到底有多少資料,當然我想也不僅僅只有這個簡單的漏洞,尤其是電子商務類型的網站更加需要安全。

若使用UUID他便無法猜測出什麼,對於資料安全是非常有幫助的。

合併資料表

一般來說INT IDENTITY是跟著SQL跑的,有時候你並不知道那個資料庫是怎樣情形,因此在合併資料時非常容易有問題出現,但UUID因為是唯一識別碼,每個SQL產生的都不同,所以基本上是不會有衝突的問題,但還是有那麼一點機會的,但這又是另一回事了。

適合大量插入

UUID並非一定要跟著SQL走,今天程式碼也可以產生,我們可以在資料插入前就先將UUID一併產生,這樣我們就只需要插入資料動作即可,並不需要像INT IDENTITY讓SQL先產生後才插入。

UUID的缺點

空間使用較大

UUID的標準型式包含32個16進位數字,因此在SQL上會占用較大的空間來儲存。

查詢較慢

上述已經說明UUID佔用空間大,理所當然查詢與關聯時所使用的速度也較長。

為什麼使用UUID

目前硬體效能已經非常好了,這一些空間與查詢速度將會使用硬體來補強,使用UUID也可以讓整個資料庫更有擴展性,所以目前越來越多人使用UUID作為主索引鍵,但是有一點還是要明白,UUID並非無敵,在設計資料庫時就應該將未來規劃計算進去,若今天這個資料表並不需要太多安全與資料,那使用INT IDENTITY並無不佳。

UUID的規則

UUID的標準型式包含32個16進位數字,以連字號分為五段,形式為8-4-4-4-12的32個字元。範例:

550e8400-e29b-41d4-a716-446655440000

全局唯一識別字,是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。按照開放軟體基金會(OSF)制定的標準計算,用到了乙太網卡位址、納秒級時間、晶片ID碼和許多可能的數位。

通常UUID的生成方式:

  1. 當前的時間
  2. 時鐘序列
  3. 取得硬體資料,通常是使用MAC位置,若沒有會由其他方式取得

results matching ""

    No results matching ""