Directory
內容傳遞網路的遠端 I/O 成本
據我所知,由於 I/O 成本,掃描目錄的時間複雜度和所述目錄中的文件數量是相關的。將文件放在散列目錄樹中以通過 CDN API 上傳/下載文件的管理成本是否值得為提高效率而付出?
例如,給定一個文件名
foo.mp3
,它的MD5
雜湊是10ebb1120767e9de166e0f5905077cb1
. 因此,儲存foo.mp3
在./10/eb/foo.mp3
每個目錄中將允許更少的文件(假設 MD5 在 Base36 中生成模式,這允許36^2
根目錄36^2
每個子目錄和雜湊衝突的可能性很小)考慮到目錄本身沒有載入,直接上傳/下載目錄掃描的I/O成本是否仍然存在?
從理論上講,這種技術會大大降低頻寬成本,但也會增加 CPU 成本。我建議你看看Rsync,看看這個工具是如何在不使用雜湊目錄的情況下解決這個問題的。同樣給定特定的數據模式,可能會發生雜湊衝突,其中兩個文件具有完全相同的 MD5 雜湊。如果特定文件的新舊版本具有相同的 MD5 雜湊值,這只會成為問題。這種情況很少見,但確實會發生。