sql - Html5 本地数据存储,跨设备同步

标签 sql json html nosql rich-internet-application

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

问题是:

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 安装在他们的机器上有多容易。

链接

  1. CouchDB @ Apache
  2. CouchOne
  3. CouchDB the definitive guide
  4. MongoDB

更新:

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

关于sql - Html5 本地数据存储,跨设备同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106961/

相关文章:

javascript - paper-drawer-toggle 在点击后不关闭菜单

从表中排除某些值的 SQL 查询

mysql - 外部无法登录MySQL服务器

javascript - 由于预检响应中存在 Access-Control-Allow-Methods,无法发送 PUT 请求

json - 创建用户帐户时正确的 HATEOAS 响应

java - Flying Saucer 无法识别 html 实体

sql - 如何在sql查询中选择前30个字符?

mysql - 从mysql中的选定行数中查找行的行索引

json - Odoo : Export res. 公司反对 JSON

html - 如何在THTMLViewer中显示图像?