需求是这样的,数据库里存的都是 kv 数据, k 是 ID , v 是多个值, k 的数量巨大,亿级或十亿级(比如中国人口数),如何能够快速(毫秒级)增删改查数据库的数据? cassandra 集群可以吗?
1 owt5008137 2016-07-08 09:10:38 +08:00 via Android 具体还是要看应用吧,要速度快的话 redis cluster 呗 |
![]() | 2 wujunze 2016-07-08 09:16:24 +08:00 oracel |
![]() | 3 ytmsdy 2016-07-08 09:20:28 +08:00 是否涉及到数据之间的逻辑运算?如果设计逻辑运算,建议使用 oracle , mysql 这一类传统数据库,如果不涉及,仅仅是增删改查,那就用 no-sql 这一类数据库吧 |
![]() | 5 elgoog1970 2016-07-08 09:22:03 +08:00 m |
![]() | 6 xi4oh4o 2016-07-08 09:31:03 +08:00 leveldb |
![]() | 7 rubyvector 2016-07-08 09:34:36 +08:00 传统数据库必须加缓存,或者直接上 NOSQL |
8 yannxia 2016-07-08 09:36:43 +08:00 分个库不就好了把上亿的数据放在一起都是不和谐的 |
9 hiro0729 2016-07-08 09:39:59 +08:00 用 HBase 呀,它最适合这种结构不复杂的数据了,但是对 key 的设计有一定要求 |
10 tjxjj 2016-07-08 09:40:41 +08:00 oracle ,分个区就行了,轻松搞定, 10 多个 y 不是个事儿 |
11 owt5008137 2016-07-08 09:46:38 +08:00 via Android @hiro0729 hbase 延迟很高吧,毫秒级似乎比较困难 |
![]() | 12 justfly 2016-07-08 09:50:00 +08:00 写不大的话 分表就好 256 表 按 key 哈希 每表 500W ,上面加个 LRU 的 memcache 就好 |
![]() | 14 raptor 2016-07-08 09:56:07 +08:00 看有多少钱了,有钱堆硬件的话,全部内存查询就 OK 啦。 |
![]() | 15 nine 2016-07-08 10:04:12 +08:00 ![]() 6 亿数据表示用 PostgreSQL 很轻松啊。 |
![]() | 16 fin 2016-07-08 10:05:28 +08:00 v 是什么样的值呢 |
![]() | 18 justfly 2016-07-08 10:17:36 +08:00 |
19 ladyv2 2016-07-08 10:21:39 +08:00 用 memsql? |
![]() | 20 loading 2016-07-08 10:29:21 +08:00 via Android 分库集群,哪个数据库都行。 如果一台机器…就不是技术的问题了,是这个方案身有问题! |
![]() | 21 zhicheng 2016-07-08 11:12:11 +08:00 via Android 你这个数据的量级不关键,关键的是你有多少增删改查。。。 |
![]() | 22 realpg PRO 原始数据都是 kv 数据的 任何一个 nosql 轻松搞定,搞不懂你们这种环境还让人上 RDS 的想什么…… 甚至不需要负载用的统一逻辑集群(当然保证可用性的为目的的必不可少),前置一个 hash 进行分库就好了,在逻辑层进行一个基本的 hash 操作 确认该 key 的存储节点就完事 |
![]() | 25 hst001 2016-07-08 13:00:39 +08:00 对于这种简单的 KV 存储很多 NOSQL 都没什么问题,在这里问还不如直接上机器测试。。 |
![]() | 26 RisingV 2016-07-08 13:51:04 +08:00 1.可以考虑下 aws 的 DynamoDB , amazon 主站背后也是这个。根据吞吐量收费, qps 高价格比较贵。 2.另外推荐 aerospike ,基于 SSD 和 RAM 的混合存储,可以投入比 redis 更少的节点,支持表结构的数据。做程序化广告交易的时候用过,非常 impressive 。 |
27 moult 2016-07-08 13:55:08 +08:00 说实在的,我们 Session 就是用 MySQL 存储的。一亿左右数据行,读写挺频繁的,效率也不低啊。目前就硬盘出现瓶颈影响查询效率。 |
28 crazykuma 2016-07-08 13:56:19 +08:00 mysql |
![]() | 29 CrowQu 2016-07-08 14:02:40 +08:00 就用 MySQL 就可以啊,散列成 100 张表,一个简单的 Hash 算法就可以,又不做统计计算只是直接命中指定 K 值然后做相应操作,顶多如果并发过高前置个缓存服务器缓冲一下就可以…… |
![]() | 30 iyaozhen 2016-07-08 14:08:07 +08:00 via Android redis 集群呀, hashmap 数据结构,刚好契合你的需求,然后按照 key 分库。 |
![]() | 31 strwei 2016-07-08 15:29:43 +08:00 ![]() 我的 40G 的磁力链 mysql+sphinx 2 分钟索引完,应该有上亿数据了吧 |
![]() | 32 newghost 2016-07-08 15:57:06 +08:00 redis |
![]() | 33 ytmsdy 2016-07-08 16:04:19 +08:00 ![]() @xingwing 要看你自己熟悉那个,目前的流行的 nosql ,你这个数据量跑起来一般上来说都不会有太大的瓶颈的。最大的问题是你后期的开发,维护,调优。选一个自己最顺手的吧。 |
![]() | 34 fivesmallq 2016-07-08 16:22:30 +08:00 可以试试 mongodb ,有集群。 |
35 deangl 2016-07-08 17:06:50 +08:00 查是只查 key 还是也要查 v? 查 v 的话有没有总变化的复杂逻辑? 如果只是查 key 的话,任何一个数据库都没有问题吧。如果是查 v ,还有变动的复杂逻辑,基本上没戏。 |
![]() | 36 wweir 2016-07-08 19:58:49 +08:00 via Android doukudb 不错,不过场景不对 |
37 Mirana 2016-07-08 20:03:47 +08:00 mysql 分表足够了 |
![]() | 38 jason19659 2016-07-08 21:39:12 +08:00 学习。。。有没有相关的文章神马的 |
![]() | 39 heraldboy 2016-07-08 23:02:27 +08:00 场景不清晰,如果没什么逻辑关系,数据量再大也是堆硬盘,不查询增删改采用分库分区等都可以秒杀。 |
![]() | 40 strahe 2016-07-09 00:08:38 +08:00 试试 mongodb 吧 |
![]() | 41 pathbox 2016-07-09 00:45:15 +08:00 mysql 分个表 没啥压力。除非你一天就上亿数据咯。就用 mongo , cassandra ,一类的集群存了。也是要合理分区之类的 |
42 jeffw 2016-07-10 07:33:07 +08:00 via iPhone 20 亿 sql server 轻松秒查无压力 |
![]() | 43 caomaocao 2016-07-10 09:01:51 +08:00 nosql 分片, key hash 到片里呗。 |