可查询的 client-side 数据存储有哪些解决方案?这将用作临时缓存来执行基本操作,例如在客户端中对 user-selected 日期范围进行排序和聚合
我找到了一些有希望的候选人,但我不确定最好的选择是什么
-
Lawnchair:各种适配器商店的接口,具有作为插件实现的查询和聚合http://brian.io/lawnchair/
-
TaffyDB:http://www.taffydb.com/
-
LocalstorageDB:queryable localstorage github.com/knadh/localStorageDB
-
Minimongo:短暂的 mongo 实现,用作 Meteor 的缓存(http://docs.meteor.com/#meteor_collection)
还有一些其他 less-optimal 选项:
-
HTML5 localstorage/sessionstorage(需要在此基础上构建查询层...如 lawnchair 或 localstoragedb)
-
IndexedDB(浏览器兼容性)
-
谷歌齿轮(停产)
-
WebSQL(规范已停止)
我很想知道你对这些选择的经历/如果还有其他我错过了
4 回答
你可以将jStorage与JLINQ结合使用
您是否尝试过我的开源库https://bitbucket.org/ytkyaw/ydn-db/wiki/Home。它支持 IndexedDB,WebSQL 和 localStorage。查询是 NoSQL 样式,i.e,索引基键范围查询。多索引查询需要使用复合索引或密钥连接算法。目前有 SQL 的基本查询接口,随着时间的推移会更好。
Large-scale 网络应用程序,大多数是 CRM,在生产中使用库。
我编写了两个简单的 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'是您定义的命名空间。对于相同的 origin/domain,可以拥有任意数量的命名空间
希望它有帮助:)
我已经将草坪椅用于我工作的小型内部工具,整体经验非常积极。
我在这个过程中学到的东西:Douglas Crockford 的JSON-js cycle.js在 double-linked 对象上做 save/get 时解决了我的 stringify 问题。
有人在 grasschair github repo 上发布了一个问题,描述了同样的问题并给我带来了很多麻烦。 https://github.com/brianleroux/lawnchair/issues/105