我知道這已經討論過很多次了,我希望能爲我的具體案例得到一個建議。使用長字符串作爲唯一表ID(或不)?
我在一個社交網站上工作,理論上應該可以將數十億張照片記錄在mysql數據庫中。
我想知道是否是一個好主意,用像'oij43oj54oi52j43i'這樣的字符串ID替換記錄的唯一BIGINT ID。
的優勢將是:
我可以插入照片記錄到散佈在不同與BIGINT ID,你需要等待,在插入時從MySQL獲得下一行號的多臺服務器的多個數據庫。
如果用戶輸入像/avatars/120.jpg這樣的整數,它將不太可能讓用戶隨機訪問圖像,如果它是/avatars/oij43oj54oi52j43i.jpg。我知道這第二部分也可以通過URL重寫來完成,但會使用一些CPU /內存。
的其它表,如 「photo_comments」 也可以指的是照片,e.g photo_comment_photo_id = 'oij43oj54oi52j43i' 時使用相同的字符串ID;
記住這些,使用字符串ID是不是一個好主意?特別是對於我提到的第一個優點,是否是一個有效的點/優勢/實踐?
謝謝。
編輯:確保字符串是唯一的可以通過將用戶ID附加到字符串來完成,也可以使用使用時間戳微秒的php uniqid()。
你打算如何確保oij43oj54oi52j43i是一個獨特的價值?自動增量值的設計是有原因的。不要試圖模仿已經完美運行的東西,並堅持使用自動增量。 – Jocelyn 2012-07-30 16:26:34
你考慮過guid嗎?請參閱http://stackoverflow.com/questions/547118/storing-mysql-guid-uuids和http://stackoverflow.com/questions/8180019/what-is-the-replacement-for-uniqueidentifier-in-mysql – hatchet 2012-07-30 16:27:16
@ Jocelyn的獨特性可以通過將照片用戶ID附加到php uniqid()來實現,我編輯的問題包括這個。對於用戶25,照片ID可能看起來像25oij43oj54oi52j43i – adrianTNT 2012-07-30 16:36:55