我在計劃數據庫以存儲大量文本。 (博客文章,新聞文章等)數據庫需要標題,內容(最多5萬個字符),日期,鏈接和語言字段。同一內容不能在一個鏈接上發生。舊內容(例如30天以上)將被刪除。PostgreSQL:在大型數據庫上定義主鍵
現在,問題是主鍵。我可以設置一個自動遞增(SERIAL類型)字段並將其用作主鍵。但是,這看起來很愚蠢,並且浪費了光盤空間,因爲該領域不會有任何目的,只能成爲主要關鍵。 (並且該字段最終可能會用完,或者不是?)並且總是存在其他性能問題:插入的每個新行的內容都需要檢查重複項。因此,我提出的主鍵的另一個解決方案是計算內容+鏈接值的sha256散列,然後將其放在新的「散列」列中,並將其用作主鍵。一石二鳥。當然,這個問題是散列衝突。這是一個很大的威脅嗎?
我對PostgreSQL沒有任何經驗,對DBMS的一般經驗也很少,所以我希望在創建一個具有高速公路上蝸牛性能特徵的數據庫(可怕的比較)之前有第二種意見。
如果您對大型數據庫有任何經驗,請幫助我。在我的情況下,將64字符的字符串設置爲主鍵字段是個好主意嗎? (因爲我的印象是,一般這是避免)
如果您使用SHA256作爲主鍵,它不一定是不可變的嗎?如果內容+鏈接值更改會發生什麼? – 2009-06-29 19:37:45
哈維,好點,但如果一個會改變一行的內容值,那麼我會檢查是否存在新內容+鏈接alredy的散列。如果是這樣,則不會發生變化。 – KRTac 2009-06-29 19:50:25
因此,如果內容發生變化,您創建一個新的記錄? – 2009-06-29 20:31:37