代码之家  ›  专栏  ›  技术社区  ›  Gary

与indexedDB中的“扩展”游标和多个事务相关的内存使用率和效率

  •  1
  • Gary  · 技术社区  · 8 年前

    我有一个对象存储,它有一个内联键路径和两个索引。第一个索引标识一个投资组合,如“2”。第二个索引标识投资组合下的模块,例如“2.3”表示投资组合“2”的第3个模块。如“模块”内的“路径”和“数据”标识。当用户构建自己的模块时,各个对象被写入数据库。

    一种方法可以在单个事务中打开所需投资组合索引上的游标,以删除对象存储中具有该投资组合索引值的每个项。

    第二种方法,在我的特殊情况下,是使用指针。我有一个指针数组,它跟踪对象存储中每个数据对象的键路径。这是因为用户可以选择在包含100个项目的模块中的位置2插入新项。例如,我将插入项添加为2.3.101并将其放在指针的位置2.3.2到2.3.100,而不是单步执行特定模块的存储并将其更改为2.3.2到2.3.101项,因为更新指针比在数据库中移动大块数据要容易得多,方法是复制、删除它们,然后用新的密钥路径重新写入它们。

    因此,第二种方法可以是通过指针逐步删除所有数据对象,方法是通过存储在该组合指针中的键路径删除所有数据对象,并在单独的事务中执行每个删除操作。

    问题是:

    1. 如果是这样,那么由于每个事务只在一个数据对象上工作,那么采用第二种方法是否更好?或者,在同一个对象存储上重复打开小事务,然后按特定的键路径搜索每个对象,而不是只按有序索引逐行执行存储,这样做是否效率低下?

    在这种情况下,请假设一个大型投资组合的预期规模为50个模块,每个模块有100个对象,因此比较是通过游标处理5000个数据对象的单个事务与通过已知密钥路径一次对单个数据对象执行5000个单独事务之间的比较。

    也许,我想得太多了,因为我对它还不熟悉,所以我想赶紧学一堆东西。感谢您提供的任何指导。

    0 回复  |  直到 8 年前