資料庫如何存放共用文件 |
|
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
小弟為個人資料管理寫了一個小系統。這個系統主要是針對現在人的硬碟上通常會有很多與人或事或物有關及不同型態的檔案,如MP3/MDB/JPG/XLS/DOC/TXT/XML/CSS/JAVA等檔案的管理而存在。這些檔在再加上一些相關的說明、註記...等等資訊組合起來使用。為了個人管理方便檔案,這些檔是直接放在硬碟上,資料庫除了相關的記錄外只記錄檔名及目錄名。本來純是供個人使用,後來因為覺得還蠻不錯用,就將檔集中到集中的目錄下共用。檔案維護與移殖就夾雜以WinRAR及幾個簡單的模組湊合者用了,用來覺的尚可。以上是純個人使用的,所以寫的很鬆散,安全措施也作的很差。
如果我要將這個檔案集中管理的功能寫給多人長年使用,那勢必不能用現在這個很脆弱的架構來運作。小弟想將它移到MSSQL上,是用Binary-image的欄位型態去存這些檔嗎?我要如何作?有那些要注意的地方? 同理,如果要移到PostgreSQL/MySQL/Access要選那種欄位型態,及該注意那些問題? 先謝謝各位大大的指點與分享。
------
Kevin |
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
小弟清早起來看到苦思多日的問題,馬上就有前輩惠示,亂感謝一把的。
感謝前輩指點。這是個很有趣味的題目,又夠我玩好一陣子了。 小弟還有一些問題想向前輩們請益。 1.通常這些檔雖然很重要,可是它的篇幅倒往往不會很大,可是有些檔就很可能會動輒上Mega或數十Mega,那這會不會對資料庫運作的速度造成大影響?而這些影響要如何處理才好?這些異動會寫入到交易日誌以備還原使用嗎? 2.不知道可以存的檔案種類是不是有限制? 3.小弟通常都會順手寫個Access的版本,可否請教前輩Access是用那種欄位格式存儲? 謝謝前輩的指點。
------
Kevin |
Stallion
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
===================引 用 文 章===================
1.通常這些檔雖然很重要,可是它的篇幅倒往往不會很大,可是有些檔就很可能會動輒上Mega或數十Mega,那這會不會對資料庫運作的速度造成大影響?而這些影響要如何處理才好?這些異動會寫入到交易日誌以備還原使用嗎? 沒有!但看你檔案怎麼存取,我都用TFileStream。 3.小弟通常都會順手寫個Access的版本,可否請教前輩Access是用那種欄位格式存儲?謝謝前輩的指點。 大檔案不建議用Access,效率有問題就算了,還可能資料毀給你看!我的經驗是超過50MB就快讓人不耐了。 |
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
Coffee
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
Coffee
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
japhen
中階會員 ![]() ![]() ![]() 發表:2 回覆:57 積分:71 註冊:2006-08-16 發送簡訊給我 |
有個很偷吃步的方法,你可以玩玩
把資料欄位型態設定成image,長度預設(我假設你用的是SQLSERVER或ACCESS,ACCESS則用OLE做欄位型態) 現在你想存東西進這個欄位(假設欄位名稱是abc) ADOQuery1.fieldbyname('abc')TBlobField().savetofile('c:\windows\mypic.jpg'); 啊我想對stream操作,怎麼寫? ADOQuery1.fieldbyname('abc')TBlobField().savetostream(mystream); 不過,我用這個,並不是所有檔案都得有必要存進資料庫里,你得理解策略,如果有可能會讓你一個資料夾出現成千上萬個用戶存檔的話,我就會把檔案存進資料庫,至少有資料庫幫我做管理,也好維護版本(比如說mp3、圖檔這類半大不小的檔案又多又煩的) 啊如果你要存的是超大檔案(電影檔、iso檔),那就算了吧 oracle、mySQL直接用BLOB做欄位吧
------
歡迎在大陸的台商加入我們的行列 台商小棧 www.twgocn.com |
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
謝謝 Coffee及japhen兩位大哥。小弟這幾天在寫加解密的工具及安裝測試Fedora-Samba,及測試Access及MSSQL與PostgreSQL存這些檔的問題。加解密寫了兩天順利寫好了;Samba試了一天只能抓到Windows的共享目錄,但Fedora提供出來的只能看到目錄及檔,但無法看檔內容;Access及MSSQL很順利的可以上下了,但PostgreSQL老是碰壁,上天下地翻了無數文章,但還是無解,真氣人。
看了japhen的回文,想想只要不是超大'檔就直接用DB來存也是很方便的,令小弟信心大增。小弟這幾天在幾個站裏到處搜尋91年以來的文章,收益良多。 小弟現在的規劃是: 1.不管是硬碟檔案或DB,均經過壓縮及加密處理。 2.以Access為主的專業版以原先寫好的直接存取硬碟檔案的架構為主,但搭配Fedora-Samba作共享目錄管理。用Samba而不用WindowsServer是因為成本及功效的考量。此Samba均為隱藏式﹝即Windows的共享名稱尾加$﹞,且均由AP下令以不同身份﹝唯讀或可寫入﹞聯接取得後再覆製到本機來。及由AP管制寫入硬碟﹝壓縮加密後﹞。 3.PostgreSQL企業版:以DB為主,但亦可使用Samba目錄直接存取硬碟檔案。 這幾天頗花了我不少時間。
------
Kevin |
japhen
中階會員 ![]() ![]() ![]() 發表:2 回覆:57 積分:71 註冊:2006-08-16 發送簡訊給我 |
用資料庫來存放檔案還有一個很方便的地方~~~~~~那就是權限管理大解放~~
試想,你把檔案都塞在一個資料夾中,幾十個幾百個都還好管,成千上萬個檔案,你光取檔名就取到昏倒(為了不發生重名,你肯定用隨機數取名,那52453576AB42101F31.DOC是什麼東西?),更不用講日後的管理,還有讀取的權限,另外,如果有病毒出現,一個資料夾想全毀掉,是輕而易舉的事 我還沒講到檔案多的時候,光是磁碟分配的浪費,就是一個大麻煩...............一天到晚讀檔刪檔...........磁碟空間的浪費,成天想辦法壓縮重整磁碟,那真的是會把人搞瘋掉的 還有還有,你的檔案讀取權限要怎麼設定?為了讓你的程式可以讀寫檔案,你肯定是把everyone的權限全開吧..............那麼除了你的程式可以打開該目錄的檔案,還有可以執行你的程式的人員也可以打開那堆檔案,你根本沒辦法AD來管理你的檔案,因為.....你的程式將會發生錯誤 而DATABASE存資料檔可就是最好的選擇,只要ROOT或SA的權限不亂放,除了你的程式,那堆檔案應該沒人讀的出來(用PL/SQL特殊工具除外),你也可以依權限來讓某些人只能打開某些檔案(SELECT的到的才能打開) 這就是我用DATABASE來管理檔案的重要原因
------
歡迎在大陸的台商加入我們的行列 台商小棧 www.twgocn.com |
kevin2004
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
小弟這幾天還在與PostgreSQL-bytea奮鬥中,每天均是焚膏繼晷,不眠不休。
能存到DB中,其好處真是一言難盡。程式寫來真是簡便強大很多。我前些時寫了一個信箱管理,以管理我那N個信箱及陳年舊信。功能還可以,可是老是跟硬碟目錄扯不清的附檔,老是讓人覺得拖泥帶水的,很不舒服。現在有這個功能,打通任督二脈,亂爽一把的。原先我想寫個系統管硬碟檔案,可是對硬碟目錄這種脆弱的結構一直想不出來處理的辦法,現在這個也不是問題了,我不要以硬碟目錄作結構。我還是應該以由人事物的觀點來組職我的資料與檔案才對。 真是大解放。好過癮。 謝謝大家的幫忙。謝謝了。
------
Kevin |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |