第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

要做還是不做:將圖像存儲在數(shù)據(jù)庫中

要做還是不做:將圖像存儲在數(shù)據(jù)庫中

12345678_0001 2019-10-12 11:07:57
要做還是不做:將圖像存儲在數(shù)據(jù)庫中在Web應(yīng)用程序的上下文中,我的老板總是說要在數(shù)據(jù)庫中引用圖像,而不是圖像本身。我傾向于同意在DB中存儲url與映像本身是一個好主意,但在我現(xiàn)在工作的地方,我們在數(shù)據(jù)庫中存儲了很多圖像。我能想到的唯一原因也許是它更安全?你不想有人和網(wǎng)址有直接聯(lián)系?但是,如果是這樣的話,您總是可以讓網(wǎng)站/服務(wù)器處理圖像,就像ASP.NET中的處理程序一樣,這樣用戶就需要進(jìn)行身份驗證才能查看圖像。我還認(rèn)為從數(shù)據(jù)庫中提取圖像會影響性能。為什么將圖像存儲在數(shù)據(jù)庫中可能是一個好/不太好的主意,還有其他原因嗎?
查看完整描述

3 回答

?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊

如果你偶爾需要檢索圖像,它必須在幾個不同的Web服務(wù)器上可用。但我想差不多就是這樣了。

  • 如果它不必在多個服務(wù)器上可用,最好將它們放在文件系統(tǒng)中。
  • 如果它必須在多個服務(wù)器上可用,而且系統(tǒng)中實際上有某種負(fù)載,那么您將需要某種分布式存儲。

我們在這里討論的是一個邊緣案例,您可以通過利用數(shù)據(jù)庫來避免給系統(tǒng)增加額外的復(fù)雜性。

除此之外,別這么做。



查看完整回答
反對 回復(fù) 2019-10-13
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊

在數(shù)據(jù)庫中放置圖像的優(yōu)點。

  1. 交易。當(dāng)您保存BLOB時,您可以像任何其他DB數(shù)據(jù)一樣提交它。這意味著您可以將BLOB與任何關(guān)聯(lián)元數(shù)據(jù)一起提交,并確保兩者是同步的。如果磁盤空間用完了呢?不承諾。文件沒有完全上傳?不承諾。愚蠢的應(yīng)用錯誤?不承諾。如果保持映像及其相關(guān)的元數(shù)據(jù)相互一致對您的應(yīng)用程序很重要,那么DB可以提供的事務(wù)可能是一件好事。

  2. 一個要管理的系統(tǒng)。需要備份元數(shù)據(jù)和BLOB嗎?備份數(shù)據(jù)庫。需要復(fù)制嗎?復(fù)制數(shù)據(jù)庫。需要從部分系統(tǒng)故障中恢復(fù)嗎?重新加載DB并向前滾動日志。DBS給一般數(shù)據(jù)帶來的所有優(yōu)點(卷映射、存儲控制、備份、復(fù)制、恢復(fù)等)適用于你的斑點。更一致,更容易管理。

  3. 保安。數(shù)據(jù)庫具有非常細(xì)粒度的安全特性,可以利用這些特性。模式、用戶角色,甚至是諸如“只讀視圖”之類的東西,以提供對數(shù)據(jù)子集的安全訪問。所有這些特性都適用于包含氣泡的表。

  4. 集中管理與#2相關(guān),但基本上DBA(似乎沒有足夠的能力)可以管理一件事情:數(shù)據(jù)庫?,F(xiàn)代數(shù)據(jù)庫(特別是大型數(shù)據(jù)庫)可以很好地工作,可以跨幾臺機(jī)器安裝大型數(shù)據(jù)庫。單一的管理來源簡化了程序,簡化了知識轉(zhuǎn)移。

  5. 大多數(shù)現(xiàn)代數(shù)據(jù)庫都處理得很好。有了數(shù)據(jù)層中BLOB的一級支持,就可以輕松地將BLOB從DB流到客戶端。雖然有些操作可以同時“吸”整個BLOB,但如果您不需要該工具,那么就不要使用它。研究DB的SQL接口并利用它的特性。沒有理由把它們當(dāng)作“大字符串”,它們被一刀切地處理,然后把你的氣泡變成大的、記憶的、吞食的、高速緩存的炸彈。

  6. 就像您可以為圖像設(shè)置專用文件服務(wù)器一樣,您也可以在數(shù)據(jù)庫中設(shè)置專用的BLOB服務(wù)器。為它們提供專用磁盤卷、專用模式、專用緩存等。DB中的所有數(shù)據(jù)都不是相同的,行為也不一樣,沒有理由對其進(jìn)行完全相同的配置。良好的數(shù)據(jù)庫具有良好的控制水平。

從DB提供BLOB的主要NIT是確保HTTP層實際利用所有HTTP協(xié)議來執(zhí)行服務(wù)。

許多簡單的實現(xiàn)只是抓取BLOB,然后將它們從套接字中大量丟棄。但是HTTP有幾個非常適合流圖像的重要特性,特別是緩存頭、eTags和塊傳輸,以允許客戶端請求BLOB的“片段”。

確保您的HTTP服務(wù)正確地響應(yīng)了所有這些請求,并且您的DB可以是一個非常好的Web公民。通過將文件緩存到由HTTP服務(wù)器提供服務(wù)的文件系統(tǒng)中,您可以“免費”獲得其中的一些優(yōu)點(因為一個好的服務(wù)器無論如何都會對“靜態(tài)”資源這樣做),但是要確保如果這樣做,就必須遵守修改日期等圖像的要求。

例如,有人請求Spaceeshuttle.jpg,這是2009年1月1日創(chuàng)建的圖像。最終緩存在請求日期的文件系統(tǒng)上,比如2009年2月1日。稍后,圖像將從緩存(FIFO策略或其他什么)中清除,稍后,有人在2009年3月1日再次請求它?,F(xiàn)在它有了2009年3月1日的“創(chuàng)建日期”,盡管它的創(chuàng)建日期實際上是1月1日。所以,您可以看到,特別是如果您的緩存發(fā)生了很大的變化,使用if修改的頭的客戶端可能會獲得比他們實際需要的更多的數(shù)據(jù),因為服務(wù)器認(rèn)為資源已經(jīng)改變了,而實際上它沒有改變。

如果將緩存創(chuàng)建日期與實際創(chuàng)建日期保持同步,這可能會減少問題。

但關(guān)鍵是,要想成為一個“優(yōu)秀的網(wǎng)絡(luò)公民”,并為你和你的客戶節(jié)省一些帶寬等,就必須仔細(xì)考慮整個問題。

我剛剛為一個為DB提供視頻的Java項目進(jìn)行了所有這些工作,這一切都很好。



查看完整回答
反對 回復(fù) 2019-10-13
  • 3 回答
  • 0 關(guān)注
  • 425 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號