【问题标题】:Blob Data Type?Blob 数据类型?
【发布时间】:2012-12-30 04:30:43
【问题描述】:

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

【问题讨论】:

    标签: iphone ios sqlite


    【解决方案1】:

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

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

    将 BLOB 放入数据库效率极低,而且很可能还会耗尽应用程序的内存使用量(除非您找到了一种将数据从数据库流式传输到视频解码器的方法)。

    它会产生额外的 I/O,使用更多的电源,并且当您在数据库中存储更多项目时,性能通常会下降。如果您将 BLOB 与数据库中的小数据混合在一起,您很容易得到一个病态碎片化的数据库。自动吸尘会有所帮助,但效率更低,I/O 更多,电池寿命也更长。


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

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

    【讨论】:

    • 此外,将它们存储为 blob 的优势几乎不存在。对于具有庞大跨系统数据库的企业系统中的这种 blob 存储可能存在有效的论据,这些数据库需要疯狂的备份方案和全局数据复制等等——也许——但这些事情在 iOS 设备上都不是真的。跨度>
    • FWIW,有一个 DBMS 可以很好地存储视频数据,供应商 (FrontBase) 与 quicktime 团队合作使其顺利预取数据。
    • 您的答案取决于实现。 SQLite 很可能不擅长 BLOB,但很容易构想出一个不擅长的数据库,并且在数据库中存储数据有明显的优势。例如,更简单的更新和对复制的内置支持。您需要根据您正在使用的实现和您的具体要求做出判断。请记住,您的文件系统也可以被视为数据库,并且在碎片方面存在完全相同的问题。
    • 鉴于唯一的标签是“iPHONE”,我看不到大多数这些 cmets 的相关性......
    • 您的答案的标题是“在 SQLite 数据库中存储视频是一个可怕的想法。不要这样做”,然后您继续“不要将大型 BLOB 放入数据库中”。所以我认为你可以原谅一些读者认为这是普遍情况,尤其是在没有其他信息的情况下。所以我认为这绝对是相关的,你的答案更适合被提及。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      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

      【讨论】:

        【解决方案4】:

        我使用博客将视频存储在我的 SQLite 数据库中并且它运行良好,我在我的数据库中存储了超过 100 个视频,存储该视频需要时间

        【讨论】:

        • 能否请您简要介绍一下以 blob 数据类型存储视频和图像的内容?
        猜你喜欢
        • 2015-06-04
        • 2016-02-07
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 2020-10-16
        • 2012-10-23
        • 1970-01-01
        • 2010-12-10
        相关资源
        最近更新 更多