首页 > 科技 > > 正文
2019-11-22 10:46:41

为什么我们在Einstein Analytics中放弃了Google的Go语言Python

导读 Salesforce最近斥资157亿美元收购了分析公司Tableau,以增强自己的爱因斯坦分析平台。显然,Salesforce认为分析对其未来至关重要。但是在公

Salesforce最近斥资157亿美元收购了分析公司Tableau,以增强自己的爱因斯坦分析平台。显然,Salesforce认为分析对其未来至关重要。

但是在公司于2017年推出爱因斯坦分析(Einstein Analytics)之前,它对后端进行了全面改革,并几乎完全使用Google流行的Go或“ Golang”编程语言对其进行了重建。

SEE: 六种按需编程语言:入门(免费PDF)

根据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库,版本和文件将变得很繁琐,因此我们预见到了巨大的依赖梦night。因此,在2014年,我们决定将Python包装器移植到Go。”

请参阅:微软:我们希望您免费学习Python编程语言。

Le Stum表示,Go的优势包括其内置工具,快速的编译时间和部署,轻松的故障排除以及使代码易于理解的方式。

他解释说:“在Python中,您可以编写几乎是数学的超级优雅的列表理解和漂亮的代码。但是,如果您不编写代码,那么优雅就可能以可读性为代价。”工程师花费比编写代码更多的时间来阅读代码。

与查询引擎的C相比,该小组仍然对Go的性能存在疑问。但是,用Go编写的概念证明使他们能够继续进行下去,并且Einstein Analytics的Go版本在2018年全面上市。

Go的一大优势是Go的跨平台功能使移植代码变得容易。

Le Stum指出:“如果我们需要在移动应用程序中使用任何这些代码,则可以将其交叉编译到iOS或Android,并且可以正常工作。”

不是用Go构建的Einstein Analytics的唯一部分是用Java编写的集群管理器。

更新:Salesforce已要求ZDNet指出该公司原始Stack Overflow部分中的错误。虽然Salesforce确实确实将Einstein Analytics查询引擎从C-Python混合语言移植到Go,但Einstein Analytics还是基于Go和Java之外的其他语言构建的,尽管Salesforce拒绝透露这些其他语言的含义。