之前说过关于phoenix在查询的过程中性能的问题,继续探讨。
最近一直在找合适的方法,可以巧妙的完成sql和nosql的结合,总之就是利用sql的多条件查询,可以把储存在nosql中的数据读取出来。phoenix的底层就是hbase存储,hbase的键值对查询的速度是很快的,机会不会有性能的问题。那么在phoenix的多条件查询为什么会比较慢,耗时需要1000万数据几分钟?
我仔细对照了hbase中两张不同的表,分别是A表和B表,A表数据700万但是字段15个,字段存储的数据比较小。B表400万字段15个,每个字段存储的数据比较大。
查询的结果如下:A表查询时间17秒,B表查询时间52秒。
从上面的结果可以猜测,虽然A表的数据比较多,但是查询速度比较快;B表相反。
原因猜测:A表的存储的数据比较小,B表存储的数据比较大。所以,怎么结合sql和Nosql存储数据呢?
我的办法可以供参考:查询条件可以按照关系型存储,这样可以通过条件筛选出需要的数据;比较大的无关内容可以按照键值对存储,主键存储在关系型的表格里面。可以大大的提升存储的性能。