首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
宝塔
V2EX  ›  Node.js

100w 条只读 kv 数据想在 node 里查询,有什么最简便的方法吗?

  •  
  •   love · 65 天前 · 3360 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。
    level 的 kv 数据库非多进程,所以没法用,第二个进程会出错。
    sqlite 有点杀鸡用牛刀了,我只是一个查一个 kv。
    做成 json 文件加载到内存,简单是简单了,不过多进程 node 用太伤内存了。

    有纯 js 的最简单的多进程可以用只读文件 kv 数据库吗?
    12 回复  |  直到 2019-09-21 14:48:21 +08:00
        1
    zy445566   65 天前 via Android
    leveldb 用单进程 node 封装成一个服务,然后你多进程的 node 去调用不就好了。
        2
    zy445566   65 天前 via Android
    这样不仅仅支持多进程的 node 可能在一台机器上调用,就算你是多机器。也可以调用到这个 leveldb 的服务。后续如果做到要搞多机 leveldb 服务,到时候做个同步简单一点。
        3
    zy445566   65 天前 via Android
    几年前我还做过一个 leveldb 的服务,可以给你参考下,理论上可以支持多语言和多机同步。不过毕竟是几年前写的,可能也比较青涩,线上最好别使用,但参考实现应该没问题。https://github.com/zy445566/vertical
        4
    iPhoneXI   65 天前
    redis 不行吗
        5
    love   65 天前
    @iPhoneXI redis 还不如直接 json 读到内存简单呢,一个性质
        6
    love   65 天前
    @zy445566 我是想找个简单的办法呢,不需要太多功能,只是当个只读字典用,实在不行 sqlite 也比搞成分布的简单
        7
    podel   65 天前
    @love redis 不需要你去解决多进程问题啊。
        8
    love   65 天前
    @podel 嗯对。我忘说了一点,我也不想全加载到内存,即使只在 redis 加载一份,因为小鸡只有 1G 内存不想白浪费 200M 内存。
        9
    love   65 天前
    当然还有个办法是直接存成无数小文件,简单,但似乎太浪费 inode 了,小鸡整个盘总共才 100 多 w inode
        10
    xcstream   59 天前
    机器配置只有 1G 为何要多进程呢
        11
    love   59 天前
    @xcstream 有二个核不用白不用,毕竟 Node 是单线程的
        12
    love   59 天前
    最终还是用 sqlite 了,也不太麻烦
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1801 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 16:32 · PVG 00:32 · LAX 08:32 · JFK 11:32
    ♥ Do have faith in what you're doing.