forbreak
V2EX  ›  问与答

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

  •  
  •   forbreak · Nov 3, 2016 · 4039 views
    This topic created in 3486 days ago, the information mentioned may be changed or developed.

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

    ====

    自己设计一个 KV 数据库( key 是一个 List )。
    这样才可以在语义上满足题目的需求。
    crytis
        15
    crytis  
       Nov 3, 2016 via iPhone
    @mfu redis 上亿数据不行吗? redis 适合的数据量大约是多少?
    mfu
        16
    mfu  
       Nov 3, 2016 via iPad
    @crytis 不是不行,内存空间可能会占得多些。我没存过那么大的数据量。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 20:10 · PVG 04:10 · LAX 13:10 · JFK 16:10
    ♥ Do have faith in what you're doing.