数亿条key-value对,每个value大概是20k~50k的json字符串,求分布式存储方案! - V2EX
webflier

数亿条key-value对,每个value大概是20k~50k的json字符串,求分布式存储方案!

  •  
  •   webflier May 22, 2013 2813 views
    This topic created in 4741 days ago, the information mentioned may be changed or developed.
    不考虑mongodb,mongodb的disk footprint太大,太占硬盘空间。
    hbase是不是一个好方案?没用过,稍微浏览了下文档,感觉配置起来有点复杂。
    redis做集群,合适吗?
    或者整一个分布式文件系统,直接存成文件?
    大神们,求破!
    22 replies    2014-06-06 10:42:23 +08:00
    Livid
        1
    Livid  
    MOD
    PRO
       May 22, 2013
    Riak
    Cadina
        2
    Cadina  
       May 22, 2013
    这要看你查询的需求了啊
    Livid
        3
    Livid  
    MOD
    PRO
       May 22, 2013   1
    HBase 的问题是,这些数据你打算用什么编程语言来存取?

    HBase 的 first-class 编程语言是 Java。
    plprapper
        4
    plprapper  
       May 22, 2013
    把value做序列化处理 然后再看看大小呢?
    webflier
        5
    webflier  
    OP
       May 22, 2013
    @Livid 工作语言c#, mono平台,Riak感觉水很深啊,刚出来的东西,你对Riak有很好的体验不?

    @Cadina 查询的话,基本就是根据key值random access
    Livid
        6
    Livid  
    MOD
    PRO
       May 22, 2013   1
    @webflier Riak 出来的时间不短了,是一个靠谱的分布式 KV 数据库。你可能需要花一些时间研究它的部署,但是一旦熟悉了,这个东西还是很可靠的。
    webflier
        7
    webflier  
    OP
       May 22, 2013
    @plprapper 如果size变小的话,5~10k,有什么好建议?
    swulling
        8
    swulling  
       May 22, 2013
    你这个才T级别的数据,不必太在乎硬盘空间吧。
    austin
        9
    austin  
       May 22, 2013   1
    应该视你数据的读取频率、改写频率、数据一致性要等需求不同,而最终方案不同。
    如果读取频率很小,自己搞一个hash算法,存文件或直接存mysql都可以。
    如果读取的很频繁,而且是乱序的,放redis里面是一个好方案。也是自己hash分到多个redis实例即可。
    davepkxxx
        10
    davepkxxx  
       May 22, 2013
    memcache或着membase
    llbgurs
        11
    llbgurs  
       May 22, 2013
    couchbase
    oldgun
        12
    oldgun  
       May 22, 2013
    你这个其实Berkeley DB就可了,可能插入性能需要看看。
    Los
        13
    Los  
       May 23, 2013   1
    插个内容,Hbase 支持 REST 方式进行操作
    http://wiki.apache.org/hadoop/Hbase/Stargate
    当然,有更好的另一种操作方式是通过 Thrift 连接 Hbase,能够支持常见的开发语言,包括c#,java,python,php,ruby 等等
    http://wiki.apache.org/hadoop/Hbase/ThriftApi
    Frannk
        14
    Frannk  
       May 23, 2013   1
    Mysql 分库分表 存blob
    Ricepig
        15
    Ricepig  
       May 23, 2013   1
    column based database就好了,列数据压缩,效率比较高
    aisk
        16
    aisk  
       May 23, 2013   1
    LevelDB也可以。或者楼主可以按文件名做hash到不同机器,然后机器里再按hash分布到多层的目录里。
    webflier
        17
    webflier  
    OP
       May 23, 2013
    @aisk
    @Ricepig
    @Frannk
    @Los
    @oldgun
    @llbgurs
    @davepkxxx
    @austin
    @swulling
    @Livid
    @plprapper
    @Cadina
    谢谢大家,打算用Riak + leveldb backend试试!
    wuxqing
        18
    wuxqing  
       May 23, 2013
    Twemproxy + redis 应该也可以的
    Twemproxy:https://github.com/twitter/twemproxy
    clowwindy
        19
    clowwindy  
       May 23, 2013
    @Livid HBase 有 HTTP 和 thrift 接口,我们之前用过 tornado + REST HBase
    不过 HBase 的运维成本非常高。
    Frannk
        20
    Frannk  
       May 23, 2013
    @webflier 记得回来谈谈效果。
    oldcai
        21
    oldcai  
    PRO
       May 23, 2013
    @Livid riak的文档的英文好像有些错误,大概不是英语母的人写的?
    pyKun
        22
    pyKun  
       Jun 6, 2014
    关注下riak
    About     Help     Advertise     Blog     API     FAQ     Solana     891 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 63ms UTC 21:36 PVG 05:36 LAX 14:36 JFK 17:36
    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