领域文件的大小如何发展?

时间:2014-12-10 12:00:07

标签: ios objective-c realm

领域文件的大小如何发展?

首先:我有一个包含多个属性的realm文件,其中一个是860个条目的数组,每个数组条目又包含几个属性。 一个array-property表示条目的名称。

我观察到以下内容:

  • 如果name-property是“Criteria_A1”(直到“Criteria_A860”) - 那么领域文件是1.6 MB大
  • 如果name-property是“A1”(直到“A860”) - 那么领域文件只有786 kB大

为什么array-name-property中的额外字母使得realm文件更大?

第二个观察结果:

  • 如果我添加更多对象(每个对象都有一个包含860个条目的数组),那么文件大小再次变大1.6MB(无论我添加多少个对象;再次猜测大小为三倍的临界值...或者我错了?)。

在我看来,只要添加了一些东西(或者有更多字母的属性或添加了一个对象),786 kB的realm文件的大小就会翻倍。为什么realm-file在一个临界值处加倍,并且在添加更多内容的情况下不会线性增加?

感谢您澄清此事。

1 个答案:

答案 0 :(得分:5)

很好地观察到了。 :-) Realm文件从大约4k开始,一旦用完了可用空间,它的大小将增加一倍。它持续翻倍直到128M,然后再增加128M。

将文件加倍并且不仅仅是线性增长的原因仅在于性能。这是动态数据结构的常用算法,可以保持加倍。

您可以使用下面提供的方法编写压缩副本,删除文件中的所有可用空间。如果您不再添加新数据,想要发送静态数据库或想要通过网络发送文件,这将非常有用。

提到的那些阈值和算法是当前的,但可能会在将来的版本中发生变化。

希望这澄清一下?