blob数据类型也可以存储视频数据吗?
答案 0 :(得分:15)
不要将大型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个视频,需要时间来存储该视频