我正在构建一个功能齐全的网络应用程序。当然,您可以在“离线”模式下保存到本地数据存储。我希望能够跨设备同步,这样人们就可以在一台机器上工作,保存,然后在另一台机器上加载他们的东西。
问题是:
1) 将 json 存储在服务器上是个坏主意吗?为什么要将服务器上的 json 解析为模型对象,而只是将其作为 json 传递回(其他)客户端?
2) 我不确定我是否愿意为此尝试 NoSql 技术。我没有分解 json,因为现在数据库中唯一的关系是从用户帐户到他们的条目。除了用户数据之外,域模型将是一个字符串,即 json。欢迎咨询。
理论上, future 我可能想在服务器上做一些处理,或者建立更复杂的关系。换句话说,现在我只是保存 json,但将来我可能想要一个更传统的关系系统。 NoSQL 方法会妨碍这一点吗?
3) 这是否存在任何安全问题?例如 JS 注入(inject)?理论上,对于这个用例,用户无法输入任何内容,至少现在是这样。
提前谢谢你。
编辑 - 感谢您的回答。我选择了我所做的答案,因为它最详细地介绍了 NoSql 的优点和缺点。
最佳答案
服务器上的 JSON
在服务器上存储 JSON 并不是一个坏主意,特别是如果您使用 MongoDB 或 CouchDB 等 noSQL 解决方案。两者都使用 JSON 作为它们的原生格式(MongoDB 实际上使用 BSON,但它非常相似)。
noSQL 方法:假设 CouchDB 作为存储引擎
- 精通复制和并发处理
- 非常简单的 Rest API,使用 HTTP 与数据库对话。
- 将数据本地存储为 JSON,而不是在 blob 或文本字段中
- 强大的查看/查询引擎,可让您继续增加文档的复杂性
- 离线模式。如果互联网不可用,您可以直接使用 javascript 与 CouchDb 对话,并让整个应用程序继续在客户端上运行。
安全
确保您使用浏览器 JSON.parse 或安全的 Javascript 库 (json2.js) 解析 JSON 文档。
结论
我认为我建议在这里使用 noSQL 的原因,尤其是 CouchDB,是因为它会为您处理所有困难的事情。复制将很快完成设置。您不必担心并发性等问题。
也就是说,我不知道您正在构建哪种应用程序。我不知道您与客户的关系如何,以及让他们将 CouchDB 安装在他们的机器上有多容易。
链接
更新:
查看该应用程序后,我认为 CouchDB 不是一个好的客户端选项,因为您不会要求人们安装数据库引擎来玩数独游戏。也就是说,我仍然认为它是一个很棒的服务器端选项。如果您想将服务器 CouchDb 实例与客户端同步,您可以使用类似 BrowserCouch 的东西这是用于本地存储的 CouchDB 的 JavaScript 实现。
关于sql - Html5 本地数据存储,跨设备同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106961/