Salesforce最近斥资157亿美元收购了分析公司Tableau,以增强自己的爱因斯坦分析平台。Salesforce认为分析对其未来至关重要。
但是在公司于2017年推出爱因斯坦分析(Einstein Analytics)之前,它对后端进行了全面改革,并几乎完全使用Google流行的Go或“ Golang”编程语言对其进行了重建。
根据Salesforce首席架构师Guillaume Le Stum的说法,在Salesforce推出Einstein Analytics之前,最终成为Einstein Analytics的查询引擎和数据集创建工具都是用C语言编写的“性能”和Python包装器,该包装器提供了诸如解析查询的功能以及REST API服务器。
Le Stum在Stack Overflow上的一篇文章中解释说: “从本质上讲,该产品具有两全其美的优势。”
“ Python非常适合快速编写更高级别的应用程序,但并不总是能够提供企业级所需的高性能。C可以创建高性能的可执行文件,但是添加功能会花费更多时间。”
当然,Python在开发人员中非常受欢迎,其中包括Netflix的工程师,他们在其庞大的流式基础结构的每个部分中都使用Python。
但是在发布之前,Le Stum说,Einstein Analytics开始显示性能下降,是因为不属于核心查询引擎的任何新功能都已加载到Python包装器中。
因此,尽管Salesforce可以使用Python快速开发和部署功能,但最终该方法使它变慢了。
Le Stum解释说:“ Python不能很好地执行多线程,因此,要求包装程序执行的越多,它的执行效果就越差。”
另一方面,Go是为适合Google生产系统的大型应用程序而构建的,因此Salesforce决定将Einstein Analytics从混合C-Python应用程序转变为完全Go应用程序。
尽管有一些优点,Le Stum还指出了使用Python的另外两个缺点。
他写道:“首先,Python使用松散类型,这对于一个快速开发新想法并将其投入生产的小型团队非常有用,但对于某些客户为此付出数百万美元的企业级应用程序而言,效果不佳。”
“第二,由于部署的Python库,版本和文件将变得很繁琐,因此我们预见到了巨大的依赖空洞。因此,在2014年,我们决定将Python包装器移植到Go。”
Le Stum表示,Go的优势包括其内置工具,快速的编译时间和部署,轻松的故障排除以及易于理解的代码。
他解释说:“在Python中,您可以编写超级优雅的代码。但是,优雅就可能以可读性为代价。”工程师花费比编写代码更多的时间来阅读代码。
与查询引擎的C相比,该小组仍然对Go的性能存在疑问。但是,用Go编写的概念证明使他们能够继续进行下去,并且Einstein Analytics的Go版本在2018年全面上市。
Go的一大优势是Go的跨平台功能使移植代码变得容易。
Le Stum指出:“如果我们需要在移动应用程序中使用任何这些代码,则可以将其交叉编译到iOS或Android,并且可以正常工作。”