2012-12-28 122 views
3

我在我的第一個現實世界的應用程序工作,其中包括跟蹤中型醫療辦公室的醫學研究。系統需要跟蹤醫生,用戶,患者,研究模板和研究報告。這個程序的目的是爲任何可能的研究應用預先格式化的研究模板,跟蹤每個患者的研究並保持一個容易找到的文件系統。每個研究報告都保存在一個特定的文件夾中,作爲一個html文件,可以直接從Windows使用或打印。我估計任何時候都會有大約20位活躍的醫生,30位不同的研究模板,12位用戶;患者和研究報告將是累積的,並將無限期地保持活躍。我估計,我們正在談論2000年的新病人和6000年的新研究報告。我應該使用數據庫而不是序列化文件嗎?

我已經差不多完成了這項工作,但最初我選擇將數據存儲在序列化文件中,而我並沒有考慮使用數據庫。現在,考慮到數據的規模會迅速增長,我相信我應該考慮使用數據庫來代替。由於許多不同的原因,特別是我擔心序列化文件的選擇,因爲我注意到任何類中將來可能做出的任何更改都可能與序列化文件衝突並阻止我重新打開該文件。我很欣賞任何評論,一個文件有多大,以至於無法處理?這是一個可接受的序列化文件,請將任何想法或意見傳給我。感謝您的幫助

+0

你真的沒有使用像Hibernate/JPA這樣的ORM框架?你是如何意識到尋找病人的?你是否將整個數據庫讀入內存?我希望這是一個練習。 – burna

+0

就是這一點。本來就是這個想法,但我意識到,我將在短時間內磨合記憶。這是一個簡要的結構: –

+0

我有一個對象我稱爲程序,程序有醫生,用戶,pacients,研究模板和研究報告。另一方面研究報告舉行醫生,模板,pacient等的實例。我是doig將目標程序和所有asociates類保存在一個文件中。我沒有使用數據庫,因此我意識到我一直在把所有的信息都提供給內存。 –

回答

1

大多數人會說,你應該使用數據庫無論如何。如果這是一個專業的應用程序,您不能冒數據被破壞的風險,由於您的代碼中的錯誤和某人錯誤地使用該程序。

這是數據的價值,而不是重要的大小。說它已經運行了一年,文件變得無法使用。你打算告訴他們他們應該從頭再次輸入所有數據嗎?

如果只是一個練習,我仍然建議你使用數據庫,因爲你會學到一些東西。一個流行的選擇是使用hibernate,它是CV ++。 ;)

+0

這是一個真正的真實診所真正的項目。我同意數據的價值有多重要,但我也關注數據的大小,因爲在幾年之後,我可能會有15或18K的記錄。我現在安裝的方式是,應用程序每次都將記錄加載到內存中。買這樣的說我是一種自我回答我的原始問題,但我是堆棧,因爲我很難理解關於數據庫如何工作的概念性問題。 (我讀過這麼多的材料,但我似乎沒有得到它)​​ –

+0

我在Java中加載了40億條記錄(沒有數據庫),這不是問題,因爲a)我不更改它,它只是源數據b)我可以輕鬆地重新創建它。大小並不重要,只有它的價值和重新創建它的成本。 –

+0

好的。我印象深刻,我不會想象你可以在內存中處理多少信息。在我需要將新實例變量添加到我的對象的情況下,這將我帶回可靠性和可擴展性。 –

2

您對打破與這些文件的兼容性的擔憂是絕對合理的。

  • DB服務器的設置(MySQL的)
  • 內的新休眠到項目
  • 重新實現序列化類的集成: 我通過採取這些步驟解決了一個小清單項目相同的問題(如果數據庫模式不會中斷,請將註釋添加到現有類中)
  • 使用JPA實體生成數據庫模式
  • 實現現有對象的導入器(反序列化,轉換和堅持參照誠信。
  • 導入和現有數據的驗證對象
  • 從老班到新的JPA實體的任何需要重構整個項目內的老班的
  • 拆卸和他們的進口商(應在資源庫中打盹)
+0

不幸的是,你最後的評論遠遠超出了我此刻的能力。換句話說,我不明白你上面提到的知識是否由於知識的鎖定。與其他人一起,我不知道該項目意味着什麼休眠。 –

+1

Hibernate是JPA(Java持久性API)實現,它基本上將Java類連接到數據庫錶行(實體)。學習這些東西肯定會花時間,但取決於未來的項目是值得的。 Peter Lawrey提到了XMLEncoder:如果你不需要執行復雜的查詢,那麼XML文件的實現(我曾經使用過castor庫)也會大大地放寬Java類和數據文件之間關於代碼變化的綁定。 – Sam

+0

謝謝薩姆。我會更詳細地介紹JPA看起來是什麼樣的路線。我還很年輕(看起來),但希望最終我會到達那裏。現在我想我應該研究數據庫管理。我感謝你的幫助。謝謝。 –

相關問題