使用NSUserDefault存储大量数据有啥缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NSUserDefault存储大量数据有啥缺点相关的知识,希望对你有一定的参考价值。

据量一大读取成本就高,敏感数据容易被破解,因为实际上是明文存在 plist 中的,所以建议用户安全相关的(如 token)尽量不要放在 UserDefault 中,即使要存也最好做一次加密再存,最好的方式是存在 Keychain 中。UserDefault 更适合存一些轻量的数据,如当前版本(可用来做检测更新以及展示欢迎页或其他逻辑)。

NSUserDefaults你每次同步都要全写,打开要全读。小数据连同大数据一起操作了,IO以及内存都不划算,况且还有解析、序列化的成本。大数据建议弄出去,别跟NSUserDefaults这种经常存取的弄一起。
参考技术A NSUserDefaults *mySettingData = [NSUserDefaults standardUserDefaults]; 创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数...

将 html 存储在数据库中以供使用有啥缺点?

【中文标题】将 html 存储在数据库中以供使用有啥缺点?【英文标题】:What are some cons of storing html in a database for use?将 html 存储在数据库中以供使用有什么缺点? 【发布时间】:2011-09-30 20:04:11 【问题描述】:

虽然搜索该主题很容易,但得出结论却并不容易。将 html 存储在数据库中以供使用有什么缺点?

【问题讨论】:

你能详细说明一下吗? html来自哪里?它是干什么用的? 我首先关心的是转义 Javascript,这样别人就无法制作恶意网页... 【参考方案1】:

HTML 是静态的,从数据库中查询数据会使用数据库资源;数据库资源通常在中度到重度使用的系统中受到更多限制,因此不要将 HTML 存储在数据库中,而是将其放在文件系统上,这样可以在不使用关键资源的情况下检索它。

【讨论】:

【参考方案2】:

这取决于数据库中 HTML 的使用。如果它是您仅作为 blob 访问的数据(这意味着您从不/很少查询 HTML 的内容),那么我认为在某些情况下这可能是一个好主意。那么问题本质上与“我应该在我的数据库中存储 xyz 格式的文件吗?”此类问题的答案取决于几件事:

    文件有多大?将它们存储在文件系统中,仅将它们的文件名/路径存储在数据库中会更有效吗? 您需要将数据复制到其他服务器吗?如果是这样,那么在数据库中存储原始文件可能比在 FS 上更容易,前提是您已经拥有数据库同步基础架构。 您的查询用途是什么?它们对数据库或文件系统存储更友好吗?

现在,如果您谈论的是存储经常需要查询的 HTML 数据,那将彻底改变游戏规则。

任何数据库规范化纳粹都会告诉你永远不要这样做。但是在某些情况下它可能有用。例如,如果您使用某种全文搜索引擎,您可能希望将其保存在数据库中——或者以全文搜索引擎使用的任何形式。

【讨论】:

【参考方案3】:

在最广泛的意义上,HTML 是一种文档标记语言,用于将数据结构化到文档中。另一方面,数据库应该包含按其逻辑关系组织的原始数据。文档使用格式并可能冗余地呈现数据,但真正的底层数据始终是固定的。因此,您应该尽可能存储最直接、最原始的数据形式,并使用查询语言本身为您的目的创建合适的视图,并以有意义的方式检索它,以及其他特定于输出的数据数据处理以生成文档。

当然,您可能希望缓存输出格式化操作的结果,您也可以选择将缓存存储在数据库中。那当然没问题。但是关于原始有效载荷数据,我总是会选择上述内容。

【讨论】:

以上是关于使用NSUserDefault存储大量数据有啥缺点的主要内容,如果未能解决你的问题,请参考以下文章

使用数据类型“文本”存储字符串有啥缺点吗?

将 html 存储在数据库中以供使用有啥缺点?

存储过程跟SQL语句比较,各有啥优点和缺点?

如何使用NSUserDefault存储数据

将存储过程与 Dapper 一起使用有啥缺点吗?

滚动存储在 NSUserDefault 中的 UITextField 上的 UITableView 更改数据