【问题标题】:Store/Backup Database into a file, differences of IndexeDB, WebSQL and SQLlite?将数据库存储/备份到文件中,IndexeDDB、WebSQL 和 SQLite 的区别?
【发布时间】:2013-11-21 21:35:36
【问题描述】:

我的问题是关于 IndexedDB vs. WebSQL vs. SQLite。不用解释它们的不同,我想知道的是:

这三个“数据库解决方案”是否允许存储其所有数据 到文件中?
(当然要反过来,在给定备份文件的情况下初始化其所有数据?)
.

背景

由于我已经做了一些研究,部分回答了这个问题,请允许我提供这个问题的背景信息:

SQLite

是的它确实允许在文件中存储和检索数据库)
我已经用 SQLite 做了一些工作。为此,我知道它实际上通过对文件的引用立即启动了数据库。备份就是简单地复制文件。恢复就是重写文件。

IndexedDB 和 WebSQL

??? 据我了解,数据库解决方案“生活在浏览器的 Javascript 领域”,并且我们不怎么处理文件。这是问题所在的一部分。如果我想将数据从两种解决方案中的任何一种导出到平面文件,或者说一个字符串变量表示,这可能吗?

这是一些我认为与之相关的问题:

这表明在 IndexedDBWebSQL 中没有简单的 toString()(存储数据库)方法和 FromSting()。 这确实是真的(并在此处的答案中得到了确认)并且这些数据库不容易备份和检索,这将是非常可悲的,我认为这是一个差距。没有备份功能的数据库,真的吗?!

【问题讨论】:

    标签: javascript database sqlite indexeddb web-sql


    【解决方案1】:

    目前,没有办法备份和恢复浏览器数据库。实现此目的的唯一方法是不断将后端数据库与浏览器数据库同步,从而跟踪浏览器上生成的数据的变化。

    【讨论】:

    • 让我们希望“目前,....”,这样的智能功能最终将被启用。事实是浏览器本身必须将数据存储在某个地方,并且很有可能不是一个非常分散的分散事物,而是一个文件或连续的内存部分。如果这变得标准化,那么就有可能使用这些数据作为一种方便的备份方式。我仍然对 IndexedDB 的缺点不太满意。甚至不能将这样的 sn 对象存储在 IndexedDB 对象库中:`var obj={prop1:12, prop2:function(){alert("hello world");}};
    【解决方案2】:

    无论合适与否,老家伙都会以老方式行事。究竟,浏览器数据库需要备份。客户端中的数据只是服务器数据切片的缓存副本。没有必要回来。如果您认为 IndexedDB(或 web sql 数据库)数据是持久的,您会很高兴知道,IndexedDB 数据属于浏览器数据的temporary class,这意味着 UA 可以在不提示用户或应用的情况下自行决定删除数据。

    如果您的应用处理浏览器数据而不是缓存副本,那么您就错了。

    【讨论】:

    • 感谢您的回答尝试。有一些见解,但我说实话。询问我是否可以备份或序列化所有数据库数据(在 IndexedDB 和 WebSQL 的情况下)最有意义,但因为数据可能会突然丢失。我非常愿意接受你的回答,如果这种风格不那么抱怨并且更倾向于告诉是否有办法将数据存储在 IndexedDB 等易失性存储中(这毕竟是原因)。再次阅读,我没有看到如何备份的有用答案,只是抱怨“你不应该备份”。对不起
    • Kyaw,我不同意你的看法。 IndexedDB 的用途远不止缓存。例如,here is a game I wrote。所有数据都存储在 IndexedDB 中。除了提供静态 JS/HTML/CSS 之外,没有服务器端组件。尽管如此,游戏仍然有效。到目前为止,人们已经玩了 1000 多个小时。它快速、简单且易于运行。没有用户帐户,没有下载等。这只有在 IndexedDB 才有可能。如果我的用户可以轻松备份或导出已保存的游戏,我会很高兴,但目前这是不可能的(或非常困难)。
    • 不错的游戏!我懂了。在浏览器数据库中,备份与同步回服务器是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2021-11-04
    • 2011-06-20
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多