2013-04-11 17 views
2

我有一個很大的地理空間數據集(~30m記錄),我目前正在導入到PostgreSQL數據庫中。我需要一個唯一的ID分配給每條記錄,但是遞增整數可能是一個壞主意,因爲如果我需要重新導入數據集,它不能可靠地重新創建。哪些散列算法最適合在Postgres中生成唯一ID?

在確定的投影中,幾何數據的唯一散列似乎是可靠標識符的最佳選擇。能夠計算Postgres中的哈希將是有益的,並且速度也會有好處。

鑑於這種情況,我的選擇是什麼?有沒有一種特別適合這種情況的方法?

+0

你的意思是一個獨特的,穩定的標識符,你可以*從數據本身重新創建*,或者是一個全球唯一的標識符,保證永遠不會與任何東西發生衝突? \ *咳嗽\ *'uuid' \ *咳嗽\ * – deceze 2013-04-11 14:43:04

+0

從數據本身重新創建。如果由於某種原因必須重新加載數據,UUID會發生變化。 – 2013-04-11 14:44:04

+0

md5? http://www.postgresql.org/docs/9.1/static/functions-string.html – leonbloy 2013-04-11 14:52:06

回答

2

如果您需要一個依賴於數據的獨特標識符(並且可以從中重新創建數據),最直接的選擇似乎是包含在Posgresql中的MD5散列(不需要額外的庫),而且效率很高並且 - 對於這種情況 - 安全。

pgcrypto module提供了額外的散列算法,例如SHA1。

當然,您需要聲明要散列的數據是唯一的。