HTML 5 web SQL chrome支持,我应该使用webSQL吗?

时间:2012-08-30 06:59:40

标签: google-chrome web-sql indexeddb

在这里,我必须创建一个基于服务器的应用程序,该应用程序将在封闭的网络上运行并且特定于chrome。 我现在必须决定是否应该使用WebSQL(这肯定会节省我们的开发时间),或者我们应该使用IndexedDB(我们没有太多的知识)。

我怎样才能发现chrome在功能版本中会继续支持WebSQL? 或者我必须将我的客户限制为支持版本,这对长期业务关系不利。

请同时告诉我任何学习索引数据库的好教程或指南......

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

3 个答案:

答案 0 :(得分:1)

自2010年11月18日起,WebSql不再是维护standard by W3C

  

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

这是我维护的link to github项目,其中包含IndexedDB的基本功能示例,例如:创建数据库,插入,检索,更新和删除数据。我刚刚将其更新为适用于最新版本的Chrome和Firefox

答案 1 :(得分:0)

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

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

我认为这是因为WebSQL查询结果与JSON非常不同。使用NoSQL,它是如此愚蠢现在为什么我们需要定义TABLE,如果我们只想坚持一个JSON对象。与WebSQL相比,IndexedDB非常简单且重量非常轻。

答案 2 :(得分:0)

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

  

我怎样才能发现chrome将继续支持WebSQL   功能版本?

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

  

我应该使用webSQL吗?

简而言之,没有。自Deni Spasovski回答,关于deprecation of WebSQL still stands的一切。另一方面,IndexedDB为enjoys the support of all of the major browser vendors。所以选择后者。

我应该指出,两个数据库之间的决定不一定必须做出决定;人们可以简单地选择(或制作)利用客户端机器上可用数据库的库。

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真的由你自己维护:)。