V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
forbreak
V2EX  ›  问与答

求各位大大推荐一个 key- value 数据库。

  •  
  •   forbreak · 2016-11-03 16:22:52 +08:00 · 3233 次点击
    这是一个创建于 2976 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求推荐一个 key - value 数据库,数据量可能会上亿。会做查询和删除操作。 顺便再问一下 有没有支持这种数据结构的。

    原始的数据如下:
    (key1->key2->key3)->value
    根据上面 3 个 key 加起来才可以查到 value 
    
    add key4
    添加一个 key 的时候变成下面这样
    (key1->key2->key3->key4)->value     
    
    remove key3 
    删除一个 key 的时候变成这样     
    (key1->key2->key4)->value
    
    可以很快速的变化 key 。
    
    第 1 条附言  ·  2016-11-03 17:01:58 +08:00
    一般情况下, value 是不会变化的。所以不会有更新操作。
    16 条回复    2016-11-03 20:49:21 +08:00
    fredcc
        1
    fredcc  
       2016-11-03 16:38:57 +08:00
    直接把 key1-key4 拼接起来做 key 会有问题么
    alittletrain
        2
    alittletrain  
       2016-11-03 16:39:19 +08:00
    mysql 5.7 支持 json
    peter999
        3
    peter999  
       2016-11-03 16:40:25 +08:00
    pg 也是选项之一
    murmur
        4
    murmur  
       2016-11-03 16:42:36 +08:00
    你这个属于很典型的给 item 打 tag 的功能 这种东西感觉用 lucene 这种倒排索引还快一些
    另外,任何数据库删除都是个需要考虑的功能,毕竟涉及重建索引
    Kilerd
        5
    Kilerd  
       2016-11-03 16:50:17 +08:00
    没看懂,大概就是类似指针这样连来连去??
    forbreak
        6
    forbreak  
    OP
       2016-11-03 16:59:53 +08:00
    感谢回答,连起来没有问题,如果 key 改变的时候需要数据全部删除在入一遍。 如果有这种直接可以去掉的当然更好点了。
    forbreak
        7
    forbreak  
    OP
       2016-11-03 17:04:44 +08:00
    @Kilerd 只是 key 是有多个不同的值组合成的。 然后可能 key 的值会突然去掉 组合中的某一个值。 或者 集体增加一个值。 value 不变。
    forbreak
        8
    forbreak  
    OP
       2016-11-03 17:05:25 +08:00
    @fredcc 感谢回答,连起来没有问题,如果 key 改变的时候需要数据全部删除在入一遍。 如果有这种直接可以去掉的当然更好点了。
    binux
        9
    binux  
       2016-11-03 17:08:14 +08:00 via Android
    你这样改来改去,要保证 key 唯一吗
    forbreak
        10
    forbreak  
    OP
       2016-11-03 17:18:01 +08:00
    @binux 要保证唯一,并不是频繁的更改,只是会存在这种更改。想保证改动的过程时间缩短而已。
    mfu
        11
    mfu  
       2016-11-03 17:50:48 +08:00
    Redis 吧,序列化到硬盘。
    mfu
        12
    mfu  
       2016-11-03 17:51:25 +08:00
    没看到『数据量可能会上亿』……
    fredcc
        13
    fredcc  
       2016-11-03 18:30:40 +08:00
    @forbreak 删除再写入对于 key-value 数据库不一定是不可接受的方式吧
    MiskoLee
        14
    MiskoLee  
       2016-11-03 18:40:13 +08:00
    这不符合目前主流的 KV 数据库定义啊( Key 一般都是一个 String )。
    所以,这个轮子就是自己造了。

    ====

    自己设计一个 KV 数据库( key 是一个 List )。
    这样才可以在语义上满足题目的需求。
    crytis
        15
    crytis  
       2016-11-03 20:41:29 +08:00 via iPhone
    @mfu redis 上亿数据不行吗? redis 适合的数据量大约是多少?
    mfu
        16
    mfu  
       2016-11-03 20:49:21 +08:00 via iPad
    @crytis 不是不行,内存空间可能会占得多些。我没存过那么大的数据量。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   957 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:34 · PVG 06:34 · LAX 14:34 · JFK 17:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.