2012-06-21 78 views
5

我們正在設計對當前系統(C++ \ CLI和C#)的更新。 該系統將從〜10K設備(不久的將來)收集少量(〜1Mb)的數據量。目前,它們用於將設備數據保存爲CSV(表格)並將所有這些文件存儲在寬文件夾結構中。SQL數據庫VS.多個平面文件(數千個小CSV)

僅插入數據(創建/附加到文件,創建文件夾)從未更新/刪除。 數據處理是通過讀取許多CSV到外部程序(如Matlab)完成的。主要用於統計分析。

有一個選項可以開始將此數據保存到MS-SQL數據庫。 處理時間(讀取CSV到外部程序)可能長達幾分鐘。

  • 我們應該如何選擇使用哪種方法?
  • 其中一種方法比另一種方法需要更多的存儲空間嗎?
  • 粗略地說,什麼時候讀取數據庫的原始數據比讀取CSV更快? (10個文件,100個文件?...)

我很感謝您的回答,優點和缺點值得歡迎。

謝謝你的時間。

+0

這是您只能通過嘗試才能回答的問題之一。 – Gabe

+0

你也可以考慮使用noSQL數據庫。 – HLGEM

回答

3

那麼,如果您使用一個CSV中的數據來獲取另一個CSV中的數據我猜想SQL Server將比您想出的任何內容都快。我懷疑SQL Server在大多數情況下會更快,但我無法確定。微軟已經投入了大量的資源來建立一個完全符合你所要做的DBMS。

根據您的描述,聽起來您已經基於表格數據和文件夾結構幾乎創建了自己的DBMS。我懷疑,如果你轉向使用SQL Server,你可能會發現一些事情更快,更容易的地方。

可能的優點:

  • 更快地訪問
  • 更易於管理
  • 更容易擴展如果你需要
  • 更容易執行數據的完整性
  • 更容易設計更復雜的關係

可能的缺點:

  • 你將不得不重寫現有的代碼使用SQL Server而不是你當前的系統
  • 您可能需要支付的SQL Server,你就必須進行檢查,看是否可以使用快速

祝你好運!

+0

我在CSV文件中看到的最大優點之一是您可以進入單個文件並輕鬆進行編輯。你可以在SQL Server中做同樣的事情,但你需要有一個管理工作室的副本,並知道如何實際編輯數據。 –

+0

是的。儘管管理工作室很容易掌握,但它們確實提供了完全基於用戶界面的數據編輯方式。 –

+0

同意。對於普通的商業用戶,CSV編輯可能更容易。但從它的聲音看來,這似乎不成問題。 –

0

這是一個問題,我們的許多客戶都在我的工作地點。除非你需要現有基礎架構的平面文件,或者你不認爲你可以找出SQL Server,或者如果你只有少數幾個文件需要管理,那麼使用SQL Server會更好。

0

如果你有選擇使用ms-sql數據庫,我會這樣做。

在寬文件夾結構中維護數據從來就不是一個好主意。讀取您的數據將涉及閱讀幾個文件。這些可以存儲在磁盤上的任何位置。你的文件 - IO時間會很長。作爲生產數據庫的SQL服務器已經解決了這些問題。

你正在這裏重新發明輪子。這就是foxpro管理數據的方式,每個表格一個文件。除非實際製作數據庫服務器,否則使用成熟的技術通常是一個好主意。

這裏我沒有任何測試統計信息,但是如果處理大量數據,讀取幾個文件幾乎總是比數據庫慢。鑑於您的10k設備,您應該考慮使用標準數據庫。

1

我想嘗試打亂這些問題。

粗略地說,什麼時候從數據庫中讀取原始數據變得比讀取CSV的速度快 ? (10個文件,100個文件?...)

立即。數據庫經過優化(假設您已完成作業)以驚人的速度讀取數據。

其中一種方法比其他方法需要更多的存儲空間嗎?

直到你在成千上萬的文件中,它可能不會有太大的區別。空間很便宜,對吧?但是,一旦進入大聯盟,您會注意到數據庫佔用的空間非常少。

我們應該如何選擇使用哪種方法?

偉大的問題。數據庫中的所有內容始終迴歸到可伸縮性。如果您只有一個CSV文件可供閱讀,那麼您可以輕鬆前往。沒有數據庫要求。甚至幾十個,沒問題。

看起來你最終可能會放大到某個級別,在這個級別中,你肯定會希望數據庫引擎能很快地將數據隱藏在數據之後。如果有疑問,創建數據庫是安全的選擇,因爲您仍然可以在一秒鐘內查詢100 GB的數據。