我们公司大概有几千个 App,每个 App 在每次在手机上启动时,都会向服务器上报当前设备的 deviceID 和 AppID。目前,服务端这边,有两个需求:
目前的几个思路:
请教各位大神,有没有其他好方案?
1
woscaizi 2018-05-20 21:15:24 +08:00 via iPhone
Mysql 就可以吧,数据没到亿级吧。
|
2
Mutoo 2018-05-20 21:37:41 +08:00
2 用布隆过滤器可解
|
3
a132811 2018-05-20 22:47:54 +08:00 1
2. 用 bloomFilter 要考虑错误率容忍问题。错误率不能容忍,就 redis hash。redis 内存占用在你担心前应该压测一下。真是内存不够》加内存或者服务器。要压榨内存,就自己用 mmap 实现 hash: https://www.jianshu.com/p/3fe88953e9f9
1. 就基于 2 计数就行了 |
4
dapang1221 2018-05-20 23:19:20 +08:00 via iPhone
splunk,一点也不慢
|
5
glues 2018-05-21 00:00:06 +08:00 via iPhone
mysql 完全没问题
|
6
jssyxzy 2018-05-21 03:01:10 +08:00
1 个 条记录 10 字节的话, 1g 可以存一亿条记录
一张 hash 表应该够, 而且觉得一起太多, 可以根据 appid 进行切割 |
7
ctsed 2018-05-21 03:29:20 +08:00 via Android
es 不慢啊,好好改改 mapping,个位数毫秒级响应
|
8
huiyifyj 2018-05-21 08:05:06 +08:00 via Android
看标题还以为是与数字逻辑电路有关,emm,打扰了。
|
9
murmur 2018-05-21 08:30:34 +08:00
只有我好奇开发了几千个 app 连怎么统计都不知道的是什么公司么
怕不是 |
10
lianyue 2018-05-21 08:32:49 +08:00 via iPhone
所有的数据库都能吧 按照 deviceID 分表,分片就好了
|
11
lianyue 2018-05-21 08:35:31 +08:00 via iPhone
不用 count(*) 大部分数据库 亿级都是 0.0x 大概 很快的
|
12
Tokin 2018-05-21 08:37:21 +08:00
几千个 App....大公司啊,这么多 App。。。
|
13
chenuu 2018-05-21 09:28:10 +08:00
redis.
|
14
lizhenda 2018-05-21 09:33:04 +08:00
几千个马甲包?发财了啊
|
15
xiaochocking 2018-05-21 09:34:56 +08:00
几千个 app 不算大公司 算巨公司吧
|
16
yangqi 2018-05-21 09:36:26 +08:00 1
几千个 app, 平均每个 app 下载量多少? 也就是装机量多少?
|
17
doubleflower 2018-05-21 11:01:22 +08:00
明显是想多了,数据库装不下装机量的公司世界上还没有
|
18
imn1 2018-05-21 11:30:55 +08:00
希望不是 XX 马克丁
|
19
rrfeng 2018-05-21 11:39:12 +08:00
redis:每次存俩值
incr count:${appid} 1 set ${appid:deviceid} 1 总量算一下就知道了。 计数器可以忽略,总安装量你可以算出来。或者不知道的话就先准备 10G 看看。 10G 存个 2-3 亿没啥问题……只要你 id 不是特别特别长。 |
21
mistergo OP 谢谢大家。
在问这个问题之前,我们采用的 es,但是 es 的问题是查询起来非常慢,每次大概需要几十秒。因为我们水平有限,效率一直没有优化上去。 现在我们买了 redis 的 32G 的内存服务器,用 SET 数据类型去存储。SET 类型天然支持数量统计、查询是否存在等功能,满足我们需求,目前来看效果很好,查询速度很快。如果后期空间不够,公司也愿意花钱加内存。 |
22
kchum 2018-05-21 12:17:40 +08:00
估计是网盟或者统计类 为开发者服务的公司...
|
23
LevineChen 2018-05-21 12:18:53 +08:00 via iPhone
第一条可以用 hyperloglog 大概百分之 0.8 的误差
|