2009-09-10 56 views
0

我的目標是序列化JavaScript本地數據類型以存儲到SQLite數據庫中。我在Firefox擴展中這樣做,所以我可以訪問Mozilla平臺的XPCOM api。起初我在想最簡單的事情就是存儲JSON字符串。序列化SQLite的JavaScript數據結構

但是,如果有方法在Mozilla平臺中序列化原生數據類型,我想知道我在哪裏可以找到它。如果這是可能的話,那麼額外的工作可以節省多少存儲空間(如果有的話),並且性能成本與JSON相比會有多少?

當然,以二進制格式存儲數據的收益可能不會超過簡單使用JSON的難易程度。有什麼建議麼?

+0

好的,是的,看來JSON是要走的路。如果需要,可以在下面的註釋中通過mjv進行編碼,甚至可以像Mark提到的那樣對大數據集進行壓縮。對於這些字符串,大多數字符串最終會存儲在SQLite TEXT列中的大約500個字符,這似乎是一個很好的解決方案。 –

回答

1

Firefox 3.5+ has native JSON encoding/decoding,這比JSON的Javascript引擎解碼快,according to Wikipedia

鑑於FF3.5 +中快速(反)序列化的含義,我想說你可以堅持使用JSON字符串。如果您需要從另一種語言/平臺檢查數據庫,那麼這種方式也將幾乎跨平臺兼容。

就字符串開銷而言,如果你去掉不必要的空白,你會看到一些花括號,幾個引號,一些逗號/冒號和一個數字的存儲成本字符串而不是原生格式。除非這證明是您的應用程序的瓶頸,否則使用簡單的JSON字符串增加了簡單性似乎值得。

+0

是的,JSON似乎是自然的選擇。在發送到SQL之前對其進行「編碼」JSON數據可能是一個好主意,它有一些壓縮或排序的編碼方案。以一點CPU爲代價,你可以節省線路和數據庫的時間和空間,也許更重要的是(如果數據量通常很小),這也會引入事實上的「加密」數據,敏感信息(名稱/密碼/個人詳細信息...)最終將包含在javascript對象中。 (沒有NSA級的密碼,但是對於基本的黑客來說足夠體面)。 – mjv

+0

如果數據庫空間是一個主要問題,壓縮無疑是個好主意。 Mozilla確實提供了zlib,這意味着您在存儲之前絕對可以壓縮字符串。當然,這會降低交叉兼容性的代價,這可能不是一個大問題。 –