在writeTransaction中添加/更新的对象数是否影响文件大小膨胀/版本固定?

时间:2018-04-08 19:29:30

标签: ios objective-c realm

上下文

我有3个RLMObjects:ModelA,ModelB,ModelC。 ModelA使用RLMArray与ModelB具有一对多的关系,而ModelB使用RLMArray与ModelC具有一对多的关系。我试图将可变数量的对象持久存储到Realm中(使用v3.3.1)。

目的:

我需要在一个写入事务中保留所有这些对象。我获得了30个ModelAs,3000个ModelB和18000个Model。

测试场景1:

我尝试组装所有这些模型,基本上会调用

RLMRealm *defaultRealm = [RLMRealm defaultRealm];
[defaultRealm writeTransaction: ^{
   @autoreleasepool
   {
      for (ModelA *myModelA in arrayOfModelA)
      {
         [defaultRealm addOrUpdateObject:myModelA];
      }
   }
}

这种情况会导致Realm文件大小达到大约19MB。

测试场景2:

我将每个对象反汇编到他们自己的数组中并尝试将每个集合保存在他们自己的writeTransaction中(这意味着我没有在对象之间创建任何关系):

RLMRealm *defaultRealm = [RLMRealm defaultRealm];
[defaultRealm writeTransaction: ^{
   @autoreleasepool
   {
      for (ModelA *myModelA in arrayOfModelA)
      {
         [defaultRealm addOrUpdateObject:myModelA];
      }
   }
}

[defaultRealm writeTransaction: ^{
   @autoreleasepool
   {
      for (ModelB *myModelB in arrayOfModelB)
      {
         [defaultRealm addOrUpdateObject:myModelB];
      }
   }
}

[defaultRealm writeTransaction: ^{
   @autoreleasepool
   {
      for (ModelC *myModelC in arrayOfModelC)
      {
         [defaultRealm addOrUpdateObject:myModelC];
      }
   }
 }

这导致领域文件大小约为9.4MB

问题:

我是否因为他们不再相互连接而在文件大小上看到如此显着的差异?或者Realm对版本固定的影响较小?两种情况之间有区别吗?什么是最小化版本固定的推荐设计模式,同时保持尽可能多的并发性?

由于

0 个答案:

没有答案