2009-07-21 91 views
4

我們公司一直在尋找一種文件格式來保存大量的實驗室傳感器數據。每次他們運行儀器時,它都會生成一個文件,我們將這些文件用於趨勢記錄等數據庫中。分層格式是首選,因爲它允許我們對數據進行「分組」。在將數據放入數據庫之前,這是一種中間文件格式。由於我們的開發環境,這是我們的優先列表:分層.Net文件格式?

1).Net兼容。 API將用於Web服務和客戶端應用程序。我們無法控制客戶的環境,所以pure.Net解決方案是最好的。

2)讀取速度。我們的閱讀是隨機的,不是順序的。越快越好。如果我們不是C#開發商店,我會說速度是#1。

3)文件大小。如果文件本身很大,則需要良好的壓縮比(86%和更高)。

4)讀取的內存佔用。由於數據量大,我們不能簡單地閱讀它。每個傳感器都有一個時間/值對。這可能會產生超過400萬雙。這爲我們消除了XML。

我們目前看到HDF5,發現.NET在.NET領域的應用極其缺乏,不能做網絡服務,但是我們正在尋找的速度和速度。我也看到了JSON,它看起來很有希望,但我還沒有嘗試讀取一段數據。我搜索了網頁,沒有找到很多文件格式來做我們需要的。任何幫助表示讚賞。

回答

1

你需要一個B-tree數據庫,如: 的SQL Server Compact

也期待在SQLite的 http://sqlite.phxsoftware.com/

CTree更多的是一種ISAM的,如果你可以用SQL部分 谷歌免除對於ctree

對不起,我想更多的鏈接,所以不讓我BC,這是一個新的ACCT

0

我認爲特殊閱讀需求對於任何格式都是一個問題,在這種情況下,您需要實現自己的解析器。

0

如果二進制樹/平衡樹格式沒有太多的努力,你可以考慮將它存儲在Newick Format。它也可以支持像JSON這樣的鍵/值對格式。

這實際上並不比JSON更輕,但「{}」替換爲「()」。

((浣熊, 熊),((sea_lion,密封),((猴,貓),黃鼠狼 )),狗);

顯然是一個二叉樹,查詢速度非常快,雖然可能不會比來自JSON對象的字典快,但它沒有鏈接列表樣式層次(對象圖)擔心。

我怕我找不到任何.NET API的它雖然只是Java和C.

1

我想你可能會更好在表中存儲這些信息在數據庫中,如果你是使用SQL Server,VARBINARY應該完成這項工作。

通過在頂級節點中包含一個[Parent]字段,您的表可以是等級的。

如果您將查找值(文件的id)編入索引,則隨機訪問應該很快。如果你需要壓縮,你可以嘗試使用GZip類格式化你的原始字節[],然後將它粘貼到數據庫中。

使用數據庫這個信息給你的能力:運行瘋狂的查詢

1),加入等。 2)您可以索引多個列以便通過不同的鍵值更快速地查找。 3).Net肯定有多個API 4)如果壓縮速度不會太快影響速度,可以添加壓縮 5)備份數據應該當心很大

這個建議能幫助你嗎?

+0

以及我們這樣做是存儲在數據庫中,但我們需要的東西作爲中間體T o包含信息。我們不能只從傳感器 - >數據庫。它會傳感器 - >文件 - >數據庫。當我說我想直接去DB的時候相信我。 – mcauthorn 2009-07-23 00:08:11

+0

您仍然可以將傳感器寫入臨時文件並將其加載到VARBINARY列中。如果速度是可以接受的,我通常會嘗試在每種情況下使用數據庫 - 事後管理維護更容易。 – jonathanpeppers 2009-07-23 12:58:07