2013-08-27 44 views
0

這是一個真正的設計問題。我目前正在爲我的僱主設計管理軟件。該軟件的一部分具有地圖顯示,通過檢查他們的郵政編碼來顯示任何需要完成的工作的位置。Java txt vs xml文件數據存儲 - 設計查詢

我下載了包含在英國的所有POST代碼(這是我所需要的),其相應的中心經度和緯度與地圖使用的數據庫文件。它還有大量與每個郵政編碼有關的其他數據。現在,我想的是數據(郵政編碼和他們的經度和緯度)存儲在客戶端,因此沒有要求必須對外發送,但我下載的.csv是500MB的,這是一個有點過大,成爲部分軟件。

所以我剝奪表下降到只有郵編,長和緯度,並保存爲純.txt(現爲60MB),我想知道,如果它是很好的做法/謹慎地使用純.txt在項目從運行時引用數據。爲了便於參考,我曾想過將文件轉換爲XML格式,但我不想不必要地增加文件大小。

.txt文件有260萬線。所以我可能不得不引用該文件,而不是在程序啓動時將數據存儲到內存中。無論如何,我看這裏似乎並沒有很好的解決這個問題。從文件中讀取所有行並將數據傳輸到其他位置的過程在辦公室使用的PC上大約需要12秒,這有點過長。也許有一些搜索.txt的替代方法,而不是一行一行地更快。

問題;

  • 使用txt文件存儲客戶端使用的數據是否審慎?
  • 將其存儲爲XML加速數據加載顯着?
  • 我的問題還有其他解決方案嗎?
  • 我只是傻了嗎?

編輯:我是一個相當缺乏經驗的程序員,所以我可能會避免嵌入式數據庫,只是因爲我需要學習基礎知識的時間。但是,我熟悉XML(它很容易學習)。

+1

這可能會被關閉的是基於意見:所以這裏是我的:使用XML - 文件尺寸會更大,但搜索將使用現有的API調用。(或使用合適的數據庫) – Randy

+0

使用數據庫並將其嵌入到應用程序中(例如derby)。 –

回答

1

我想說60MB是一個txt文件的方式過大。 12秒的等待不是用戶友好的。既然你不想使用外部存儲,我建議如下:

  • 使用XML(API都進行了優化,速度更快)
  • 嘗試把你的數據成塊(對於單一A開頭示例名稱文件,...)
1

要優化查詢等,我只想去一個SQLite數據庫。它很輕巧,並且可以嵌入,並且可以讓您像郵政編碼一樣編制索引。您也可以避免將所有數據加載到程序存儲器中的需求(如果您希望使用基於文件的存儲的某些效率,則需要執行此操作)。

+0

我是一個經驗不足的程序員,我想避免在軟件中添加太多新技術。我對XML非常熟悉(這真的很簡單),所以我可能會避開任何需要我太多學習的東西。我有一個快速閱讀,它似乎確實嵌入式數據庫是一個更好的解決方案,如果你有更多的經驗,所以我正在標記你的答案,雖然我可能會避免使用嵌入式數據庫自己。 我會更新我的問題提及。 –