關於QQ新推出的"照片回收站"功能,為什麼被用戶刪除了這麼久的照片還被留在資料庫里?

如題,看見以前的照片首先想到的就是這個問題

啊啊謝謝各位,我明白所謂刪除只是用一個欄位標記後,只是前台看不見,而資料庫不變這麼回事。

我的意思是,為什麼騰訊要把那些照片留著

假如某人qq相冊中傳過一些和前任的和諧照片,刪掉以後覺得萬事大吉了

結果這時候騰訊突然跳出來告訴你,「你刪的照片我們一直留著哦嘻嘻」

這麼一想總覺得有些不安呢…


原因大家都說了,刪除就是在資料庫的某一列上把0改成1而已。

這樣做的歷史原因是你要是真刪了萬一以後給你一個需求,要求恢復刪除數據(比如誤操作容錯)你就沒辦法了,於是大家一商量,反正存那成本也很低就存著唄,就像windows的回收站一樣,有恢復文件的功能。

這時候又有人說了,那我也想要和回收站一樣的清空回收站功能,取個名字叫「強力刪除」,這下要不要直接把數據物理刪除呢?有了之前的經驗,程序員想想覺得不能刪,因為指不定之後又提一個需求,要求「強力恢復」,於是怎麼辦呢,那就在資料庫上再加一個欄位吧表示這個文件是否已經被強力刪除吧。

這個過程可以重複數輪,於是存文件的數據表就有了很多很多表示這個文件是否被第一次、第二次、第三次……第n次刪除的欄位,而且最後這個文件也不會被真正的刪除。


之前跟別人討論資料庫怎麼弄的時候,有個人跳出來跟我說「我們搞互聯網的,刪除就是標記一下,從不刪除」。現在看來很靠譜嘛。


這事技術上稱為soft delete,但技術原因並不那麼重要,我認為更重要的是對於用戶隱私保護的承諾。

每個公民都應該有保護隱私的權力,作為服務提供商,你得提供一種讓用戶能徹底刪除自己的數據的方式,以保護自己的隱私。比如如果產品有用戶可見的回收站機制,那應當提供清空回收站的功能,並且在用戶執行清空回收站操作之後的n天之內必須徹底刪除該數據。如果沒有用戶可見的回收站機制,則應當在用戶刪除操作之後的n天之內徹底刪除數據。

這些都得在隱私聲明裡寫明,是有法律效應的,這在很多國家是必需的。具體到我們研發部門在做產品設計的時候,這些承諾就必須被放在考慮當中,有時候甚至會影響一個產品的架構設計(比如某種技術設計不能滿足30天內徹底刪除的需求,就會被否決掉)。

參考下我軟的隱私聲明,https://privacy.microsoft.com/zh-cn/privacystatement。以下是引用:

我們對個人數據的保留

只要出於提供產品和完成您所請求的事務或其他重要目的(如遵守法律義務、解決糾紛和履行協議),Microsoft 將根據需要保留個人數據。 例如:對於 Bing 搜索查詢,我們通過在 6 個月後移除整個 IP 地址,以及在 18 個月後移除 cookie ID 和其他交叉會話標識符,來分離識別存儲的搜索查詢。 在 http://Outlook.com 上,當您刪除項目文件夾被清空後,這些清空內容在被徹底刪除前,將在我們的系統中至多保留 30 天。 在您從您的帳戶刪除某張信用卡後,只要出於完成任何現有交易、遵守 Microsoft 的法律和報告要求以及檢測和預防詐騙的合理目的,Microsoft 可以根據需要保留包含您的信用卡號的交易記錄。


任何數據一旦通過互聯網流通過,就不要再指望可以輕易刪除。


我他么又看到了以前秀恩愛的照片,心痛


你在網上所有的操作,可以參見知乎右側的「查看問題日誌」。

你的每個回答的每個版本都會在伺服器有留存,只是沒有開放介面讓你查看罷了。


做過開發的都知道啊

前端修改,後端只是加欄位啊

尤其是QQ這樣的產品,因為經常需要別人找密碼什麼的,所以所有的改密,都是欄位替換(猜的),所以你才那麼容易申訴成功

當然,我覺得吧,QQ剛出來的時候,可能也沒想這麼遠,那個時候可能是直接在資料庫中替換的

另外,伺服器也是有日誌的

ps.上學時學信息管理,畢業後沒有做過開發……但我上學時寫程序,我都有不抹掉資料庫中的欄位,可能只有我才有這種怪癖吧。


回答一下吧,我們公司是做互聯網數據加密的小公司,入職培訓的時候雲加密這邊的老大簡單給我們講了雲盤的原理,講了百度雲的秒傳和刪除什麼的。秒傳就是你上傳東西的時候對你的數據做hash,然後和盤裡的現有數據進行匹配,發現別人之前傳了一個和你一樣的數據,你就不用傳了,直接把那個人的數據給你一個訪問許可權,就相當於秒傳了。你說你要刪除,那哪兒行,你的8s教育片別人也得看啊,所以刪除的不是文件,是你對於這個文件的訪問許可權。雲盤刪除文件,還是比較麻煩的,畢竟你刪了,上個節點怎麼處理。所以,就算硬碟內存不夠了,花點錢買一個就是了,千萬別把你的個人教育片上傳。傳上去還想刪除,和管理員商量了沒?!


資料庫里刪除一條數據要連帶刪除好多相關數據的 不如直接把isDeleted選項改成true來的方便 反正購買伺服器不歸我管


資料庫刪除,都是打個標記,業內稱之為「邏輯刪除」


