千万级的value怎么保持value值的唯一性 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复粘贴 AI 生成的内容
pyKun
V2EX    程序员

千万级的value怎么保持value值的唯一性

  •  
  •   pyKun 2013-05-25 10:38:10 +08:00 5485 次点击
    这是一个创建于 4527 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1000W到5000W,value的值要保持一致性
    如果要用数据库什么的,其实value的值是有存的地方了,所以要另找一个数据库来保证这个唯一性应该会有轻便的方法,所以求问
    跪求推荐方案
    16 条回复    1970-01-01 08:00:00 +08:00
    xhat
        1
    xhat  
       2013-05-25 11:14:52 +08:00   1
    我当时3kw采用的方法是对value进行hash,把hash值写入memcache。每次有新数据,hash后在memcache里面验证唯一性。
    DaniloSam
        2
    DaniloSam  
       2013-05-25 11:20:13 +08:00
    第一反应是DOM属性,想着千万级的,妈的页面得多大

    后来反应过来是我二逼了
    ipconfiger
        3
    ipconfiger  
       2013-05-25 11:24:28 +08:00
    数据库不是有唯一性索引的么?
    bitsmix
        4
    bitsmix  
       2013-05-25 11:25:32 +08:00 via iPhone
    @DaniloSam 你这个小朋友。。
    pyKun
        5
    pyKun  
    OP
       2013-05-25 12:08:16 +08:00   1
    @xhat
    我也想到过memcached,但是memcached不是高可用的,挂了一个node,那个node上的memchached对应的数据怎么被验证唯一性呢?
    @ipconfiger
    已经存了,但不在一个表里,如果直接读表,脚要遍历好几个表,或者再做一个数据库,二者都不是我想要的
    egen
        6
    egen  
       2013-05-25 12:30:59 +08:00   1
    @pyKun 可以看看 mongodb 的 object id 生成算法,感觉可以满足你的要求
    VYSE
        7
    VYSE  
       2013-05-25 13:39:03 +08:00   1
    把所有VALUE DUPLICATE到ISAM引擎中,千万级耗费空间很少,而且专门一个线程插入效率非常高
    likuku
        8
    likuku  
       2013-05-25 13:48:40 +08:00   1
    @pyKun memcached 有日本人作的双向同步补丁,可以弄多个机器跑memcached保持多个读写同步,挂掉一个,重开一个会自动同步。
    Mutoo
        9
    Mutoo  
       2013-05-25 14:51:35 +08:00   3
    Bloom Filter 可以非常快[O(1)]进行唯一性检查,但是由于hash的缺陷无法做到100%

    http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html
    Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。
    xhat
        10
    xhat  
       2013-05-25 20:15:36 +08:00   1
    生产用的话直接用redis即可。若没条件可以用其他kv数据库替代

    @likuku 提到的方法简直对效率要求到了极致。。

    @mutoo bloom filter效率确实高,但牺牲了唯一性,有小概率重复,应该不适用楼主的场景
    pyKun
        11
    pyKun  
    OP
       2013-05-25 22:18:48 +08:00
    @xhat
    我的数据已经在数据库存了一份了
    用redis岂不是要把需要唯一性的数据再存一份么?
    pyKun
        12
    pyKun  
    OP
       2013-05-25 22:24:59 +08:00
    @xhat
    @Mutoo
    @likuku
    @VYSE
    我今天换了一个思路,牺牲很小的存储空间+一个合适的算法去搞定
    比如每生成一个value,加到一个文件去,给这个文件求特征值
    这样这个文件保证高可用是容易多了
    nocturnal
        13
    nocturnal  
       2013-05-26 17:56:4 +08:00 via Android
    lunny
        14
    lunny  
       2013-05-26 19:48:53 +08:00
    leveldb
    binge
        15
    binge  
       2013-05-26 19:55:43 +08:00
    很感兴趣通常会用在什么情况的?求指教:)
    pyKun
        16
    pyKun  
    OP
       2013-05-26 22:14:16 +08:00
    @binge
    swift兼容所有s3 api
    在swift里container的名字已经存在数据库了
    s3类似container的bucket是region内唯一的,也就是在swift里所有表里的container的value要唯一
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5298 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 07:08 PVG 15:08 LAX 00:08 JFK 03:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86