2016-05-16 43 views
1

我通過來自服務器的http請求檢索結構化數值數據(float 2-3小數位數)。數據以數字集的形式出現,然後轉換爲數組/列表。然後,我想將每組數據存儲在本地計算機上,以便我可以對其進行進一步操作。Python,計算效率高的數據存儲方法

由於這些數據集中有很多需要收集,因此只需編寫每個進入.txt文件的數據集看起來效率不高。另一方面,我知道有各種解決方案,如mongodb,python到sql接口等,但我不確定我應該使用哪一種解決方案,哪種解決方案最適合和高效。

另外,創建的數據庫必須能夠接口並從不同語言(如MATLAB)查詢。

+0

你處理什麼樣的數據?它有多大? –

+0

溫度數據。每個數據集代表一個完整的24小時測量週期。總的來說,大約有大約300萬個數據集,每個數據集中大約有500-1000個數字,這取決於該特定集合的測量頻率@AnthonyE –

回答

1

如果你只是想存儲它的地方,所以MATLAB可以使用它;從數據庫supported by matlab中選擇您的選擇,然後爲該數據庫安裝適當的Python驅動程序。

Python中的所有數據庫都有一個標準的API(稱爲dbapi),所以有統一的數據庫處理方式。

由於您尚未告訴我們以後如何處理這些數據,因此很難提供任何進一步的細節。


的想法是,我想基本上下載所有的數據到 我的機器,這樣我可以在本地後操作(運行分析 並在其上執行某些數學運算),而不是具有 不斷從服務器調用它。

爲此,您可以使用任何存儲機制從文本文件到MATLAB支持的任何數據庫 - 因爲MATLAB支持的所有數據庫都受Python支持。

您可以選擇將數據存儲爲「文本」,然後在應用程序端(即MATLAB端)進行數值計算。或者您可以選擇將數據存儲爲數字/浮點數/小數(取決於您需要的精度),這將允許您在數據庫端進行一些計算。

如果您只是想將其作爲文本存儲並在應用程序端進行計算,那麼最簡單的選項是mongodb,因爲它是無模式的。您將以JSON格式存儲數據 - 這可能是它從網上檢索的格式。

如果您希望利用某些數學函數或其他功能(例如,地理空間計算),那麼更好的選擇是您熟悉的傳統數據庫。您必須創建一個模式併爲每個傳入數據對象定義數據類型;然後將其妥善存儲以利用數據庫的查詢功能。

+0

這個想法是,我希望實質上將所有數據下載到我的機器上,這樣我可以稍後在本地運行(運行分析並對其執行某些數學運算),而不必不斷地從服務器調用它。 @BurhanKhalid –

+0

感謝您的迴應,當你說傳統數據庫你是什麼意思?你能給個例子嗎? @BurhanKhalid –

+0

Oracle,SQL,Postgresql等關係數據庫。 –

1

我可以推薦使用輕量級ORM,如peewee,它可以使用多個SQL數據庫作爲存儲方法。那麼它就成爲選擇你想要的數據庫的問題。要使用最簡單的數據庫是sqlite,但是如果您決定不夠快地切換到另一個數據庫(如PostgreSQL或MySQL)是微不足道的。

ORM的優點是可以使用Python語法與SQL數據庫進行交互,而不必學習任何SQL。

1

你考慮過HDF5嗎?它對數字數據非常有效,並且得到了Python和Matlab的支持。