昨天有个同事遇到数据库方面的问题:
他用PostgreSQL记录用户的App的数据,比如一个用户装了100个App,那么在DB之中就有100条记录。当前产品一共有150W这样的用户,那么总共数据集在1.5亿,另外他们使用了uuid-app_name+app_version 三个值作为组合主键,总共约有5亿条记录。
首先他们创建索引之后,每次插入都很慢,另外查询的时候,即使只是按照uuid进行查询,因为数量级已经超过postgreSQL索引的最大容量,只能很麻烦的另外安装插件,通过模糊搜索的方式进行数据查找。
比如如下的SQL:
1 |
select * from myapphistory where "user_UUID" ~ '^A02340ED-7B12-576A-885D-CB8E74ABCA8A$' order by install_date asc |
类似MySQL之中的like,同时里面是一个正则表达式~
如果使用Cassandra来进行查询,使用标准SQL:
1 |
select * from dr_app_user_history_items where user_uuid = 'A02340ED-7B12-576A-885D-CB8E74ABCA8A1'; |
查询结果如下:
可以看到,该用户有60条记录,查询一共花了89ms。注意:如果这条数据在内存之中,还没有被flush到SSTable的话,测试数据在40 ~ 60ms 之间
本文为原创文章,转载请注明出处原文链接:http://www.flyml.net/2016/12/22/cassandra-show-powers/

文章评论