IndexedDB对象键:大小是否重要?

时间:2012-09-11 07:59:35

标签: javascript indexeddb

我即将在indexeddb对象存储中存储大量对象。所有对象都具有相同的结构,如{somekey: xxx, somevalue: yyy}

对象键的长度是否会影响存储数据的大小?例如,如果我将结构更改为{s: xxxx, v: yyyy},我是否应该期望在当前浏览器的对象存储中有更好的占用空间?

我无法在标准的任何地方找到任何关于此的信息,所以我想这取决于浏览器实现内部使用字典与否,我想了解它目前是如何实现的,以及是否减少商店对象密钥的大小是值得的优化。

1 个答案:

答案 0 :(得分:1)

是的,它会影响它。但至少对于合理大小的键,一个字符与10或20个字符不会对性能产生任何影响,除非你的规模非常大(数百万条记录)。大多数实现(包括我可以说的chrome)都会存储包括键名在内的完整对象,但索引只存储一次“keypath”..

意味着{“foo”:“bar”}可能需要大约12个字节来存储(每个字符串大约4个字节加上一些类型信息开销,但“foo”的后续索引只会存储“ baz”的。

{“foobarbaz”:“helloworld”}可能需要大约23个字节来存储。实际上我希望在大多数情况下你自己的数据应该消除密钥长度的开销,并试图缩短你的密钥以节省几个字节是不成熟的优化。