我试图确定哪种方法是在indexedDB对象存储中布局数据以进行编辑和检索的最有效方法。我对这些概念还很陌生,但是就效率而言,编辑和检索的过程似乎是相反的。
我要处理的数据由模板形式的集合组成,其中每种形式虽然非常相似,但可以具有不同数量的某些信息,以及每个元素具有不同数量的数据。大致而言,每种形式通常都具有50到75个独立的数据元素,其中一些仅是布尔值,而其他文本段落。
我打算将每种表单的数据保存为对象存储中的一项。然后,我开始考虑必须检索单个表单的所有数据,然后将其重新写入对象存储以编辑单个数据元素。这似乎效率很低,而且似乎对于每个数据段甚至每个单独的数据元素都以一种形式具有多个条目(键)似乎更好。
对于将编辑内容保存到表单中的单个数据元素可能会更好,但是当检索数据以显示现有表单时,必须检索多个可变编号的键而不是一个。因此,看起来使保存对单个表单元素的编辑更加有效的原因使得检索整个表单的所有数据的效率降低了。
所以,我的问题是浏览器哪个更难?要为单个键提取或替换较大的数据对象,还是为包含相同总数据量的较小对象进行多次单独提取?
将进行很多编辑,但是在不同形式之间还会有很多来回移动;因此,似乎没有一个过程比另一个过程更频繁地发生,而另一个过程则决定了最常用的布局。
我可以使对象存储中的代码和数据结构复杂化,却一无所获。或者,也许,每个问题一小部分固定数量的部分(键)可以平分秋千。
谢谢您考虑我的新手问题。
添加的说明
我不是要使事情复杂化,而是要更好地理解。请假设每个表格总共有1,000个属性。如果用户仅在表单上编辑一个属性,则使用get
检索存储1,000个属性的对象,并将其保存在变量中,编辑一个属性值,然后返回put
。或者,必须从表单中的所有数据构建一个新对象,然后将该对象put
返回,以覆盖现有对象。因此,无论哪种方式,都必须将大对象移动并保存在数据库外部的某个位置。没有办法不拉出所有数据就只能更改数据库中的一个值。
查找密钥,反序列化对象和重新序列化对象的步骤以及所涉及的任何其他事项是否消耗了总时间的相当大的一部分,而与实际数据对象的大小无关?还是编辑包含单个属性对象的密钥与编辑包含1,000个属性的对象的密钥中的一个属性之间会有明显的区别?
如果存在很大差异,那么在编辑方面会节省时间,因为我几乎永远不会一次保存所有1,000个属性,而只是在完成时保存它们,例如在onchange
中事件。但是,在检索和显示侧,可能会在这1000个单独的键上打开光标或索引,以检索数据并填充HTML。我认为那将花费更多的时间来检索和保存一个大对象并使用它来填充HTML。因此,在加快保存速度与一次检索所有表单数据以更快地填充HTML之间将存在某种竞争。
我喜欢一个大对象方法,因为它更易于编码和遵循,但是只是想了解两者之间是否对用户有明显的区别。谢谢。
使用了一段时间后,我觉得我很愚蠢,因为应该考虑到这都是异步过程,所以我认为应该考虑保存而不是检索,这对用户体验的影响要小一些。快速地用新数据填充屏幕比快速保存屏幕更为重要。