node-sqlite3 彻底装不上了,大家有替代方案吗
发布于 7天前 作者 ChiChou 384 次浏览 来自 问答

无论是 npm install 还是 cnpm,装 sqlite3 模块的时候都会坚持不懈地下载一个 aws 的压缩包…… 由于某些众所周知的原因这个文件是死活下载不了了,尝试加 --proxy 加代理总会遇到这个: Error: tunneling socket could not be established, cause=connect ECONNREFUSED

投错胎选了 hard 模式,头痛不已啊

还有类似 sqlite3 绿色小巧,支持 nodejs/iojs 的数据库备选方案吗?

13 回复

LZ 已经做好了把数据库一次性给载入内存字典,直接 hash lookup 的心理准备…

pouchdb leveldb

NeDB 纯js无任何native依赖,性能绝对超过同类数据库很多乃至很多时候比MongoDB要快,API基本兼容MongoDB,缺点是所有数据会都在内存中保留(可选开启同步文件数据库数据不会丢失),不适合太大的数据量 TingoDB 和NeDB类似也是纯js数据库,但是与之不同的是TingoDB试图完全兼容MongoDB绝大数API,所以用TingoDB写出来的程序在将来数据量大需要迁移到MongDB时可基本不改代码无缝切换,另外TingoDB不会把所有数据写入内存中(有可选项可开启内存模式不写入磁盘,方便测试开发使用),性能略低于NeDB EJDB Native C编写的嵌入式数据库,采用Tokyo Cabinet存储格式,速度快于TingoDB慢于NeDB,缺点是缺乏一些常见的数据格式如date等,最近维护看着不是很活跃

如果楼主非要用sqlite3也不无办法,fork一份node-sqlite3然后把那个安装脚本中要下载的先下下来指向一个可以访问的地址,然后 npm --save i sqlite3@git://github.com/your-repo/node-sqlite3.git

@andyhu 折腾一大天没装上依赖有点恼火,没说清楚场景。 数据量很小,只是数万条记录的单表,而且筛选条件非常简单,一次只取一条记录, 所以如果这个模块找不到好的替换我会考虑用 hash 的方案。 传统的 RDBMS 其实也够用,但是想尽量避免服务器环境上折腾太多东西了。

现在看样子 NeDB 的确是个非常好的替代品。非常感谢!

看此贴我只想说没有梯子的程序员都不是真正的程序员

@gloomyzerg

尝试加 --proxy 加代理总会遇到这个:Error: tunneling socket could not be established, cause=connect ECONNREFUSED

@ChiChou 不知道你用的是什么代理 你看看你有没有导入证书

网络不好, 不能怪代码吧… 先翻墙, 再更新, 应该就没问题了.

试试这个吧,我昨天也安装出错过,通过下面的代码解决的,做做小demo用sqlite很方便。

npm install node-gyp -g

@meteormatt 后来直接从 git 仓库安装了,编译不过,跟我这边的 V8 引擎(0.11.x)不兼容……

感谢各位,已找到方案,沉了这帖吧……

回到顶部