舉個栗子,下面是資料庫表結構(這是個簡單的栗子,並不真實)

-----------------------------------------------資料庫 user_photo表--------------------------------------------------

user_id path is_delete delete_time
1 Upload/2016/08/12/我是圖片.png 0 0
2 Upload/2016/08/12/我是圖片2.png 1 1470996198

注釋:is_delete 0:未刪除 1:已刪除

-------------------------------------------------------------------------------------------------------------------------------

從程序上來說,你上傳的照片源文件都存在QQ的伺服器上,這個伺服器你就把他當做你的電腦。另外,還有一個叫做資料庫的東西,在你上傳照片的時候,會分成兩步,第一,上傳你的照片源文件到伺服器,第二,程序會在資料庫的表中存儲你上傳的照片路徑,比如在user_photo表的path欄位中存儲路徑Upload/2016/08/12/我是圖片.png 。這個路徑就相當於你在自己的電腦上D盤photo文件夾下存了張照片,這個照片的路徑就是D:photo我是圖片.png。

進入正題

當你刪除了一張照片時,只是把資料庫is_delete欄位的值從0 update 成1而已,並沒有把 path路徑下的照片源文件給刪掉。

一般程序從資料庫讀取用戶信息的時候,會附帶上很多條件,如果要看用戶已刪除的照片,條件就是is_delete = 1,這表示讀取用戶已刪除照片的記錄,然後再從path欄位中拿到路徑,在路徑前再加上域名就可以訪問到圖片了,如

http://www.abc.com/Upload/2016/08/12/我是圖片2.png。

這樣設計的好處就是防止誤刪、以防以後還會用到或者其它用戶登陸你的號,把你信息給刪了,就找不回來了。。。等等等。這樣做對用戶直觀感受來說,用戶看到照片已經刪除了,而且照片也不再顯示了,這也就達到了一般用戶刪除照片的目的。如果不開發出『查看已刪除的照片』這樣的功能,用戶是永遠看不到已刪除的照片的,所以不用擔心已刪除的照片會突然給自己或其他人一個驚喜。這麼設計好處多多,當然也存在其它問題。存在伺服器上的文件是需要佔用空間的,如果一直不刪的話,就一直占著空間。上傳的文件日積月累越來越多,伺服器的存儲空間就會減少。不過相對於用戶信息的重要性來說,這部分成本還是值得的。


有幸被大神邀請去南大聽過一次Richard Stallman的演講,時至今日該忘的都忘得差不多了,除了Free Means Freedom, not Free of Charge這種提綱挈領的話之外,就記著他說:

你們這群年輕人啊,就喜歡發個社交網路,不要想著把我的照片傳上去搞個大新聞。

他老人家倒沒說如果報道出了偏差要負責,而是說,這些社交網路會Track你。

@雲天明


騰訊費了那麼大的力才騙你把照片上傳上去,怎麼可能允許你說刪就刪的。

大數據時代,這都是錢呀。


作為程序員而言,一般是既不願意,也不敢用delete.且不說有恢復(回滾操作)的需求。就是萬一程序bug了,觸發了刪除功能怎麼辦


其實這個照片回收站很久以前就有了,之前一直都是在QQ空間,這次只不過是在QQ手機版添加了一個入口而已。這個照片回收站里的照片是有時間限制的


記得之前做一個網站,我們給客戶設定的是徹底刪除,然後他們有員工離職時惡意刪除,資料庫就恢復不了了。

從那之後,我們給客戶的刪除都是「假刪」,也就是改個欄位而已。所以啊,你們看到的刪除其實就是跟隱藏差不多。

這個是我的回收站,下面的刪除按鈕估計也就是改一個序列而已。話說看到之前的幾張照片,還是有點瞎。


溫馨提示:

請注意在使用該功能之前刪除的相冊是無法恢復的。舉例說明:若是在2010年6月2號正式啟用的該功能,那麼在2010年6月2號之前刪除的相冊是不會顯示在回收站內的,也無法恢復6月2日前刪除的相冊。


互聯網時代,你的任何行為,都被記錄。

你一旦create,就會永久的存在。

每個人都有可能在某一天,被人扒光了晾在太陽下。


為什麼我看到這個事件的另外一面,是騰訊數據維護確實成本在不斷增大呢?

早在兩年前,我就在PC版的QQ空間里,看到了回收站這一功能(這個功能當時確實挺隱蔽的),回收站里有日誌、相冊、照片等,但是當時並沒有時間限制,也並沒有要求在某一時間就會刪除,而且我曾經也確實看到過回收站里的照片,確實讓我大吃一驚,趕緊刪了些。

而這幾天看到手機版的時候,這個功能一進去,我就注意到這行字,都出手機版了?!(畢竟移動端使用人數擺在那了,很少有人在用電腦版的QQ空間了吧?)哎喲?是不是遇到過早的數據維護成本的情況了?尤其是圖片!(這些圖最早的有08年奧運會時發的截圖,確實時間久遠)

所以,也為了友善的提示用戶,也為了降低數據維護成本,我覺得下面這個圖,也有可能是從騰訊內部開始傳出來的。


既然「上傳」給別人了,就不聽你使喚了。

涉密不上網,上網不涉密呀。


推薦閱讀:

谷歌的產品是不是過譽了?
如何將你的產品從用戶1做到100萬?
應屆生想做產品該怎麼走?
to B 的產品經理和 to C 的產品經理有什麼差別?
後台產品經理與前端產品經理?

TAG:互聯網 | 騰訊 | 資料庫 | 產品 | QQ空間 |