【发布时间】:2011-01-29 07:09:04
【问题描述】:
我正在导入一个相当大的分层数据集。导入后的数据库总大小在 sqlite 中约为 270MB。我目前的方法有效,但我知道我这样做时会占用内存。例如,如果我使用 Zombies 运行,我的系统会死机(尽管如果我不使用该仪器,它会执行得很好)。我希望得到一些算法建议。
我有三个包含大约 400,000 条记录的分层表。最高级别有大约 30 条记录,下一级有大约 20,000 条,最后一级有余额。现在,我正在使用嵌套的 for 循环来导入。
我知道我正在创建一个不合理的大对象图,但我也希望序列化为 JSON 或 XML,因为我想将记录分解为可下载的块,以便最终用户导入点菜。我编写了用于序列化的代码,但我想知道如果我只有内存中的片段,是否可以序列化对象图。
这里的伪代码显示了 sqlite 导入的基本过程。我省略了不必要的细节。
[database open];
[database beginTransaction];
NSArray *firstLevels = [[FirstLevel fetchFromURL:url retain];
for (FirstLevel *firstLevel in firstLevels)
{
[firstLevel save];
int id1 = [firstLevel primaryKey];
NSArray *secondLevels = [[SecondLevel fetchFromURL:url] retain];
for (SecondLevel *secondLevel in secondLevels)
{
[secondLevel saveWithForeignKey:id1];
int id2 = [secondLevel primaryKey];
NSArray *thirdLevels = [[ThirdLevel fetchFromURL:url] retain];
for (ThirdLevel *thirdLevel in thirdLevels)
{
[thirdLevel saveWithForeignKey:id2];
}
[database commit];
[database beginTransaction];
[thirdLevels release];
}
[secondLevels release];
}
[database commit];
[database release];
[firstLevels release];
【问题讨论】:
标签: xml cocoa json sqlite import