我有一個解決方案,我需要能夠將多個JSON對象記錄到文件。基本上每天做一個日誌文件。從單個文件寫入(以及後來讀取)這些內容的最簡單方法是什麼?將多個JSON對象記錄到單個文件 - 文件格式
MongoDB如何處理BSON?它用作「記錄」之間的分隔符是什麼?
協議緩衝區,BSON,MessagePack等等提供壓縮和記錄概念嗎?壓縮將是一個很好的好處。
我有一個解決方案,我需要能夠將多個JSON對象記錄到文件。基本上每天做一個日誌文件。從單個文件寫入(以及後來讀取)這些內容的最簡單方法是什麼?將多個JSON對象記錄到單個文件 - 文件格式
MongoDB如何處理BSON?它用作「記錄」之間的分隔符是什麼?
協議緩衝區,BSON,MessagePack等等提供壓縮和記錄概念嗎?壓縮將是一個很好的好處。
協議緩存,您可以如下定義消息:
Message JSONObject {
required string JSON = 1;
}
Message DailyJSONLog {
repeated JSONObject JSON = 1;
}
這樣你只會從內存中讀取文件和反序列化。它的序列化方式也基本相同。一旦將文件(序列號爲DailyJSONLog
)存儲在磁盤上,您就可以輕鬆地將串行化的JSONObject
附加到該文件的末尾(因爲DailyJSONLog
消息非常簡單地是重複字段)。
唯一的問題是,如果你每天有很多消息,或者如果你想在一天中的某個位置開始(你不能輕易地到達中間(或任意)重複列表)。
我已經得到了一個JSONObject
,序列化,然後base64編碼它。我會將這些文件存儲到一個以新行分隔的文件中。這可以讓你很容易地看到每個文件中有多少條記錄,可以訪問文件中任意的JSON對象,並且可以不斷擴展文件(你可以擴展上面的'重複'消息,也很平常,但它是一個單向易操作...)
壓縮是一個不同的話題。協議緩衝區不會壓縮字符串。如果你要定義一個pb消息來匹配你的JSON消息,那麼你將得到pb可能'壓縮'任何整數到[varint][1]
編碼格式的好處。如果您嘗試使用base64編碼路由,您將獲得「較少」壓縮。