【问题标题】:Queryable client-side storage [closed]可查询的客户端存储
【发布时间】:2013-02-03 11:36:14
【问题描述】:

对于可查询的客户端数据存储有哪些解决方案?这将用作临时缓存来执行基本操作,例如在客户端中对用户选择的日期范围进行排序和聚合

我找到了一些有前途的候选人,但我不确定最好的选择是什么

还有其他一些不太理想的选项:

  • HTML5 localstorage/sessionstorage(需要在此之上构建一个查询层...如草坪椅或 localstoragedb)
  • IndexedDB(浏览器兼容性)
  • Google 齿轮(已停产)
  • WebSQL(规范已停止)

我很想知道您对这些选项的体验/是否还有其他我错过的选项

【问题讨论】:

  • 您知道这些库只是您认为“次优”解决方案的包装。您只需要选择最适合您的包装即可。
  • 我意识到 - 这就是为什么我要询问人们对这些项目的体验,希望不要重新发明轮子(或者可能遗漏一些我还没有完全找到的东西)
  • 为什么这个问题因为没有建设性而被关闭?超级有用
  • 您还应该查看 ForerunnerDB,它是一个维护良好的现代 JS 数据库,具有易于使用的查询语言。支持视图、连接、子查询等:github.com/Irrelon/ForerunnerDB

标签: javascript html local-storage web-sql lawnchair


【解决方案1】:

我曾将草坪椅用于我工作的一些小型内部工具,总体而言体验非常积极。

我在此过程中学到的东西:Douglas Crockford 的 JSON-js cycle.js 解决了我在保存/获取双链接对象时的字符串化问题。

有人在草坪椅 github repo 上发布了一个问题,描述了同样的问题,让我省去了很多麻烦。 https://github.com/brianleroux/lawnchair/issues/105

【讨论】:

  • 它查询的方式是在哈希表上重复...它对 DB > 10K 行没有用
  • 很好,感谢您的反馈。尽管最初的问题提到了对用户选择的日期范围进行排序和聚合。我想不出这种用例会达到 10K 记录阈值的场景。
【解决方案2】:

你有没有尝试我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home。它支持 IndexedDB、WebSQL 和 localStorage。查询是 NoSQL 风格,即索引基键范围查询。多索引查询需要使用复合索引或键连接算法。目前有基本的SQL查询接口,随着时间的推移会更好。

大型网络应用,其中大部分是 CRM,在生产中使用该库。

【讨论】:

  • 这看起来很有趣!当它使用localStorage而不是IndexedDB时如何处理键范围查询和SQL?
  • localStorage 键范围查询使用内存 AVL 树。它从 0.4.9 版本开始实施。 localStorage 的 SQL 尚未实现。
【解决方案3】:

我编写了两个简单的 API 来处理 Storage API。 其中之一是一个包装器,可以轻松使用本地和会话存储:https://github.com/chambs/minidb/

类似:

minidb.local.set('name', 'Willian');

minidb.local.get('name'); //gives you "Willian"

minidb.session.set('userData', {id:333, name: 'Joseph'});

minidb.session.get('userData'); //gives that object

另一个是基于 localStorage API 的命名空间(无会话)。基本上你可以添加分组到命名空间的“行”,这样你就可以根据这些命名空间分离数据:https://github.com/chambs/zonjs

类似:

zon('user').insert({name: 'Willian', email: 'o.chambs@gmail.com'});

zon('user').del('8739874397494');

其中 'user' 是您定义的命名空间。 对于同一个源/域,您可以拥有任意数量的命名空间

希望对你有帮助:)

【讨论】:

    【解决方案4】:

    您可以将jStoragejLinq 结合使用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2012-09-19
      • 2011-07-30
      • 1970-01-01
      • 2021-05-03
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多