PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   系統組件 (https://www.pcdvd.com.tw/forumdisplay.php?f=19)
-   -   處理大量文字檔案的瓶頸? (https://www.pcdvd.com.tw/showthread.php?t=809814)

lobben 2008-08-12 06:28 PM

引用:
作者ivantw
[1] 文字檔的開法?一行一行讀取?整個檔案一次讀入?文字檔有幾個?
[2] 500萬筆以上的資料量對Access是一種折磨。
[3] MSDE是比較好的選擇。
[4] 壓縮MDB檔,無法改善效能問題。(by你的狀況)
[5] 考慮到你的老闆會用這種架構,我不認為高手是真的高手...

PS: 我的工作是SFCS Leader/PM

有設Index嗎?怎麼設?

謝謝您的建議與指教
歹勢我沒說清楚,我是要處理新聞文章,十年分的文件大概6G
其中兩年的文件轉換成資料庫後,資料筆數分別是八百萬和一千兩百萬筆

1.,文件檔大概有幾百個,每個都幾十MB~112MB,如果用程式讀取文字檔是沒問題的,一次讀一點就好
而我所謂的"開啟"是用筆記本,效率很差...後來發現用ultraedit開比較快
之所以要開啟文件檔,是因為要看文件格式長怎麼樣以便剖析,才知道怎麼寫轉換程式

2.3.4 這幾天會著手轉換資料庫工作

5.如我前面所說,環境的問題和我老闆個人的習慣問題,所以才會有這種弔詭的做法

至於index的問題
在做資料轉換時,就把某個文字出現在哪一年哪一篇文章的哪一句
所有出現過的資訊都記錄下來
然後另外開個資料庫存放index table
而比數只會增加不會減少,user只會改資料的屬性不會刪除

剛開始效果還不錯,但筆數大概超過600萬筆時就變慢了
只是因為之前沒經驗現在嚐到苦頭了
沒考慮之後有可能要把大量資料拆成多個資料庫...所以要再改 :laugh:

ivantw 2008-08-13 12:16 AM

[1] 記事本的開啟方式是一次讀入,小檔尚可大檔肯定掛,加上其設計本來就沒針對大檔案讀取作特殊處理,所以久是正常的,更何況你的檔案大小甚至有超過100MB;UltraEdit則是只讀取片段,捲頁時再讀取,你所翻捲到的頁面,一定比較快。

有機會自己寫個小程式嗎?
每個檔案只擷取前面一小段,例如100MB取100KB,我想你的文字檔格式應該也是一段一段重複性,看前面一小部份,後面的格式也是相同的;如果我的假設成立,這樣做會不會讓你的分析工作快些?

[2] 我不知道你的資料經過整理後,是要以什麼方式呈現,查詢/歸納/整理方式為何?
從你的字裡行間似乎是做新聞檢索?類似Google打Keyword後,列出你所要的各條新聞(內容/時間/出處...)?

方法與習慣不好該改就是得改;筷子都不會拿了,怎麼夾豆腐?
如果我沒猜錯你的需求,就算轉成MSDE/MSSQL,
HDD I/O效能還是會拖效能,更何況你老闆是拿隨身碟去access。 :jolin: :jolin: :jolin: :jolin: :jolin:

[3] 請查詢 "Primary Key" 以及 "Indexes" ,這兩者加了之後,對 Insert/Update/Delete 沒有幫助,但對 Query 幫助非常大請適當加上(多或少都不好)。

只是恐怕你的資料量...MSSQL也撐不住... :laugh:

或許規劃DB+分散式的架構會比較適合你。


引用:
作者lobben
謝謝您的建議與指教
歹勢我沒說清楚,我是要處理新聞文章,十年分的文件大概6G
其中兩年的文件轉換成資料庫後,資料筆數分別是八百萬和一千兩百萬筆

1.,文件檔大概有幾百個,每個都幾十MB~112MB,如果用程式讀取文字檔是沒問題的,一次讀一點就好
而我所謂的"開啟"是用筆記本,效率很差...後來發現用ultraedit開比較快
之所以要開啟文件檔,是因為要看文件格式長怎麼樣以便剖析,才知道怎麼寫轉換程式

2.3.4 這幾天會著手轉換資料庫工作

5.如我前面所說,環境的問題和我老闆個人的習慣問題,所以才會有這種弔詭的做法

至於index的問題
在做資料轉換時,就把某個文字出現在哪一年哪一篇文章的哪一句
所有出現過的資訊都記錄下來
然後另外開個資料庫存放index table
而比數只會增加不會減少,user只會改資料的屬性不會刪除

剛開始效果還不錯,但筆數大概超過600萬筆時就變慢...

wuchialong 2008-08-15 08:09 AM

有沒有考慮把部分或全部資料+程式丟到RAMDISK去跑
之前也做過這種把TXT檔資料擷取進ACCESS的工作
總資料量只不過1-200MB卻也是很慢
但丟進RAMDISK再處理後
效率差非常多 快很多

owl-home 2008-08-15 08:42 AM

"開啟50mb~112mb的文字檔,CPU使用率飆很高,檔案開很久才開得起來"

光這一項花費很幾分鐘是正常的...
cpu 夠快ram 夠快會快一點沒錯...你還需計算開啟的軟體ex:ultraedit也要內部處理計算的時間.


p.s.:另外:版主沒說明他資料的類型,大家要小心也許這是垃圾郵件的清單

ivantw 2008-08-15 12:28 PM

後續有提到是新聞文章之類的內容。

引用:
作者owl-home
"開啟50mb~112mb的文字檔,CPU使用率飆很高,檔案開很久才開得起來"

光這一項花費很幾分鐘是正常的...
cpu 夠快ram 夠快會快一點沒錯...你還需計算開啟的軟體ex:ultraedit也要內部處理計算的時間.


p.s.:另外:版主沒說明他資料的類型,大家要小心也許這是垃圾郵件的清單

NSRC 2008-08-15 02:36 PM

引用:
作者lobben
謝謝您的建議與指教
1.,文件檔大概有幾百個,每個都幾十MB~112MB,如果用程式讀取文字檔是沒問題的,一次讀一點就好
而我所謂的"開啟"是用筆記本,效率很差...後來發現用ultraedit開比較快
之所以要開啟文件檔,是因為要看文件格式長怎麼樣以便剖析,才知道怎麼寫轉換程式
.


如果你要開 大容量的純文字檔,可以試看看國產軟體

漢書

http://www.stone.com.tw/stone/download/download.jsp

數十 MB 應該不是問題

Scorpion 2008-08-15 03:42 PM

如果只是單純開啟文件觀看,並不做編輯、存檔工作,何不試試 Total Commander 的
Viewer (按 F3),速度非常快,它不會一次讀入文件全部內容,PageUP、PageDown
按到哪讀到哪,還有支援 Unicode。

u8526425 2008-08-15 04:59 PM

會要用到資料庫
除了資料量龐大之外
就是有運算比對排序分析的需求
不用再建議單純的text reader了


所有的時間均為GMT +8。 現在的時間是09:54 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。