有多个可用的JavaScript ORM 活性 Data.js: http : //datajs.codeplex.com/documentation – 数据查询库 JayData: http ://jaydata.org/ – 活跃,数据build模,查询,caching Breeze.js: http ://www.breezejs.com/ – 活跃,数据build模,查询,caching 持久性:http: //zef.me/2774/persistence-js-an-asynchronous-javascript-orm-for-html5gears – asynchronous,浏览器和客户端支持 待用 JazzRecord: http : //www.jazzrecord.org/ – 以Ruby为中心,自2011年以来一直处于非活动状态 Impel: http : //impel.simulacre.org/ – 两年内似乎没有活跃 Active.js http://www.activejs.org/ – 3年内似乎没有活跃 Upshot.js: https ://nuget.org/packages/Upshot:不再支持 Aptana: http : //blog.fedecarg.com/2009/02/16/activerecord-javascript-orm/ – Rails,网站不会将活动显示为ORM 那么就有属于特定MVC框架的ORM。 Sproutcore: http : //www.sproutcore.com/ 主干: […]
问题: 我需要一个设备不可知(如HTML5)解决scheme,以在手机或平板电脑types的设备(例如iOS / Android)上存储和查询250,000多行数据。 这个想法是我有人在偏远地区工作,没有任何手机数据连接,他们需要对这些数据运行查询和离线编辑。 部分将基于地理位置,所以如果他们所在地区有资产(使用GPS),那么它将显示这些资产,并让它们被编辑。 当他们回到办公室时,他们可以将数据同步到办公室服务器。 我从Web标准的angular度来看待这个问题的原因基本上是通过在HTML5中编写一次而节省金钱和时间,然后跨多个平台工作,而不是在Objective C和Java中编写两次。 另外,如果你写的东西是平台不可知的,那么你就不会被locking在船上,而当每个人都移动到新船上的时候,也不会停下来。 我们有一个为Windows Mobile 5编写的类似的应用程序,现在没用了,因为这个平台已经死了。 设备上的离线数据库需要是: 快(2秒以下的响应) 可能执行连接并与其他能够查询数据库的表有关系 select一定范围内的数据或标准,例如基于GPS读数的x和y坐标。 选项: HTML5本地存储: 对于less量数据<5,000个键/值,如果将其转换为JSON,甚至可以将数组/对象存储在其中。 缺点: 即使在高端机器上,对于超过10,000行,浏览器也会慢慢爬行。 无法对数据执行复杂的查询以提取所需的数据,因为您必须迭代整个存储并手动search。 可以存储的存储量限制 Web SQL数据库: 满足要求。 快速运行250,000行查询(1-2secs) 可以创build复杂的查询,连接等 由Safari,Android和Opera支持,因此可以在iOS和Android设备上运行 缺点: 截至2010年11月已弃用 跨目录攻击的安全漏洞 不是一个真正的问题,因为我们不会共享主机 IndexedDB的: 除索引外,键/值对象存储与本地存储类似。 缺点: 慢速运行一个查询200,000行(15-18secs) 无法运行复杂的查询 无法与其他表连接 不受主要手机或平板电脑设备的支持,例如iPad / Android 标准不完整 这留下了实现已过时的Web SQL方法的唯一select,该方法可能只能工作一年左右。 IndexedDB和本地存储目前无法使用。 我不确定Mozilla和Microsoft如何获得Web SQL数据库标准,以及W3C为什么会这样做。 据说他们之间有77%的桌面浏览器市场。 在先进的移动设备上,Mozilla和微软几乎没有影响,因为Safari,Opera和Android的市场份额超过90% 。 如何Mozilla和微软可以决定哪个标准应该在移动市场中使用,哪个离线存储最有可能被使用,这没有任何意义。 在Mozilla的评论中,他们为什么要使用IndexedDB而不是“开发人员美学”,他们不喜欢在JavaScript中运行SQL的想法。 我不买它。 […]