【发布时间】:2012-12-30 04:30:43
【问题描述】:
blob 数据类型也可以存储视频数据吗?
【问题讨论】:
blob 数据类型也可以存储视频数据吗?
【问题讨论】:
不要将大型 BLOB 放入数据库中。将它们放在数据库文件旁边的文件系统中,然后将文件名或 URL 写入数据库。这将更快,将更有效地使用数据库,将 I/O 最小化(因为视频不必分解为数据库的分页方案,并且将使视频的管理更容易(一个文件的文件系统delete 比数据库要快ton,因为数据库必须删除一堆包含 BLOB 的页面。
将 BLOB 放入数据库效率极低,而且很可能还会耗尽应用程序的内存使用量(除非您找到了一种将数据从数据库流式传输到视频解码器的方法)。
它会产生额外的 I/O,使用更多的电源,并且当您在数据库中存储更多项目时,性能通常会下降。如果您将 BLOB 与数据库中的小数据混合在一起,您很容易得到一个病态碎片化的数据库。自动吸尘会有所帮助,但效率更低,I/O 更多,电池寿命也更长。
是的,有些数据库可以很好地处理 BLOB。他们与这个唯一标签是“iPhone”的问题完全无关。
请注意,“比文件系统更好地处理 BLOB 和流媒体”问题的答案几乎总是要求您使用正在读取/写入原始设备(硬盘驱动器上的分区)的数据库那不过是数据库内容。任何其他解决方案都必然是现有文件系统之上的一层,并且会产生成本,即使数据库供应商已经完成了所有的工程工作(而且是巨大的)以尽可能地匹配他们的数据库访问 I/O底层文件系统语义。
【讨论】:
blob 数据类型可用于存储任何二进制数据。具体来说,它代表 B(inary) L(arge) Ob(ject) (http://en.wikipedia.org/wiki/Blob_(computing))
【讨论】:
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
【讨论】:
我使用博客将视频存储在我的 SQLite 数据库中并且它运行良好,我在我的数据库中存储了超过 100 个视频,存储该视频需要时间
【讨论】: