2009-09-10 55 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,这意味着您在存储之前绝对可以压缩字符串。当然,这会降低交叉兼容性的代价,这可能不是一个大问题。 –