V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
love
V2EX  ›  Node.js

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

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

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