iT邦幫忙

0

關於資料的寫入與讀取

各位前輩好,小弟又來問問題了。
這次的問題如下:

小弟公司有一台機器名為A,會在檢測一定數量後自動產生 料號n.asc 的檔案並儲存在FileServer上,而檔案名稱會依照料號更改,如果是同一批料號,則會在該料號資檔案繼續書寫。

此時有另一台機器B會讀取 料號n.asc檔,可是有時候會碰上機器A正在寫入,會變成無法讀取而停在那。

想請問各位前輩是否有什麼好方法可以解決這個問題,是需要自己寫個小程式,還是說有現成的軟體可以自動解決問題?

看更多先前的討論...收起先前的討論...
我想
A和B處理上的細節
應該比你描述的多一些

如果A,B的程式都是你可以改的
那我建議用「資料庫」取代「文字檔」

如果A,B的程式你沒法子修改
那就兩手一攤,收工了
打嗑睡
liu0002 iT邦新手 5 級 ‧ 2013-04-09 17:10:41 檢舉
如果是這樣的話 那真的只能兩手一攤了 程式是套裝的 Orz
套裝的?
不能改?

傻孩子
還有什麼比這更好的事呢
拍手偷笑
liu0002 iT邦新手 5 級 ‧ 2013-04-10 09:08:30 檢舉
咦 是這樣嗎 !? 驚

2 個回答

10
yesongow
iT邦大師 1 級 ‧ 2013-04-09 22:42:40
最佳解答

A.程式不翻新的話!
請增加以下程式的判斷or流程

1.請B電腦把資料從FileServer複製到B的%temp%目錄
2.B定期判斷FileServer的資料檔,與B的%temp%目錄下的資料檔,時間大小是否相同
若不同,執行以上步驟1
3.讀取B的%temp%目錄下的資料檔
4.sleep 60sec,執行步驟2

B.把程式大翻新,資料全部塞入資料庫!
這樣B讀資料,不用擔心A寫入時,造成Locked的影響!

liu0002 iT邦新手 5 級 ‧ 2013-04-10 09:11:15 檢舉

A方案我跟主管討論過了,主管表示這樣會變得很複雜,而且ASC檔隨時都會產生。

B方案沒辦法,程式不是自己寫的,是廠商提供的。Orz

liu0002 iT邦新手 5 級 ‧ 2013-04-10 09:11:15 檢舉

A方案我跟主管討論過了,主管表示這樣會變得很複雜,而且ASC檔隨時都會產生。

B方案沒辦法,程式不是自己寫的,是廠商提供的。Orz

將 A機器的資料定時匯入資料庫,然後再匯出資料到不同的目錄給B 機器讀,這樣就可以避免Lock的問題。
或者B機器有沒有 read dirty 的設定。

10
ted99tw
iT邦高手 1 級 ‧ 2013-04-09 17:37:08

B僅讀取應不會鎖檔,有可能是B讀到一半而A要寫入這時才會鎖,此為正常現象不需擔心。

我要發表回答

立即登入回答