2011-05-04 33 views
0

我可以使用CRC函數作爲postgres的散列嗎?對postgres使用hash的任何建議?

+0

你需要專門的CRC還是隻是一個哈希函數? – 2011-05-04 08:14:29

+0

我認爲散列就足夠了。但不確定。我需要CRC來檢測一組列的更改。我計劃將它用於Lucene,如果記錄已更改,現在必須使用它。 – Tioma 2011-05-04 08:21:49

+0

事實上,我想到MD5,但不知道在性能和數據量方面有意義 – Tioma 2011-05-04 08:26:25

回答

3

如果有任何舊的散列函數可以執行,PostgreSQL內置一個md5()函數。MD5應該足以檢查記錄是否已經改變。如果您需要處理非文本數據,還有一個binary version

1

基礎上說的評論:

我需要CRC以檢測組列的變化。我計劃將它用於Lucene,如果記錄已更改,現在必須使用它。

檢查crc是一個壞主意。只需將「上次修改」列添加到您的表中,並在觸發器中更新它(如果有任何字段被修改)。

然後,在您的lucene饋線中,您可以:從last_modified>'previous last_modified'對象中選擇*,這是因爲它已被編入索引。

+0

是的,那是個好主意。只在事情上,導致所有記錄更新。但實際上其中一些與以前有相同的數據。這就是爲什麼我想到crc – Tioma 2011-05-04 09:14:36

+0

對不起,我不明白你的意思。 – 2011-05-04 09:20:40

+0

我的意思是我不能添加字段「最後修改」。在每次更新過程之後,我都有結果中的所有更新記錄。所以所有的記錄都會標有新的日期。但是我用舊數據更新了一些記錄。例如records1 =「123」,我爲它設置「123」。由於這個原因,「最後的mod」對我來說不是解決方案。 – Tioma 2011-05-04 09:32:28