【问题标题】:Serialize JavaScript data structures for SQLite为 SQLite 序列化 JavaScript 数据结构
【发布时间】:2010-11-27 01:17:52
【问题描述】:

我的目标是将 JavaScript 原生数据类型序列化以存储到 SQLite 数据库中。我在 Firefox 扩展中执行此操作,因此我可以访问 Mozilla 平台 XPCOM api。最初我认为最简单的方法就是存储 JSON 字符串。

但是,如果有办法在 Mozilla 平台内序列化本机数据类型,我想知道在哪里可以找到它。如果这是可能的,我可以为额外的工作(如果有的话)节省多少存储空间,与 JSON 相比是否会产生性能成本?

当然,以二进制格式存储数据的好处可能不会超过简单地使用 JSON 的便利性。有什么建议吗?

【问题讨论】:

  • 好的,是的,似乎 JSON 是这里的方式。如果需要,它可以按照 mjv 在下面的 cmets 中提到的进行编码,甚至可以像 Mark 提到的那样压缩大型数据集。对于这些字符串,它们中的大多数最终会在 SQLite TEXT 列中存储大约 500 个字符,这似乎是一个很好的解决方案。

标签: javascript sqlite serialization binary mozilla


【解决方案1】:

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

考虑到 FF3.5+ 中快速(反)序列化的含义,我想说您最好还是坚持使用 JSON 字符串。如果您需要从另一种语言/平台检查数据库,这种方式实际上也将是跨平台兼容的。

就字符串开销而言,如果去掉不必要的空格,您将看到几个大括号、几个引号、几个逗号/冒号以及将数字存储为字符串的开销而不是原生格式。除非这被证明是您的应用程序的瓶颈,否则使用简单 JSON 字符串所增加的简单性似乎是值得的。

【讨论】:

  • 是的,JSON 似乎是自然的选择。在发送到 SQL 之前对 JSON 数据进行“编码”可能是一个好主意,使用某种压缩或编码方案。以一点 CPU 为代价,您将节省网络和数据库中的时间和空间,也许更重要的是(如果数据量通常很小),这也将引入事实上的“加密”数据,敏感信息(姓名/密码/个人详细信息...)最终是否会包含在 javascript 对象中。 (没有 NSA 级密码,但对基本黑客攻击具有足够的威慑力)。
  • 如果数据库空间是一个主要问题,压缩当然是一个好主意。 Mozilla 确实有可用的 zlib,这意味着您绝对可以在存储之前压缩字符串。当然,这样做的代价是降低了交叉兼容性,这可能不是一个大问题。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 2014-11-28
  • 2016-05-02
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
相关资源
最近更新 更多