数亿条key-value对,每个value大概是20k~50k的json字符串,求分布式存储方案! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
webflier
V2EX    数据库

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

  •  
  •   webflier 2013-05-22 22:08:02 +08:00 2561 次点击
    这是一个创建于 4582 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不考虑mongodb,mongodb的disk footprint太大,太占硬盘空间。
    hbase是不是一个好方案?没用过,稍微浏览了下文档,感觉配置起来有点复杂。
    redis做集群,合适吗?
    或者整一个分布式文件系统,直接存成文件?
    大神们,求破!
    22 条回复    2014-06-06 10:42:23 +08:00
    Livid
        1
    Livid  
    MOD
    PRO
       2013-05-22 22:12:11 +08:00
    Riak
    Cadina
        2
    Cadina  
       2013-05-22 22:12:46 +08:00
    这要看你查询的需求了啊
    Livid
        3
    Livid  
    MOD
    PRO
       2013-05-22 22:13:12 +08:00   1
    HBase 的问题是,这些数据你打算用什么编程语言来存取?

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

    @Cadina 查询的话,基本就是根据key值random access
    Livid
        6
    Livid  
    MOD
    PRO
       2013-05-22 22:23:45 +08:00   1
    @webflier Riak 出来的时间不短了,是一个靠谱的分布式 KV 数据库。你可能需要花一些时间研究它的部署,但是一旦熟悉了,这个东西还是很可靠的。
    webflier
        7
    webflier  
    OP
       2013-05-22 2:24:43 +08:00
    @plprapper 如果size变小的话,5~10k,有什么好建议?
    swulling
        8
    swulling  
       2013-05-22 22:27:58 +08:00
    你这个才T级别的数据,不必太在乎硬盘空间吧。
    austin
        9
    austin  
       2013-05-22 22:55:52 +08:00   1
    应该视你数据的读取频率、改写频率、数据一致性要等需求不同,而最终方案不同。
    如果读取频率很小,自己搞一个hash算法,存文件或直接存mysql都可以。
    如果读取的很频繁,而且是乱序的,放redis里面是一个好方案。也是自己hash分到多个redis实例即可。
    davepkxxx
        10
    davepkxxx  
       2013-05-22 22:58:01 +08:00
    memcache或着membase
    llbgurs
        11
    llbgurs  
       2013-05-22 23:03:44 +08:00
    couchbase
    oldgun
        12
    oldgun  
       2013-05-22 23:11:11 +08:00
    你这个其实Berkeley DB就可了,可能插入性能需要看看。
    Los
        13
    Los  
       2013-05-23 00:37:51 +08:00   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  
       2013-05-23 00:56:43 +08:00   1
    Mysql 分库分表 存blob
    Ricepig
        15
    Ricepig  
       2013-05-23 01:28:24 +08:00   1
    column based database就好了,列数据压缩,效率比较高
    aisk
        16
    aisk  
       2013-05-23 01:34:35 +08:00   1
    LevelDB也可以。或者楼主可以按文件名做hash到不同机器,然后机器里再按hash分布到多层的目录里。
    webflier
        17
    webflier  
    OP
       2013-05-23 09:51:39 +08:00
    @aisk
    @Ricepig
    @Frannk
    @Los
    @oldgun
    @llbgurs
    @davepkxxx
    @austin
    @swulling
    @Livid
    @plprapper
    @Cadina
    谢谢大家,打算用Riak + leveldb backend试试!
    wuxqing
        18
    wuxqing  
       2013-05-23 14:51:27 +08:00
    Twemproxy + redis 应该也可以的
    Twemproxy:https://github.com/twitter/twemproxy
    clowwindy
        19
    clowwindy  
       2013-05-23 14:56:04 +08:00
    @Livid HBase 有 HTTP 和 thrift 接口,我们之前用过 tornado + REST HBase
    不过 HBase 的运维成本非常高。
    Frannk
        20
    Frannk  
       2013-05-23 15:27:35 +08:00
    @webflier 记得回来谈谈效果。
    oldcai
        21
    oldcai  
    PRO
       2013-05-23 15:32:06 +08:00
    @Livid riak的文档的英文好像有些错误,大概不是英语母语的人写的?
    pyKun
        22
    pyKun  
       2014-06-06 10:42:23 +08:00
    关注下riak
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1230 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 17:00 PVG 01:00 LAX 09:00 JFK 12:00
    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