• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xingwing
V2EX  ›  程序员

上亿数据增删改查,用什么数据库合适?

  •  
  •   xingwing · Jul 8, 2016 · 14490 views
    This topic created in 3771 days ago, the information mentioned may be changed or developed.

    需求是这样的,数据库里存的都是 kv 数据, k 是 ID , v 是多个值, k 的数量巨大,亿级或十亿级(比如中国人口数),如何能够快速(毫秒级)增删改查数据库的数据? cassandra 集群可以吗?

    43 replies  •  2016-07-10 09:01:51 +08:00
    owt5008137
    owt5008137
    Jul 8, 2016 via Android
    1
    具体还是要看应用吧,要速度快的话 redis cluster 呗
    jinfeng333
    jinfeng333
    Jul 8, 2016
    2
    oracel
    ytmsdy
    ytmsdy
    Jul 8, 2016
    3
    是否涉及到数据之间的逻辑运算?如果设计逻辑运算,建议使用 oracle , mysql 这一类传统数据库,如果不涉及,仅仅是增删改查,那就用 no-sql 这一类数据库吧
    xingwing
    xingwing
    OP
    Jul 8, 2016
    4
    @ytmsdy 不涉及,能推荐一款 nosql 吗, cassandra 行吗?我看 360 在用
    elgoog1970
    elgoog1970
    Jul 8, 2016
    5
    m
    xi4oh4o
    xi4oh4o
    Jul 8, 2016
    6
    leveldb
    rubyvector
    rubyvector
    Jul 8, 2016
    7
    传统数据库必须加缓存,或者直接上 NOSQL
    Yanickkk
    Yanickkk
    Jul 8, 2016
    8
    分个库不就好了···把上亿的数据放在一起都是不和谐的
    hiro0729
    hiro0729
    Jul 8, 2016
    9
    用 HBase 呀,它最适合这种结构不复杂的数据了,但是对 key 的设计有一定要求
    tjxjj
    tjxjj
    Jul 8, 2016
    10
    oracle ,分个区就行了,轻松搞定, 10 多个 y 不是个事儿
    owt5008137
    owt5008137
    Jul 8, 2016 via Android
    11
    @hiro0729 hbase 延迟很高吧,毫秒级似乎比较困难
    justfly
    justfly
    Jul 8, 2016
    12
    写不大的话 分表就好 256 表 按 key 哈希 每表 500W ,上面加个 LRU 的 memcache 就好
    xingwing
    xingwing
    OP
    Jul 8, 2016
    13
    @justfly 单点问题咋解决?
    raptor
    raptor
    Jul 8, 2016
    14
    看有多少钱了,有钱堆硬件的话,全部内存查询就 OK 啦。
    nine
    nine
    Jul 8, 2016❤️1
    15
    6 亿数据表示用 PostgreSQL 很轻松啊。
    fin
    fin
    Jul 8, 2016
    16
    v 是什么样的值呢
    xingwing
    xingwing
    OP
    Jul 8, 2016
    17
    @fin 用户的一些路由信息,比如:用户长连接的服务器地址等
    justfly
    justfly
    Jul 8, 2016
    18
    @xingwing HA 要求高的话 加多套数据库配合 Keepalived 如果在有缓存情况下 依然需要多库负载均衡 可以多从库。

    ps: 纯内存方案,可以用 codis 集群。
    ladyv2
    ladyv2
    Jul 8, 2016
    19
    用 memsql?
    loading
    loading
    Jul 8, 2016 via Android
    20
    分库集群,哪个数据库都行。
    如果一台机器…就不是技术的问题了,是这个方案身有问题!
    zhicheng
    zhicheng
    Jul 8, 2016 via Android
    21
    你这个数据的量级不关键,关键的是你有多少增删改查。。。
    realpg
    realpg
    Jul 8, 2016
    22
    原始数据都是 kv 数据的 任何一个 nosql 轻松搞定,搞不懂你们这种环境还让人上 RDS 的想什么……
    甚至不需要负载用的统一逻辑集群(当然保证可用性的为目的的必不可少),前置一个 hash 进行分库就好了,在逻辑层进行一个基本的 hash 操作 确认该 key 的存储节点就完事
    fin
    fin
    Jul 8, 2016
    23
    @xingwing 那一条记录占空间不大啊, 10 多亿数据 100G 内存应该够了吧
    fin
    fin
    Jul 8, 2016
    24
    @fin 如果 value 字符的取值范围有限的话,还能存得更紧凑呢。
    hst001
    hst001
    Jul 8, 2016
    25
    对于这种简单的 KV 存储很多 NOSQL 都没什么问题,在这里问还不如直接上机器测试。。
    RisingV
    RisingV
    Jul 8, 2016
    26
    1.可以考虑下 aws 的 DynamoDB , amazon 主站背后也是这个。根据吞吐量收费, qps 高价格比较贵。
    2.另外推荐 aerospike ,基于 SSD 和 RAM 的混合存储,可以投入比 redis 更少的节点,支持表结构的数据。做程序化广告交易的时候用过,非常 impressive 。
    moult
    moult
    Jul 8, 2016
    27
    说实在的,我们 Session 就是用 MySQL 存储的。一亿左右数据行,读写挺频繁的,效率也不低啊。目前就硬盘出现瓶颈影响查询效率。
    crazykuma
    crazykuma
    Jul 8, 2016
    28
    mysql
    CrowQu
    CrowQu
    Jul 8, 2016
    29
    就用 MySQL 就可以啊,散列成 100 张表,一个简单的 Hash 算法就可以,又不做统计计算只是直接命中指定 K 值然后做相应操作,顶多如果并发过高前置个缓存服务器缓冲一下就可以……
    iyaozhen
    iyaozhen
    Jul 8, 2016 via Android
    30
    redis 集群呀, hashmap 数据结构,刚好契合你的需求,然后按照 key 分库。
    strwei
    strwei
    Jul 8, 2016❤️1
    31
    我的 40G 的磁力链 mysql+sphinx 2 分钟索引完,应该有上亿数据了吧
    newghost
    newghost
    Jul 8, 2016
    32
    redis
    ytmsdy
    ytmsdy
    Jul 8, 2016❤️1
    33
    @xingwing 要看你自己熟悉那个,目前的流行的 nosql ,你这个数据量跑起来一般上来说都不会有太大的瓶颈的。最大的问题是你后期的开发,维护,调优。选一个自己最顺手的吧。
    fivesmallq
    fivesmallq
    Jul 8, 2016
    34
    可以试试 mongodb ,有集群。
    deangl
    deangl
    Jul 8, 2016
    35
    查是只查 key 还是也要查 v? 查 v 的话有没有总变化的复杂逻辑?

    如果只是查 key 的话,任何一个数据库都没有问题吧。如果是查 v ,还有变动的复杂逻辑,基本上没戏。
    wweir
    wweir
    Jul 8, 2016 via Android
    36
    doukudb 不错,不过场景不对
    Mirana
    Mirana
    Jul 8, 2016
    37
    mysql 分表足够了
    jason19659
    jason19659
    Jul 8, 2016
    38
    学习。。。有没有相关的文章神马的
    heraldboy
    heraldboy
    Jul 8, 2016
    39
    场景不清晰,如果没什么逻辑关系,数据量再大也是堆硬盘,不查询增删改采用分库分区等都可以秒杀。
    strahe
    strahe
    Jul 9, 2016
    40
    试试 mongodb 吧
    pathbox
    pathbox
    Jul 9, 2016
    41
    mysql 分个表 没啥压力。除非你一天就上亿数据咯。就用 mongo , cassandra ,一类的集群存了。也是要合理分区之类的
    jeffw
    jeffw
    Jul 10, 2016 via iPhone
    42
    20 亿 sql server 轻松秒查无压力
    caomaocao
    caomaocao
    Jul 10, 2016
    43
    nosql 分片, key hash 到片里呗。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4484 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 05:46 · PVG 13:46 · LAX 21:46 · JFK 00:46
    ♥ Do have faith in what you're doing.