增加表空間大小,表空間文件可以用多個(gè)
創(chuàng)新互聯(lián)于2013年開始,先為衛(wèi)輝等服務(wù)建站,衛(wèi)輝等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為衛(wèi)輝企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
ALTER TABLESPACE USER_FOUND_DATA ADD DATAFILE 'D:\data\USER_FOUND_DATA_01.DBF' SIZE 1g AUTOEXTEND ON NEXT 1g;
ALTER TABLESPACE USER_FOUND_DATA ADD DATAFILE 'D:\data\USER_FOUND_DATA_02.DBF' SIZE 1g AUTOEXTEND ON NEXT 1g..........
oracle
存儲(chǔ)過程的基本語法
1.基本結(jié)構(gòu)
CREATE
OR
REPLACE
PROCEDURE
存儲(chǔ)過程名字
(
參數(shù)1
IN
NUMBER,
參數(shù)2
IN
NUMBER
)
IS
變量1
INTEGER
:=0;
變量2
DATE;
BEGIN
END
存儲(chǔ)過程名字
2.SELECT
INTO
STATEMENT
將select查詢的結(jié)果存入到變量中,可以同時(shí)將多個(gè)列存儲(chǔ)多個(gè)變量中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT
col1,col2
into
變量1,變量2
FROM
typestruct
where
xxx;
EXCEPTION
WHEN
NO_DATA_FOUND
THEN
xxxx;
END;
...
3.IF
判斷
IF
V_TEST=1
THEN
BEGIN
do
something
END;
END
IF;
4.while
循環(huán)
WHILE
V_TEST=1
LOOP
BEGIN
XXXX
END;
END
LOOP;
5.變量賦值
V_TEST
:=
123;
6.用for
in
使用cursor
...
IS
CURSOR
cur
IS
SELECT
*
FROM
xxx;
BEGIN
FOR
cur_result
in
cur
LOOP
BEGIN
V_SUM
:=cur_result.列名1+cur_result.列名2
END;
END
LOOP;
END;
7.帶參數(shù)的cursor
CURSOR
C_USER(C_ID
NUMBER)
IS
SELECT
NAME
FROM
USER
WHERE
TYPEID=C_ID;
OPEN
C_USER(變量值);
LOOP
FETCH
C_USER
INTO
V_NAME;
EXIT
FETCH
C_USER%NOTFOUND;
do
something
END
LOOP;
CLOSE
C_USER;
8.用pl/sql
developer
debug
連接數(shù)據(jù)庫后建立一個(gè)Test
WINDOW
在窗口輸入調(diào)用SP的代碼,F9開始debug,CTRL+N單步調(diào)試
這個(gè)問題可深可淺。
簡單的說就是用表存儲(chǔ)數(shù)據(jù)的。
往深里說,參考《關(guān)系數(shù)據(jù)庫理論及應(yīng)用》
如果必須存儲(chǔ)在數(shù)據(jù)庫,轉(zhuǎn)成clob,blob存。不過最好是搞個(gè)專門的文件存儲(chǔ)服務(wù)器存儲(chǔ),數(shù)據(jù)庫只存路徑位置就好。
商品圖片,用戶上傳的頭像,其他方面的圖片。目前業(yè)界存儲(chǔ)圖片有兩種做法:
1、 把圖片直接以二進(jìn)制形式存儲(chǔ)在數(shù)據(jù)庫中
一般數(shù)據(jù)庫提供一個(gè)二進(jìn)制字段來存儲(chǔ)二進(jìn)制數(shù)據(jù)。比如MySQL中有個(gè)blob字段。Oracle數(shù)據(jù)庫中是blob或bfile類型
2、 圖片存儲(chǔ)在磁盤上,數(shù)據(jù)庫字段中保存的是圖片的路徑。
一、圖片以二進(jìn)制形式直接存儲(chǔ)在數(shù)據(jù)庫中
第一種存儲(chǔ)實(shí)現(xiàn)(PHP語言):
大體思路:
1、將讀取到的圖片用php程序轉(zhuǎn)化成二進(jìn)制形式。再結(jié)合insert into 語句插入數(shù)據(jù)表中的blob類型字段中去。
3、 從數(shù)據(jù)庫取出圖片展示的時(shí)候。則是直接發(fā)送圖片內(nèi)容
4、
$row=mysql_fetch_object($result);
Header( "Content-type: image/gif");
echo $row-this_image;
實(shí)現(xiàn)代碼如下:
$PicturePath = ‘/tmp/xxxjgjgj.jpg’;//假設(shè)這是上傳的圖片,php放在一個(gè)臨時(shí)文件夾。腳本執(zhí)行完畢后自動(dòng)刪除了。
$imgStream = fread(fopen($PicturePath, "r");
$blob_img = fread(fopen($imgStream, "r"), filesize($PicturePath));
$sql =” INSERT INTO Images (this_image) VALUES ($blob_img)";
注:this_image就是數(shù)據(jù)表中一個(gè)blob字段類型的字段
================取出展示圖片代碼
$result=mysql_query("SELECT * FROM Images WHERE PicNum=$PicNum") or die("Cant perform Query");
$row=mysql_fetch_object($result);
Header( "Content-type: image/gif");
echo $row- this_image;
總結(jié):處理代碼感覺還真比較麻煩。其實(shí),我從來沒用過在數(shù)據(jù)庫中以二進(jìn)制存儲(chǔ)圖片的做法。我們用得更多的是存儲(chǔ)圖片的路徑,實(shí)際圖片是在磁盤上保存的(圖片二進(jìn)制放到數(shù)據(jù)庫,把數(shù)據(jù)庫的負(fù)擔(dān)弄重了)。
據(jù)我了解,互聯(lián)網(wǎng)環(huán)境中,大訪問量,數(shù)據(jù)庫速度和性能方面很重要。一般在數(shù)據(jù)庫存儲(chǔ)圖片的做法比較少,更多的是將圖片路徑存儲(chǔ)在數(shù)據(jù)庫中,展示圖片的時(shí)候只需要連接磁盤路徑把圖片載入進(jìn)來即可。因?yàn)閳D片是屬于大字段。一張圖片可能1m到幾m。
有個(gè)原則:圖片盡量不要存儲(chǔ)在數(shù)據(jù)庫中(是指不要二進(jìn)制形式保存到字段,而只保存圖片的路徑)。這樣的大字段數(shù)據(jù)會(huì)加重?cái)?shù)據(jù)庫的負(fù)擔(dān),拖慢數(shù)據(jù)庫。在大并發(fā)訪問的情況下很重要。這是一個(gè)經(jīng)驗(yàn)。去看看dba對數(shù)據(jù)庫性能調(diào)優(yōu)方面的分析都能得到這個(gè)答案的:就是圖片不要存儲(chǔ)在數(shù)據(jù)庫中。
就像這個(gè)規(guī)則一樣:文章分為標(biāo)題、作者、添加時(shí)間、更新時(shí)間、文章內(nèi)容、文章關(guān)鍵字
文章內(nèi)容一般是比較長的。經(jīng)常使用text字段去存儲(chǔ)。文章的內(nèi)容就屬于大字段。一般文章內(nèi)容可以拆分到單獨(dú)一個(gè)表中去。不要與文章信息存儲(chǔ)在一張表里面。
我理解的原理是:mysql中一張表的數(shù)據(jù)是全部在一個(gè)數(shù)據(jù)文件中的。如果大字段的數(shù)據(jù)也存儲(chǔ)在里面。程序展示列表,比如文章列表。這個(gè)時(shí)候根本不需要展示文章內(nèi)容的。但是仍然會(huì)影響速度,數(shù)據(jù)庫查找數(shù)據(jù)其實(shí)就是掃描那個(gè)數(shù)據(jù)文件,文件容量越小,速度就會(huì)越快(為什么單表的容量在1g-2g的時(shí)候基本上要分表了)。拆分出去到一張單獨(dú)的表,就是單獨(dú)的文件了。我覺得,舉一反三,相互獨(dú)立,分離的思想不僅在系統(tǒng)開發(fā)中用到,在現(xiàn)實(shí)生活中經(jīng)常存在的。相互混合,就會(huì)造成相互影響。小巧,簡潔是一種思想。
可以看看這篇翻譯的文章,
http//developer.51cto.com/art/201211/364472.htm
作者建議,三種東西永遠(yuǎn)不要放到數(shù)據(jù)庫里,圖片,文件,二進(jìn)制數(shù)據(jù)。作者的理由是,
對數(shù)據(jù)庫的讀/寫的速度永遠(yuǎn)都趕不上文件系統(tǒng)處理的速度
數(shù)據(jù)庫備份變的巨大,越來越耗時(shí)間
對文件的訪問需要穿越你的應(yīng)用層和數(shù)據(jù)庫層
把圖片縮略圖存到數(shù)據(jù)庫里?很好,那你就不能使用nginx或其它類型的輕量級(jí)服務(wù)器來處理它們了。
給自己行個(gè)方便吧,在數(shù)據(jù)庫里只簡單的存放一個(gè)磁盤上你的文件的相對路徑,或者使用S3(備注:亞馬遜云服務(wù))或CDN之類的服務(wù)。
============================================================
關(guān)于mysql中的blob類型
bolb像int型那樣,分為blob、MEDIUMBLOB、LONGBLOB。其實(shí)就是從小到大,
blob 容量為64KB ,MEDIUMBLOB 容量為16M,LONGBLOB 容量為4G。
說實(shí)話,圖片用這樣子存儲(chǔ)用得還真少。使用php函數(shù)serialize進(jìn)行序列化的值,我看到有人存入這個(gè)字段中去。
php手冊:serialize返回字符串,此字符串包含了表示 value 的字節(jié)流,可以存儲(chǔ)于任何地方。
mysql中blob字段存儲(chǔ)圖片有個(gè)通信大小的設(shè)置:
圖片要傳輸給mysql存儲(chǔ)起來,那么需要涉及到數(shù)據(jù)通信。mysql中有個(gè)配置是限制通信數(shù)據(jù)大小的。
my.conf配置文件中的max_allowed_packet,mysql默認(rèn)的值是1M。
好多圖片尤其是原始圖可能不止1m。傳輸?shù)臄?shù)據(jù)(也就是圖片)超過這個(gè)設(shè)置大小。結(jié)果就會(huì)出錯(cuò)
呵呵,限制挺多。感覺好麻煩。這樣子明顯占用與mysql交互的通信時(shí)間嘛。延長響應(yīng)時(shí)長了。我直接丟個(gè)圖片路徑”images/xxxx”給mysql。沒這么耗費(fèi)資源。
其實(shí)所謂的性能,最關(guān)鍵是數(shù)據(jù)庫性能。因?yàn)殡S著數(shù)據(jù)庫數(shù)據(jù)量增大,大部分時(shí)間耗費(fèi)是在php,Java等語言等待數(shù)據(jù)庫返回?cái)?shù)據(jù)的過程中耗費(fèi)時(shí)間。
網(wǎng)站訪問量大了后,具體的語言不是瓶頸,瓶頸都在數(shù)據(jù)庫。用c,,php,java,net都能操作mysql數(shù)據(jù)庫獲取數(shù)據(jù)。語言之間可能存在速度執(zhí)行差異,但是其實(shí)這種差別已經(jīng)很小了。至少我覺得,給予用戶感覺不到明顯。執(zhí)行相差0.0001秒用戶感覺并沒有明顯的區(qū)別。可能說,大并發(fā)(很多用戶同時(shí)訪問)的時(shí)候,就會(huì)體現(xiàn)到差別了。其實(shí)我覺得,大并發(fā)訪問是數(shù)據(jù)庫瓶頸。等待數(shù)據(jù)庫給予數(shù)據(jù)。沒達(dá)到一定級(jí)別實(shí)在體現(xiàn)不了差別。數(shù)據(jù)庫數(shù)據(jù)量達(dá)到一定級(jí)別。語言相差0.001s會(huì)給予用戶體驗(yàn)上的差別。我想,這也是為什么php很適合做web開發(fā)了。解析頁面速度快(解釋型語言,不需要編譯)??梢杂胘ava來與數(shù)據(jù)庫打交道獲取數(shù)據(jù)。php不直接操作數(shù)據(jù)庫,而是調(diào)用java提供的數(shù)據(jù)接口,獲取數(shù)據(jù),馬上展示在頁面中。這是利用了php的頁面執(zhí)行速度快的一個(gè)優(yōu)勢。
備份圖片數(shù)據(jù)和遷移數(shù)據(jù)方便
圖片以二進(jìn)制形式存儲(chǔ)在數(shù)據(jù)庫,有一個(gè)好處:備份的時(shí)候方便。直接備份數(shù)據(jù)庫,圖片也跟著備份。換句話說,遷移環(huán)境的時(shí)候是方便。
而圖片放在磁盤上的話,數(shù)據(jù)庫中存儲(chǔ)的只是圖片路徑。備份數(shù)據(jù)庫后。磁盤上的圖片也要跟著備份才行。
不過我覺得,備份這個(gè)好處不是很明顯。圖片在磁盤上,備份磁盤也沒很大的事情。打包壓縮也可以了?;ヂ?lián)網(wǎng)環(huán)境畢竟與傳統(tǒng)的軟件開發(fā)不同,web開發(fā)比較關(guān)注網(wǎng)站速度。也就是數(shù)據(jù)庫的速度。就像互聯(lián)網(wǎng)開發(fā)中,有時(shí)候?yàn)榱怂俣龋每臻g換時(shí)間的做法比較普遍,所以往往在設(shè)計(jì)數(shù)據(jù)庫的時(shí)候并不一定遵循傳統(tǒng)數(shù)據(jù)庫設(shè)計(jì)三大范式。
數(shù)據(jù)庫中保存的是圖片路徑的話,在web開發(fā)環(huán)境下,其實(shí)有個(gè)更好處,就是cdn加速。就是下面要進(jìn)行總結(jié)的地方。
二、數(shù)據(jù)庫中保存圖片路徑
一般是這樣子的:
按照年月日生成路徑。具體是按照年月日還是按照年月去生成路徑,根據(jù)自己需要(不一定是按照日期去生成)。
理解為什么要分散到多個(gè)文件夾中去才是關(guān)鍵,涉及到一個(gè)原理就明白了:
操作系統(tǒng)對單個(gè)目錄的文件數(shù)量是有限制的。當(dāng)文件數(shù)量很多的時(shí)候。從目錄中獲取文件的速度就會(huì)越來越慢。所以為了保持速度,才要按照固定規(guī)則去分散到多個(gè)目錄中去。
圖片分散到磁盤路徑中去。數(shù)據(jù)庫字段中保存的是類似于這樣子的”images/2012/09/25/ 1343287394783.jpg”
原來上傳的圖片文件名稱會(huì)重新命名保存,比如按照時(shí)間戳來生成,1343287394783. jpg。這樣子是為了避免文件名重復(fù),多個(gè)人往同一個(gè)目錄上傳圖片的時(shí)候會(huì)出現(xiàn)。
反正用什么樣的規(guī)則命名圖片,只要做到圖片名稱的唯一性即可。
比如網(wǎng)站的并發(fā)訪問量大,目錄的生成分得月細(xì)越好。比如精確到小時(shí),一個(gè)小時(shí)都可以是一個(gè)文件夾。同時(shí)0.001秒有兩個(gè)用戶同時(shí)在上傳圖片(因?yàn)槟敲淳蜁?huì)往同一個(gè)小時(shí)文件夾里面存圖片)。因?yàn)闀r(shí)間戳是精確到秒的。為了做到圖片名稱唯一性而不至于覆蓋,生成可以在在時(shí)間戳后面繼續(xù)加毫秒微秒等??偨Y(jié)的規(guī)律是,并發(fā)訪問量越大。就越精確就好了。
我現(xiàn)在還沒碰到需要這么精細(xì)的。概率比較少。
有個(gè)方面總結(jié)一下:為什么保存的磁盤路徑,是”images/2012/09/25/1343287394783.jpg”,而不是” /images/2012/09/25/ 1343287394783.jpg”(最前面帶有斜杠)
我的理解:
連那個(gè)斜杠都不要。這里也是做到方便以后系統(tǒng)擴(kuò)展。
在頁面中需要取出圖片路徑展示圖片的時(shí)候,如果是相對路徑,則可以使用”./”+”images/2012/09/25/1343287394783.jpg”進(jìn)行組裝。
如果需要單獨(dú)的域名(比如做cdn加速的時(shí)候)域名,img1.xxx.com,img2.xxx.com這樣的域名,
直接組裝 “http//img1.xxx.com/”+”images/2012/09/25/1343287394783.jpg”
當(dāng)然數(shù)據(jù)庫是可以在前面加斜杠/保存起來,/images/2012/09/25/ 1343287394783.jpg
其實(shí)不方便統(tǒng)一。比如相對路徑載入圖片的時(shí)候,則是”.”+” /images/2012/09/25/ 1343287394783.jpg”
可能我還沒體會(huì)到壞處,以后會(huì)遇到問題的。不過,遵循慣例不加斜杠” images/2012/09/25/ 1343287394783.jpg”就對了。
涉及到一個(gè)新問題:為什么大部分系統(tǒng)都不會(huì)域名保存進(jìn)去,像這樣子http//wwwxxx.com/images/2012/09/25/1343287394783.jpg保存到數(shù)據(jù)庫中
曾經(jīng)與一個(gè)上海的網(wǎng)友聊天,他也是習(xí)慣不會(huì)把域名保存數(shù)據(jù)庫中過去。但當(dāng)時(shí)我們兩聊的時(shí)候,他對”域名保存進(jìn)去的做法”與”不保存域名進(jìn)去”也沒有一個(gè)明確利弊。他就覺得,沒有什么明顯的區(qū)別啊。
了解的知識(shí)越多,越有利于我們做決定。可能就是一個(gè)”感覺區(qū)別不是很大”的影響下,去做一個(gè)決定,反而對后面是比較大的影響的。至少是增加自己的工作量了。
其實(shí)把域名保存進(jìn)去,也不是什么滔天大罪的事情。但凡是經(jīng)驗(yàn)豐富的開發(fā)人員都不會(huì)這樣子做。這是一個(gè)經(jīng)驗(yàn)積累出來的,所以上海那個(gè)網(wǎng)友也對此并沒有明顯的概念很正常,他說他不知道cdn方面的(當(dāng)然覺得存?zhèn)€域名進(jìn)去沒什么大不了的)。需要了解cdn知識(shí),什么情況下會(huì)用到cdn知識(shí)。
雖然是做開發(fā)人員,不需要關(guān)注運(yùn)維和服務(wù)器之類的知識(shí)。不過了解一些就有利于理解了。
這里涉及到cdn加速。
關(guān)于cdn原理(就是內(nèi)容分發(fā)網(wǎng)絡(luò))
cdn,我理解其本質(zhì)就是為了解決距離遠(yuǎn)產(chǎn)生的速度問題,使用就近的服務(wù)。
從中國請求美國一臺(tái)服務(wù)器上的圖片。一般比較慢,因?yàn)榫嚯x這么遠(yuǎn),網(wǎng)絡(luò)傳輸是存在損耗的,距離越遠(yuǎn),傳輸?shù)臅r(shí)間就越長。一般會(huì)看到瀏覽器左下角顯示:“已響應(yīng),正在傳輸數(shù)據(jù)..”。這不是服務(wù)器本身問題了。實(shí)際上服務(wù)器早就響應(yīng)請求,把數(shù)據(jù)發(fā)給客戶端,但是網(wǎng)絡(luò)問題,就一直在傳輸,沒傳完了。
在中國,是南北距離遠(yuǎn)的問題。南北還會(huì)涉及到跨網(wǎng),南方用戶使用電信居多,北方用戶網(wǎng)通居多。兩個(gè)線路需要跨越,會(huì)有時(shí)間延遲。北京到廣州的距離,如果直接請求
cdn加速就是適應(yīng)這個(gè)需求產(chǎn)生的:現(xiàn)在不請求美國的服務(wù)器。直接在中國安放節(jié)點(diǎn)(節(jié)點(diǎn)是比較籠統(tǒng)的詞語,可以理解成一臺(tái)服務(wù)器,也可以理解成一個(gè)機(jī)房,就是一個(gè)點(diǎn)嘛),請求距離近的節(jié)點(diǎn)。這樣子就不需要那么遠(yuǎn)的距離了。
記得以前在長沙的網(wǎng)站,團(tuán)購以城市分站的形式。北京和長沙用的是同一套程序。服務(wù)器在長沙。北京用戶訪問北京站的時(shí)候,實(shí)際上需要遠(yuǎn)距離訪問長沙的服務(wù)器。速度怎么都快不起來。跟服務(wù)器性能完全沒關(guān)系。當(dāng)時(shí)不懂這些。不清楚怎么折騰??茨潜尽肚岸藘?yōu)化技巧》,想辦法去做js代碼壓縮,瀏覽器緩存之類的。實(shí)際上瞎折騰。不是說這些前端優(yōu)化不重要,哲學(xué)上有主次矛盾之分,瓶頸在哪里就去突破哪里。沒解決主要矛盾,問題并不會(huì)迎刃而解。當(dāng)時(shí)也不是數(shù)據(jù)庫瓶頸。如果去優(yōu)化數(shù)據(jù)庫。也不會(huì)明顯改善。就那點(diǎn)數(shù)據(jù)量。根本就達(dá)不到瓶頸。哪里談得上主要矛盾。隨著后來去其他公司工作,接觸一些東西,類似不找瓶頸的優(yōu)化例子發(fā)生在身邊好幾次了,先沒找到瓶頸就瞎去優(yōu)化。我的同事可能是抱著多多益善的心態(tài)去做的,但主要矛盾(技術(shù)上說是瓶頸)沒找到,也沒改善。
當(dāng)時(shí)如果沒想到是距離問題。也就不會(huì)想到cdn,當(dāng)時(shí)其實(shí)我根本不知道cdn服務(wù)。我只知道,google這些網(wǎng)站肯定在中國部署的服務(wù)器,要不然,中國用戶還去訪問美國的服務(wù)器,那再好的服務(wù)器都會(huì)速度慢的。
由于自己搭建cdn環(huán)境和機(jī)房的資金比較大(需要大量的服務(wù)器),也需要人力維護(hù)。反正一般的公司弄不起,其實(shí)根本不劃算。淘寶以前用商用的cdn服務(wù),后來商用的扛不住了,就搭建了自己的cdn網(wǎng)。我不知道新浪有沒有自己搭建,但其實(shí)我覺得跟淘寶的特點(diǎn)有關(guān),店鋪很多,無論是商品還是交易記錄總計(jì)起來商品很多的圖片,圖片都是靜態(tài)的部分,cdn本來就是用來做靜態(tài)的(圖片,css,js等)請求分發(fā)用的。
我之前在網(wǎng)上看到一句話,cdn網(wǎng)絡(luò)不是一般的公司玩得起的。
一般的公司自己搭建cdn網(wǎng)絡(luò)成本高,所以就有商業(yè)的cdn提供付費(fèi)租用服務(wù),這是一項(xiàng)很成熟的業(yè)務(wù),很多這樣的公司,大部分全國性的互聯(lián)網(wǎng)公司都會(huì)使用到cdn。
總結(jié):cdn服務(wù)。對于靜態(tài)內(nèi)容是非常適合的。所以像商品圖片,隨著訪問量大了后,租用cdn服務(wù),只需要把圖片上傳到他們的服務(wù)器上去。
例子:北京訪問長沙服務(wù)器,距離太遠(yuǎn)。我完全可以把商品圖片,放到北京的云服務(wù)(我覺得現(xiàn)在提供給網(wǎng)站使用的云存儲(chǔ)其實(shí)就是cdn,給網(wǎng)站提供分流和就近訪問)上去。這樣子北京用戶訪問的時(shí)候,實(shí)際上圖片就是就近獲取。不需要很長距離的傳輸。
自己用一個(gè)域名img.xxxcom來載入圖片。這個(gè)域名解析到北京的云服務(wù)上去。
做法:數(shù)據(jù)庫中保存的是” images/2012/09/25/1343287394783.jpg”,
這些圖片實(shí)際上不存儲(chǔ)在web服務(wù)器上。上傳到北京的cdn服務(wù)器上去。
我從數(shù)據(jù)庫取出來,直接”img.xxxcom/”+” images/2012/09/25/1343287394783.jpg”
比如如果還有多個(gè),就命名img1.xxcom、img2.xxcom
反正可以隨便。所以如果把域名直接保存進(jìn)去。就顯得很麻煩了。遷移麻煩。
像淘寶,凡客,亞馬遜這些電子商務(wù)網(wǎng)站,我們看到請求的時(shí)候,下面往往會(huì)有
img1.xxx.cdncom
img2.xxx.cdncom
其實(shí)他們保存在數(shù)據(jù)庫中的是相對路徑。有些是不需要在數(shù)據(jù)庫保存的,縮略圖可以實(shí)時(shí)訪問的時(shí)候用程序生成(節(jié)省很多存儲(chǔ)空間)
實(shí)際上,把域名保存在數(shù)據(jù)庫中,非常不利于系統(tǒng)遷移。一旦換個(gè)域名的話,原來保存在數(shù)據(jù)庫中的是“wwwabc.om/images/xxxxxx“,因?yàn)槁窂蕉荚跀?shù)據(jù)庫中寫死了。下回?fù)Q個(gè)域名就用不了了。那個(gè)時(shí)候自己去寫sql語句批量更新字段吧。
幾個(gè)術(shù)語:
icp,Internet Content Provider,也就是網(wǎng)絡(luò)內(nèi)容提供者。聯(lián)想到我們運(yùn)營一個(gè)網(wǎng)站需要icp備案了嗎?你自己運(yùn)營網(wǎng)站,你就是icp服務(wù)商
IDC(Internet Data Center),互聯(lián)網(wǎng)數(shù)據(jù)中心。IDC的概念,目前還沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。通俗點(diǎn),就是提供機(jī)房托管(服務(wù)器租用和托管),域名注冊之類的。
關(guān)于淘寶的圖片存儲(chǔ)
了解到:淘寶以前使用了商用的存儲(chǔ)。但是沒法滿足需求。據(jù)說,到2010年,淘寶網(wǎng)后端保存著286億張圖片。商用的系統(tǒng)系統(tǒng)沒法滿足需求的時(shí)候。他們就自己開發(fā)了一個(gè)tfs。大規(guī)模的小文件在磁盤上讀取,需要磁盤磁頭頻繁的尋道和換道。大并發(fā)情況下和大量的操作確實(shí)很麻煩。其實(shí)借鑒了當(dāng)時(shí)google公布的gfs設(shè)計(jì)論文。google有相冊服務(wù)。為每個(gè)用戶提供上傳圖片存儲(chǔ)。
估計(jì),google是率先實(shí)現(xiàn)這種小文件網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)的。
有個(gè)觀點(diǎn)比較好:對于老板們而言,往往覺得,用錢能解決的都不算問題。但問題在于,你遇到的問題,別人都沒遇到過。那這個(gè)時(shí)候你就沒有經(jīng)驗(yàn)可以參考或者直接拿來使用。只有自己參考一些思路去創(chuàng)造技術(shù)了。
三、關(guān)于圖片進(jìn)行云存儲(chǔ)(cdn加速)
曾經(jīng)看過這個(gè),這個(gè)是比較適合創(chuàng)業(yè)公司的。價(jià)格相對便宜
https//wwwupyun.com/
介紹提到,我們在全國各地部署了55個(gè)CDN節(jié)點(diǎn),500多臺(tái)服務(wù)器,電信,聯(lián)通,移動(dòng)和教育網(wǎng)的4線帶寬。
其實(shí),現(xiàn)在的云存儲(chǔ)本質(zhì)就是一個(gè)cdn服務(wù)商。你把靜態(tài)的圖片上傳到他提供的服務(wù)器上去(ftp方式上傳或者api形式編寫程序上傳)。他為你做就近節(jié)點(diǎn)訪問。
計(jì)費(fèi)方式:按照流量付費(fèi),99元購買100g。怎么算流量。每次訪問文件的大小累加,比如一個(gè)1m的文件,訪問一次流量就加1m。
我個(gè)人理解,對于圖片的量不大的情況下,使用這種云服務(wù),好處不是節(jié)省存儲(chǔ)空間。你自己的服務(wù)器100g的空間可能創(chuàng)業(yè)型公司都沒用完,不是什么存儲(chǔ)空間不夠用,然后去用云存儲(chǔ)。以前我對cdn比較模糊,有這么點(diǎn)理解,或者以為是分散網(wǎng)站web服務(wù)器流壓力,服務(wù)器分流。這些好處是有的。但是,只要理解了cdn產(chǎn)生的背景和解決的關(guān)鍵問題后,就會(huì)明白云存儲(chǔ)關(guān)鍵好處在于:給用戶就近節(jié)點(diǎn)訪問,加速。
我覺得,如果不是出于這個(gè)考慮,或者達(dá)不到這樣的目的。用其他方案也完全可以替代。何必使用云存儲(chǔ)呢?就是你無非有實(shí)力做到全國多個(gè)節(jié)點(diǎn)去部署服務(wù),才需要租用cdn來幫你,畢竟他們是規(guī)模產(chǎn)生的效益,專注于解決這個(gè)領(lǐng)域。
段在于表空間中
段由區(qū)的集合組成
區(qū)是數(shù)據(jù)塊的集合
數(shù)據(jù)塊映射到磁盤塊(os塊)中
區(qū)是oracle為段分配空間的最小單位
數(shù)據(jù)塊是oracle
I/O的最小單位
一個(gè)數(shù)據(jù)塊是否可以存儲(chǔ)一張表,要看這張表的大小,表的大小小于一個(gè)塊的大小時(shí)是可以存儲(chǔ)在一個(gè)塊上的