UUID 和 GUID 的區別
阿新 • • 發佈:2018-12-20
UUID是一個由4個連字號(-)將32個位元組長的字串分隔後生成的字串,總共36個位元組長。比如:550e8400-e29b-41d4-a716-446655440000
GUID 是微軟對UUID這個標準的實現。UUID是由開放軟體基金會(OSF)定義的。UUID還有其它各種實現,不止GUID一種。比如我們這裡在Java中用到的。
資料庫中沒有COMB型別,它是Jimmy Nilsson在他的“The Cost of GUIDs as Primary Keys”一文中設計出來的。
COMB資料型別的基本設計思路是這樣的:既然UniqueIdentifier資料因毫無規律可言造成索引效率低下,影響了系統的效能,那麼我們能不能通過組合的方式,保留UniqueIdentifier的前10個位元組,用後6個位元組表示GUID生成的時間(DateTime),這樣我們將時間資訊與UniqueIdentifier組合起來,在保留UniqueIdentifier的唯一性的同時增加了有序性,以此來提高索引效率。
Android 使用程式碼:
那麼生成UUID變成了一件簡單的事,因為JDK實現了UUID: java.util.UUID,直接呼叫即可. UUID uuid = UUID.randomUUID(); String s = UUID.randomUUID().toString();//用來生成資料庫的主鍵id非常不錯。
import java.util.UUID;
UUID uid = UUID.randomUUID();
SQLIte 使用例子
// 插入資料
UUID locationID = UUID.randomUUID();
ContentValues initialValues = new ContentValues();
initialValues.put("rowid", locationID.toString());
//...other stuff...//
db.insert(DATABASE_TABLE_LOCATIONS, null, initialValues);
// 搜尋
Cursor c =
db.query(true, DATABASE_TABLE, new String[] {
"rowid", "stuff", "things"}, "rowid='" + rowId + "'",
null, null, null, null);
SQL 語句
CREATE TABLE Users
(
UserGuid TEXT PRIMARY KEY NOT NULL,
FirstName TEXT,
LastName TEXT
)
INSERT INTO Users (UserGuid, FirstName, LastName)
VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston')
DELETE FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'
MYSQL
在mysql中有函式生成guid:SELECT UUID();
一般我們用CHAR(36)或者BINARY(36)型別來儲存uuid。
PHP 使用 UUID