作者:张凌飞 Steven Zhang
vertica在使用的时候主要是要在数据库内使用,但是如果假设必须出现需要用python来获得数据的时候的话,就会涉及到数据IO的问题,数据要从数据库移动到python端,如果是处理大数据的话这个成本是非常高的。
下面就给个例子说明我的调查结果,只说结论就不上截图了。
数据量 | 连接方式 | 数据传输速率(MB/s) |
---|---|---|
1.344 百万数据表 | DBeaver+vertica官方JDBC | 41.6 |
1.344 百万数据表 | vertica-python 0.10.0 | 3-4 |
这里很明显的看出在完全相同的网络和主机环境下如果用python来和vertica进行大型数据的交互是非常不合适的,而vertica自身的JDBC是优化的肯定所以能取得接近40MB/s的以上速度。其实换句话说就是python和vertica进行协同大数据分析的时候只能用python做controller向数据库发出命令来执行SQL和数据库内分析,数据不能移动否则就很失败。绝不能把大型数据挪动到python内部来处理。
这里没有研究Java的访问速度,但是我推测由于java可以使用vertica官方的JDBC包所以只要网络环境不变,速度肯定是要比python快很多的。python的其他和vertica交互的package都是方言包,底层基于vertica-python所以也不需要研究了。