Blob数据类型?

时间:2010-12-06 06:08:20

标签: iphone ios sqlite

blob数据类型也可以存储视频数据吗?

4 个答案:

答案 0 :(得分:15)

在SQLite数据库中存储视频是一个可怕的想法。不要这样做。

不要将大型BLOB放入数据库中。将它们放在数据库文件旁边的文件系统中,然后将文件名或URL写入数据库。这将更快,将更有效地使用数据库,将I / O最小化(因为视频不必被分解为数据库的分页方案,并且将使视频的管理更容易(文件系统delete的文件系统 ton 比必须删除包含BLOB的一堆页面的数据库更快。

将BLOB放入数据库是非常低效的,而且很可能会破坏你的应用程序的内存使用(除非你已经想出了一种将数据从数据库传输到视频解码器的方法)。

它将产生额外的I / O,使用更多的功率,并且当您在数据库中存储更多项目时,性能通常会变得很糟糕。如果要将BLOB与数据库中的小基准混合使用,则很容易最终得到病态分散的数据库。自动吸尘将有所帮助,但它的效率更低,更多的I / O和更长的电池寿命。


是的,有数据库可以很好地处理BLOB。它们与这个唯一标记为“iPhone”的问题完全无关。

请注意,问题“处理BLOB和流媒体比文件系统更好”的答案几乎总是要求您使用正在读取/写入原始设备的数据库 - 硬盘上的分区这只不过是数据库内容。任何其他解决方案都必然是现有文件系统之上的一个层,并且即使数据库供应商已完成所有工程工作(并且它是巨大的)以尽可能地匹配它们的数据库访问I / O,也会有成本。底层文件系统语义。

答案 1 :(得分:2)

blob数据类型可用于存储任何二进制数据。具体来说,它代表B(inary)L(arge)Ob(ject)(http://en.wikipedia.org/wiki/Blob_(computing)

答案 2 :(得分:-1)

NSData *imageData;
NSURL *imageURL = [[NSURL alloc] initWithString:[[videolistArray objectAtIndex:[number intValue]] valueForKey:@"video"] ];
if (imageURL) {
    imageData = [NSData dataWithContentsOfURL:imageURL];
}

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

if (!documentsDirectory) {
    NSLog(@"Documents directory not found!");
}
NSArray *myWords = [[NSString stringWithFormat:@"%@",[[videolistArray objectAtIndex:[number intValue]] valueForKey:@"video"]] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"/"]];

NSString *appFile = [documentsDirectory stringByAppendingPathComponent:[myWords lastObject]];

[imageData writeToFile:appFile atomically:YES];

在此我将视频存储在iphone文档目录中,只需将其插入SQLite数据库w

即可

答案 3 :(得分:-2)

我使用博客在我的SQLite数据库中存储视频及其工作正常,我在我的数据库中存储了超过100个视频,需要时间来存储该视频