2013-03-07 61 views
0

我有一個解決方案,我需要能夠將多個JSON對象記錄到文件。基本上每天做一個日誌文件。從單個文件寫入(以及後來讀取)這些內容的最簡單方法是什麼?將多個JSON對象記錄到單個文件 - 文件格式

MongoDB如何處理BSON?它用作「記錄」之間的分隔符是什麼?

協議緩衝區,BSON,MessagePack等等提供壓縮和記錄概念嗎?壓縮將是一個很好的好處。

回答

0

協議緩存,您可以如下定義消息:

Message JSONObject { 
    required string JSON = 1; 
} 

Message DailyJSONLog { 
    repeated JSONObject JSON = 1; 
} 

這樣你只會從內存中讀取文件和反序列化。它的序列化方式也基本相同。一旦將文件(序列號爲DailyJSONLog)存儲在磁盤上,您就可以輕鬆地將串行化的JSONObject附加到該文件的末尾(因爲DailyJSONLog消息非常簡單地是重複字段)。

唯一的問題是,如果你每天有很多消息,或者如果你想在一天中的某個位置開始(你不能輕易地到達中間(或任意)重複列表)。

我已經得到了一個JSONObject,序列化,然後base64編碼它。我會將這些文件存儲到一個以新行分隔的文件中。這可以讓你很容易地看到每個文件中有多少條記錄,可以訪問文件中任意的JSON對象,並且可以不斷擴展文件(你可以擴展上面的'重複'消息,也很平常,但它是一個單向易操作...)

壓縮是一個不同的話題。協議緩衝區不會壓縮字符串。如果你要定義一個pb消息來匹配你的JSON消息,那麼你將得到pb可能'壓縮'任何整數到[varint][1]編碼格式的好處。如果您嘗試使用base64編碼路由,您將獲得「較少」壓縮。

相關問題