我試圖在外觀和行爲中創建類似於YouTube的/v=xxx
的網址。簡而言之,用戶將上傳文件並能夠通過該URL訪問它們。該URL代碼需要是某種形式的數據庫主鍵,以便頁面可以收集所需的數據。我是數據庫新手,這比數據庫問題更重要。主鍵的唯一網址
在我的數據庫中,我有一個自動遞增主鍵,可以訪問文件數據。我想用這個數字來創建文件的URL。我開始研究不同的哈希函數,但我擔心碰撞。我不希望兩個不同文件的URL相同。
我也考慮使用uniqid()
作爲我的主鍵CHAR(13)
,並直接使用。但是,我擔心效率問題。同樣環顧四周,我似乎無法找到很多關於它的內容,所以這可能是一個奇怪的想法。更不用說,當生成可能效率低下的ID時,我需要測試碰撞。自動增量更容易。
有沒有什麼好的解決方案呢?我的想法是否有用?如何從自動遞增的主鍵生成唯一的URL並避免衝突?
我傾向於第二個想法,效率不高,但是當需要將事物添加到數據庫(測試碰撞)時會導致最大的性能缺陷,而最終用戶只需要發生一次。另一個性能缺點可能在於實際查看字符而不是整數。但我主要擔心這是不好的做法。
編輯:
簡單的解決辦法是隻需直接使用自動遞增值。叫我挑剔,但看起來很醜陋。
你預計你會有多少記錄? – sberry 2012-08-16 16:50:11
爲什麼你認爲使用自動遞增的值是醜陋的? – Briguy37 2012-08-16 16:52:52
@sberry這真的取決於,從一開始就不是很多。但我認爲值得注意的是,2個月後文件將被刪除。因此,一次只能有幾千人樂觀。 – SpaceFace 2012-08-16 16:54:18