【发布时间】:2013-01-23 18:06:54
【问题描述】:
对于我们的 Insights 平台之一,我们计划在后台生成汇总 SQLite3 数据库,并让它在浏览器上呈现为图表。目前,我们打算创建一个服务于数据需求的服务器端端点。
我们希望通过完全消除服务器端端点来进一步优化这一点。我们可以(从安全角度来看)直接在 S3 上公开 SQLite3 并让 javascript 模块读取并生成图表。
SQLite3 文件预计相当小——可能有 4-6 列,可能有 10-500 行数据,并且所有这些文件都只包含一个表。测试运行表明文件大小小于 15KB。 我们不打算在浏览器上编写或操作 SQLite3。 我们不需要将其作为 WebSQL 或 IndexedDB 表单缓存在浏览器上,但如果需要,我们可以使用它们。
从我的网络搜索中,我们找不到可以读取 SQLite3 文件并查询结果的 Javascript 库。如果您知道任何可以执行此操作的 javascript 库,请告诉我们。
另一方面,如果您认为我们不应该出于某种原因这样做,那么也请把它们作为 cmets/answers 扔掉,因为这是我们第一次尝试的东西,而且似乎有点过时-开箱即用,欢迎提供反馈!
【问题讨论】:
-
这不能通过 JavaScript 直接完成 - 但是,WebSQL/IndexedDB可能在下面使用 SQLite;但这是一个实现细节。 (在大多数情况下,SQLite 需要进程内访问 [本地] 文件系统。)
-
.. 我无法想象一个可以在 JavaScript 中读取 SQLite 数据(例如仅在内存数据中)的数据库引擎的完全重写会非常实用,但是I've been surprised before.
-
@pst 关于您的第一个评论,是的,我知道他们可能在下面使用 SQLite,但从我们这边来看,必须从服务器获取它并与 WebSQL/IndexedDB 同步似乎太麻烦了并且难以长期维持。
-
我认为[目前]浏览器上最好的选择是 WebSQL/IndexedDB,具体取决于目标浏览器。传输初始场景/数据应该不会花很长时间。或者,可以将所有内容作为适当的 [去] 规范化 JSON 发送回来 - JSON 最初可能更简单,但会最大限度地减少执行“临时”查询的能力,就像文档数据库一样。
-
除非您为不同的浏览器创建插件或扩展,否则您将无法做到这一点,sqlite 作为 web sql 提供,但很快就会被弃用,因为它被 IndexedDB(纯 JSON)取代基于数据库。根据我的经验,使用设备或客户端处理数据会产生不利影响,IE不支持这些,在移动设备上存在难以检测的错误,并且无法轻松升级。我去过那里,我们最终把所有东西都放在app-server上,将app server划分为api server,调用单个组件很容易而不是调试和支持客户端
标签: javascript sqlite