iOS SQLite还是1000个松散文件?

iOS SQLite还是1000个松散文件?,ios,sqlite,Ios,Sqlite,假设我有1000条大小可变的记录,从大约256字节到几个K。我想知道将它们放入sqlite数据库与在iOS上读取/写入1000个松散文件相比有什么好处?我不需要做任何操作,只需要通过一个键进行访问,我可以使用这个键作为文件名。似乎文件系统将是赢家,除非记录的数量变得非常大。如果您的系统是只读的,我会说文件系统显然是赢家:您只需要一个简单的二进制文件,也许还需要一个小索引来知道每条记录的起始位置。您可以将整个索引读取到内存中,然后根据需要从文件系统中获取记录,这样的性能对于任何RDBMS来说都是非

假设我有1000条大小可变的记录,从大约256字节到几个K。我想知道将它们放入sqlite数据库与在iOS上读取/写入1000个松散文件相比有什么好处?我不需要做任何操作,只需要通过一个键进行访问,我可以使用这个键作为文件名。似乎文件系统将是赢家,除非记录的数量变得非常大。

如果您的系统是只读的,我会说文件系统显然是赢家:您只需要一个简单的二进制文件,也许还需要一个小索引来知道每条记录的起始位置。您可以将整个索引读取到内存中,然后根据需要从文件系统中获取记录,这样的性能对于任何RDBMS来说都是非常难以匹配的

但是,由于您正计划写回数据,我建议您使用SQLite,因为它可能存在数据完整性问题


性能问题也不应低估:因为您的记录大小可变,在需要扩展记录的情况下,将数据写回可能很困难。此外,由于您在移动平台上,所以当程序在写入中间意外地被杀死时,您需要建立一些东西来避免数据损坏。SQLite负责这一点;您的代码必须构建与之类似的东西,否则可能会出现数据损坏问题。

如果您的系统是只读的,我会说文件系统显然是赢家:您只需要一个简单的二进制文件,也许还需要一个小索引来知道每条记录的起始位置。您可以将整个索引读取到内存中,然后根据需要从文件系统中获取记录,这样的性能对于任何RDBMS来说都是非常难以匹配的

但是,由于您正计划写回数据,我建议您使用SQLite,因为它可能存在数据完整性问题


性能问题也不应低估:因为您的记录大小可变,在需要扩展记录的情况下,将数据写回可能很困难。此外,由于您在移动平台上,所以当程序在写入中间意外地被杀死时,您需要建立一些东西来避免数据损坏。SQLite负责这一点;您的代码必须构建与之类似的东西,否则可能会出现数据损坏问题。

如果您的系统是只读的,我会说文件系统显然是赢家:您只需要一个简单的二进制文件,也许还需要一个小索引来知道每条记录的起始位置。您可以将整个索引读取到内存中,然后根据需要从文件系统中获取记录,这样的性能对于任何RDBMS来说都是非常难以匹配的

但是,由于您正计划写回数据,我建议您使用SQLite,因为它可能存在数据完整性问题


性能问题也不应低估:因为您的记录大小可变,在需要扩展记录的情况下,将数据写回可能很困难。此外,由于您在移动平台上,所以当程序在写入中间意外地被杀死时,您需要建立一些东西来避免数据损坏。SQLite负责这一点;您的代码必须构建与之类似的东西,否则可能会出现数据损坏问题。

如果您的系统是只读的,我会说文件系统显然是赢家:您只需要一个简单的二进制文件,也许还需要一个小索引来知道每条记录的起始位置。您可以将整个索引读取到内存中,然后根据需要从文件系统中获取记录,这样的性能对于任何RDBMS来说都是非常难以匹配的

但是,由于您正计划写回数据,我建议您使用SQLite,因为它可能存在数据完整性问题



性能问题也不应低估:因为您的记录大小可变,在需要扩展记录的情况下,将数据写回可能很困难。此外,由于您在移动平台上,所以当程序在写入中间意外地被杀死时,您需要建立一些东西来避免数据损坏。SQLite负责这一点;您的代码必须构建与之类似的内容,否则可能会出现数据损坏问题。

这取决于您使用它们的方式,但当此类文件的数量超过100个左右时,使用SQLite“blob”或char字段可能是更好的选择。这取决于您使用它们的方式,但当此类文件的数量超过100个左右时,使用SQLite“blob”或char字段可能是更好的选择。这取决于使用它们的方式,但使用SQLite“blob”当此类文件的数量超过100个左右时,或char字段可能是更好的选择。这取决于您使用它们的方式,但使用SQLite“blob”当此类文件的数量超过100个左右时,或字符字段可能是更好的选择。支持SQLite的另一个投票结果是,1000个文件比包含相同数据量的单个数据库文件占用更多磁盘空间,复制时间也要长得多。您的第一段可能是。@CL。测试不适用于我描述的情景。链接处的页面讨论了仍然存在SQLite表以及BLOB中的数据的情况。在这种情况下,通过加载适当的页面,您已经为访问数据库中的文件名“支付”了时间,因此当您的blob很小时,您可以以相对较小的开销获得它们。我所描述的情况是,整个索引结构,不管是什么,都非常小,以至于可以放在主内存中。这样,从文件读取的开销几乎为零