需求是这样的,数据库里存的都是 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 1
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 2016-07-08 11:22:46 +08:00
原始数据都是 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 1
我的 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 1
@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 到片里呗。
|