想象一下,你必須問世界上每個人有關他們從1到10的規模的幸福。每個人都回應。有多達80億人,所以你必須使用bigint作爲關鍵字(讓我們假設我們已經擁有另一個數據庫中的身份,而且我們只需要密鑰),而且你實際上擁有近80億條獨特的記錄。然後,對於每個記錄,您必須存儲從1到10的值 - 在大多數將映射到字節數據類型的DB中(這只是一個假設,我們也可以從0到255的等級來衡量幸福)。如何壓縮所有世界人口簡單民意測驗
80億人*(8字節鍵+ 1個字節值)= 64個千兆鍵值+ 8千兆值= 72 GB的總大小。
是否有可能大大減少存儲大小爲相同的任務中任何主流數據庫,例如SQL Server或MySql?
我不打算做這樣的調查,也沒有那麼多的用戶,大關鍵是其他幾個int鍵的笛卡爾積的結果,從長遠來看,我可以用簡單的數十億條記錄每個小ID的組合的數值。
如果你只是想保存結果,你可以根據他們的選擇來計算人數。那麼你將有一個10行的表。 – TheHippo 2013-05-05 19:54:13
@TheHippo我需要保存每個密鑰。否則,這將是微不足道的 – 2013-05-05 19:55:26
就信息理論而言,並假設密鑰不包含無法從記錄序列中的位置派生的信息(因爲它通常是整數主鍵的情況),此數據包含8 * 10^9 * log_2 10位信息。根據谷歌,這是26575424759.1,這是一個小於3.1 GiB。所以你的編碼是非常低效的。我還假設沒有什麼關於壓縮程序可以利用的數據來使它更小 - 沒有模式,均勻分佈等。 – delnan 2013-05-05 20:20:43