在客戶現(xiàn)場,客戶問我:“你們的上位機(jī)軟件的配置文件在哪?”,我跟客戶說,沒有配置文件,所有配置都在數(shù)據(jù)庫里。客戶一臉愁容地問:“那如果我想把這個(gè)機(jī)器的軟件配置拷到另一臺機(jī)器上怎么辦?”,果然,當(dāng)初我擔(dān)心的問題來了!
![]()
現(xiàn)在的軟件架構(gòu)我其實(shí)是有點(diǎn)后悔使用數(shù)據(jù)庫的,雖然是用的Sqlite數(shù)據(jù)庫!當(dāng)初用Sqlite數(shù)據(jù)庫我只考慮到了部署方便,它不像MySql、SqlServer或者Oracle數(shù)據(jù)庫那樣還得在本地安裝一個(gè)客戶端,甚至于當(dāng)DB目錄下沒有數(shù)據(jù)庫文件我自己通過代碼判斷一下即可。
但是,后面項(xiàng)目寫著寫著,我就發(fā)現(xiàn)不對了,但是此時(shí)再改,就影響工期了,所以,即使我知道現(xiàn)在使用數(shù)據(jù)庫是有問題的,但是還是硬著頭皮往下寫!
具體咋回事呢?其實(shí)問題很簡單,那就是上位機(jī)這邊需要配置的參數(shù)實(shí)在是太多了,如果一個(gè)一個(gè)配置,光配置就得大半天,這時(shí)候,如果另一臺上位機(jī)需要配置,最方便的方式其實(shí)就是將已經(jīng)配置好的那臺上位機(jī)數(shù)據(jù)庫直接復(fù)制到另一臺上位機(jī)上。
原則上,這種方式在設(shè)備調(diào)試階段是沒有問題的,怕就怕有些時(shí)候機(jī)器已經(jīng)運(yùn)行了一年半載甚至更久,這時(shí)候數(shù)據(jù)庫里面已經(jīng)產(chǎn)生了大量的交叉數(shù)據(jù)了,這時(shí)候直接把一臺上位機(jī)上的數(shù)據(jù)庫復(fù)制到另一臺上位機(jī)上肯定就不合適了。
而作為客戶,很多客戶那邊的操作員連數(shù)據(jù)庫是啥都沒有概念,就別說直接從數(shù)據(jù)庫里面復(fù)制表數(shù)據(jù)這種常規(guī)操作了。
因此,當(dāng)我發(fā)現(xiàn)這個(gè)問題以后,我知道,開發(fā)上位機(jī)軟件,數(shù)據(jù)庫是不能用來存儲系統(tǒng)配置信息的,最方便的,還是用文件存儲的方式,并且,最好還是分散的那種。
此話怎講呢?
道理很簡單,像我現(xiàn)在寫的這個(gè)上位機(jī)軟件,有上百個(gè)配置信息,這些配置信息是分散在不同頁面的,甚至可以將每個(gè)頁面的配置信息單獨(dú)存儲在一個(gè)文件當(dāng)中,因?yàn)榭蛻暨@邊有時(shí)候復(fù)制配置信息其實(shí)僅僅指向復(fù)制一段而已,分散存儲在復(fù)制時(shí)可以盡量減小兩臺上位機(jī)之間的配置沖突。
說到這里,其實(shí)我已經(jīng)知道自己錯(cuò)了,既然客戶提出了這個(gè)問題,我只能硬著頭皮接下客戶的疑問,找個(gè)時(shí)間給他們改。
客戶這邊倒是也沒有為難我,但是他們跟我說,盡量不要使用數(shù)據(jù)庫,將所有信息都存儲在文本文件中。
客戶的意思很明確,我開始認(rèn)為僅僅只是配置信息使用文件存儲即可,但是,像一些生產(chǎn)數(shù)據(jù),他們有時(shí)候需要導(dǎo)出來做數(shù)據(jù),比如一些生產(chǎn)報(bào)表的折線圖等。
我跟他們說這些數(shù)據(jù)我系統(tǒng)里面都是有導(dǎo)出功能的,各種圖形的報(bào)表數(shù)據(jù)我們都有,但是,客戶的意思是他們有時(shí)候其實(shí)不太信任上位機(jī)的報(bào)表數(shù)據(jù),只有原始數(shù)據(jù)他們才信,所以,他們更加愿意拿原始數(shù)據(jù)出來分析。
如此一來,客戶幾乎推翻了我整個(gè)數(shù)據(jù)存儲的結(jié)構(gòu)架構(gòu),說實(shí)話,還是有失落感的。
后來,了解了客戶的使用習(xí)慣,他們甚至于連Json存儲的方式都不能接受,因?yàn)镴son在他們眼里還是代碼格式,他們更加偏向于使用ini文件保存的方式,這樣更加直觀,而且也便于他們修改。
這就是上位機(jī)程序使用者的真實(shí)想法!
結(jié)語
其實(shí),這種想法我是不排斥的,反而覺得很有道理,可能我之前做的上位機(jī)程序配置信息不多的原因,我覺得使用數(shù)據(jù)庫存儲配置信息才是最現(xiàn)代的方法,但是像上位機(jī)軟件,可能數(shù)據(jù)庫有時(shí)候和客戶真正需要的方式還是有些沖突。
我覺得,只要是讓客戶能夠方便操作的一切技術(shù)、行為和方法都不應(yīng)該被貼上落后的標(biāo)簽,所有所謂高級一些的寫法,只不過是很多程序員自己內(nèi)心狹隘的想法而已,貼合用戶需求,一直以來都是軟件開發(fā)的核心!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.