0

在这里,我必须制作一个基于服务器的应用程序,它将在封闭的网络上运行并且特定于 chrome。我现在必须决定是应该使用 WebSQL(这肯定会节省我们的开发时间)还是应该使用 IndexedDB(我们对此知之甚少)。

我如何才能知道 chrome 会在功能版本中继续支持 WebSQL?或者我必须将我的客户限制在支持版本,这不利于长期的业务关系。

还请告诉我学习索引数据库的任何不错的教程或指南...

我无法理解 w3c 停止支持 webSQL 的原因。有人知道吗??

4

3 回答 3

1

自 2010 年 11 月 18 日起, WebSql 不再是W3C 维护的标准

该文档位于 W3C 推荐轨道上,但规范工作已停止。规范陷入僵局:所有感兴趣的实现者都使用相同的 SQL 后端(Sqlite),但我们需要多个独立的实现来沿着标准化路径前进。

这是我维护的 github项目的链接,其中包含 IndexedDB 基本功能的示例,例如:创建数据库、插入、检索、更新和删除数据。我刚刚更新了它以在最新版本的 Chrome 和 Firefox 中工作

于 2012-08-30T13:29:39.737 回答
0

实际上,IndexedDB 会在您继续前进时节省您的时间。通过版本控制更改版本非常容易。

对于教程,我真的推荐我自己的http://dev.yathit.com/ydn-db/starting/query.html是教程 javascript indexeddb 包装器,但是你可以很快理解和感受它。在 chrome、safari 和 firefox 上阅读,打开开发控制台并复制并粘贴代码片段,稍作更改。了解关键范围的重要性非常重要。关于密钥生成和过滤光标迭代有一些技巧。

我认为这是因为 WebSQL 查询结果与 JSON 非常不同。使用 NoSQL,如果我们只想持久化 JSON 对象,为什么还要定义 TABLE 是多么愚蠢。与 WebSQL 相比,IndexedDB 非常简单且重量非常轻。

于 2012-09-03T15:42:43.207 回答
0

我迟到了几年,但认为回答那些尚未直接回答的 OP 问题会有所帮助,并添加一些有用的建议:)。

我如何才能知道 chrome 会在功能版本中继续支持 WebSQL?

据我所知,没有办法确定给定的浏览器供应商何时会放弃对技术或 API 的支持。但是,供应商通常会在他们这样做之前一段时间(大约几个月或几年)通知开发人员。

我应该使用 webSQL 吗?

简而言之,没有。由于 Deni Spasovski 的回答,关于弃用 WebSQL 的一切仍然存在。另一方面,IndexedDB享有所有主要浏览器供应商的支持。所以选择后者。

然而,我应该指出,两个数据库之间的决定并非必须做出的决定。可以简单地选择(或制作)一个库,该库利用客户端计算机上可用的任何数据库。

BakedGoods与这里已经建议的此类库在几个方面有所不同;最相关的是,它允许明确指定要使用的存储类型,从而允许开发人员在决策过程中引入其他因素(例如性能特征)。

有了它,在支持的任何一种数据库类型中执行存储操作都是...

...为两种数据库类型指定适当的操作选项和等效配置:

//If the operation is a set(), and the referenced structures 
//don't exist, they will be created automatically.

var webSQLOptionsObj = {
    databaseName: "Example_DB",
    databaseDisplayName: "Example DB",
    databaseVersion: "",
    estimatedDatabaseSize: 1024 * 1024,
    tableData: {
        name: "Main",
        keyColumnName: "lastName",
        columnDefinitions: "(lastName TEXT PRIMARY KEY, firstName TEXT)"
    }, 
    tableIndexDataArray: [name: "First_Name_Index", columnNames: "(firstName)"]
};

var indexedDBOptionsObj = {
    databaseName: "Example_DB",
    databaseVersion: 1,
    objectStoreData: {
        name: "Main",
        keyPath: lastName,
        autoIncrement: false
    },
    objectStoreIndexDataArray: [
        {name: "First_Name_Index", keyPath: "firstName", unique: false, multiEntry: false}
    ],
};

var optionsObj = {
    conductDisjointly: false, 
    webSQL: webSQLOptionsObj, 
    indexedDB: indexedDBOptionsObj
};

...并进行操作:

bakedGoods.set({
    data: [
        {value: {lastName: "Obama", firstName: "Barack"}}, 
        {value: {lastName: "Biden", firstName: "Joe"}}
    ],
    storageTypes: ["indexedDB", "webSQL"],
    options: optionsObj,
    complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});

其简单的界面和无与伦比的存储设施支持是以缺乏对某些存储设施特定配置的支持为代价的。例如,它不支持在具有多列主键的 WebSQL 表中进行存储操作。

因此,如果您大量使用这些类型的功能,您可能想看看其他地方。

哦,为了完全透明,BakedGoods 确实由您维护 :)。

于 2016-07-10T18:52:34.233 回答