不借助数据库实现事务
如果您在过去一年左右的时间里看到过任何技术工作清单,那么您看到的描述很可能包含数据科学或数据科学家一词。 如今,数据科学已不再是一个流行语,而是引起混乱的根源。 数据科学家到底是做什么的? 他们整天都穿实验室外套并在荧光灯下工作吗? 答案可能与我们的想象使我们相信不同。
简而言之,数据科学是获取大量数据并从中得出有用的模式和结论的学科。 我想为我们提供一些实用的方法,不仅让我们了解数据科学的价值,而且将其实际应用于我们的开发团队和项目中。
为什么选择数据科学?
您可能会听到关于为什么使用数据科学很重要的初步想法,并认为:“我是否已经可以轻松地访问这些信息?”
尽管对于某些问题,答案可能相当明显,但是您不可避免地会遇到无法通过短数据库查询解决的问题。 数据科学不一定要运行一些查询来收集数据指标。 相反,它更多地是随着时间推移获取这些指标并在其中找到模式和趋势。
但是,有什么实际的例子呢?
假设您是像Codeship这样的CI解决方案,并且您正在查看包含有关项目构建的所有信息的数据库。 您可能会问自己和您的团队,“我们为用户构建,测试和部署最多的三种最受欢迎的语言是什么?”
为了弄清楚这一点,我们需要收集数据。 您可以轻松获取某些数据,例如与构建关联的主要语言类型。 但是,也可以说多种语言也可以与构建相关联。 您可能正在测试Ruby应用程序,但也可能在几乎一样大的嵌入式JavaScript应用程序上运行测试!
乍一看,此类信息可能会或可能不会显而易见,这就是为什么我们需要以编程方式检查每个构建并提取其使用的语言的原因。 然后,我们将汇总,平均和分发从分析中发现的数据点。
该问题的发现可以帮助我们的公司了解如何更好地优化其用户在该平台上的体验。 如果大量用户正在测试JavaScript,那么工程团队认为有必要投资使其JavaScript生成速度更快。
在查看数据之前,我们真的不会完全了解此需求。 同样,数据科学正在帮助我们使用数据来理解使用模式,并为我们创建有效地优化应用程序的方式。
我认为,实践数据科学为工程团队提供了解决似乎抽象的问题的业务理由。 我们可能会发现应用程序运行缓慢,但是数据科学使我们能够了解确切的零件运行缓慢! 除非Data Science为我们发现了问题,否则我们通常不知道要解决哪些问题。
考虑到这一点,让我们探讨如何与我们的开发团队一起在数据科学上进行实际投资。
如何投资数据科学
简而言之,挖掘数据并进行分析需要时间。 在许多情况下,这需要开发人员的全职工作或全神贯注。 这就是为什么我认为,投资数据科学的最佳方法是在您的团队中建立专门的数据专职职位。
该职位不需要任何种类的标签或特定头衔即可有效地利用数据科学。 您只需要一个开发人员或一组开发人员来致力于从数据中收集更深的结论这一学科。 不过,我们确实需要确保他们具备某些工具和技能。
我已经看到大多数数据科学家都利用三个基本技能:
- 具有某种脚本语言的经验
- 对数学的背景或兴趣,尤其是统计学
- 精通SQL
数据科学家倾向于使用脚本语言作为将各种数据调用串在一起的一种方式。 这可能与使用脚本语言生成报告或显示见解的网站一样复杂。 但是,其唯一目的是协调较小的功能,以呈现和获取数据。
统计学背后的数学背景或兴趣对于数据科学而言确实很重要,因为它的有效性利用了您愿意并且能够考虑执行的见解和计算方式。 并非所有内容都将是平均值或总和。 您可能需要利用数学概率函数和其他统计工具来从数据中获得更深刻的见解。
SQL或任何一种数据库语言能力对于收集要分析的数据也至关重要。 有许多工具可帮助简化此过程。 但是,知道如何正确查询数据库以获取所需的数据对于数据科学至关重要。
归根结底,这些开发人员必须习惯于深入了解您的应用程序以收集数据。 他们还必须具有足够的自我指导能力,以使他们也知道该如何处理这些数据。 一些数据科学项目可能需要数周或数月才能显示出重要的结论,因为它们需要如此庞大且可衡量的数据集。
假设您没有资源来专门负责数据科学的开发人员或团队。 您可以签出几种解决方案,以帮助您的团队利用这些原则和结论。
自动化数据科学
目前最大的自动化数据科学解决方案往往基于错误报告或应用程序性能分析。 某些产品倾向于涵盖这两种想法的一部分。 但是,我认为它们的优势可能仅在于其中之一。
错误报告解决方案可帮助您跟踪软件中发生了多少异常或错误。 诸如Rollbar , Bugsnag和Sentry之类的流行解决方案可以帮助您的开发人员在发生错误时发出警报,还可以提供有关错误发生的频率和原因的更具体的详细信息。 在我的工作中,这些工具在尝试查找更深层次,更复杂的问题时是救生员。
应用程序分析解决方案可帮助您分析应用程序中最慢的部分。 诸如Skylight和New Relic之类的工具可以通过日志或错误可能不明显的方式帮助开发人员了解其应用程序的性能和可伸缩性。 这些工具将帮助您优化产品时减轻工作量。
这些解决方案中的任何一个缺点是它们仅提供对特定问题的特定答案。
在理想的世界中,您需要开发人员和自动化解决方案一起工作。 这样,您可以让人工开发人员处理更复杂的问题,而自动化工具则可以帮助您得出一系列结论,从而可以持续工作。
翻译自: https://www.javacodegeeks.com/2018/04/gaining-deeper-insights-with-data-science.html
不借助数据库实现事务