Html5本地数据存储区,并跨设备同步

hvg*_*des 8 sql html5 json rich-internet-application nosql

我正在构建一个功能齐全的Web应用程序.当然,您可以在处于"离线"模式时保存到本地数据存储区.我希望能够跨设备同步,这样人们就可以在一台机器上工作,保存,然后再上另一台机器并加载他们的东西.

问题是:

1)将json存储在服务器上是一个坏主意吗?为什么要将服务器上的json解析为模型对象,当它将作为json传递回(其他)客户端时?

2)我不确定我是否想尝试使用NoSql技术.我没有打破json,因为现在数据库中唯一的关系是从用户帐户到他们的条目.除了用户数据之外,域模型将是一个String,它是json.建议欢迎.

从理论上讲,将来我可能想在服务器上进行一些处理或建立更复杂的关系.换句话说,现在我只是要保存json,但将来我可能想要一个更传统的关系系统.NoSQL方法会妨碍这个吗?

3)这有什么安全问题吗?以JS注入为例?从理论上讲,对于这个用例,用户至少现在无法输入任何内容.

先感谢您.

编辑 - Thanx的答案.我选择了我所做的答案,因为它详细介绍了NoSql的优点和缺点.

rwi*_*ams 3

服务器上的 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 有多容易。

链接

  1. CouchDB @ Apache
  2. 沙发一
  3. CouchDB 权威指南
  4. MongoDB

更新:

在查看了该应用程序后,我认为 CouchDB 不会是一个很好的客户端选项,因为您不会要求人们安装数据库引擎来玩数独游戏。也就是说,我仍然认为这将是一个很好的服务器端选项。如果您想将服务器 CouchDb 实例与客户端同步,您可以使用BrowserCouch之类的东西,它是用于本地存储的 CouchDB 的 JavaScript 实现。