《Clojure数据分析秘笈》——3.1节引言

简介:

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第3章,第3.1节引言,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

第3章
使用并发编程管理复杂度
3.1 引言
设计和创建一个计算机系统是一个均衡行为:不断地添加特性和功能并保持代码简单和系统性能合理。数据分析系统也是如此。事实上,数据分析系统问题更糟糕。通常而言,数据只是部分一致,在开始分析之前需要采取多种策略来抽取有用数据。
这会导致问题失控。
Clojure有一系列可以帮助管理系统复杂性的工具。这些最强大的工具之一是并发编程。这使得可以使用另外一种方式设计程序。与之前一段代码做很多事情并且有非常直接、紧密的依赖关系不同,可以通过将许多完成不同功能的独立模块整合来使程序结构更模块化。这些模块之间使用简单的、设计良好的协议进行通信。但是它们均独立并发(也就是说在同一时间)地工作。Clojure中完成并发功能的基本工具非常简单:一款内置的软件事务主存系统(Software Transactional Memory,STM,参见http://clojure.org/refs)。这个工具采用了大多数开发人员熟悉的数据库事务的语义,并将其应用到计算机内存中。
Clojure中也有并发消息处理系统—构建于STM之上的agent。agent包含状态信息,通过向其发送函数消息来并发更新状态。STM与agent一起提供了一种将程序设计为可维护且易理解结构的方式。
之所以这些都起作用是因为所有的本地Clojure数据结构都是不可变的。它们不能被改变。由于处理不可变数据,尽管在高并发的环境下STM也可以保证其事务的一致性和安全性。这些保证很有用,因为它们可以帮助我们分析并解释数据和程序,并且帮助管理正在构建的系统的复杂性。
需要注意的是,并发(concurrent)描述了程序按什么样的架构来工作。每个进程可能做不同的事情。人们期望并发会提升速度,但是并发通常只是组织程序、将涉及不同任务的程序的各个组成部分分离并去耦合的一种好方式。如果你不停地做同一件事情并且想做得更快,那就是并行(parallelism)。我们将在第4章中学习与其相关的方法。

相关文章
|
数据挖掘
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(八)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
|
安全 数据挖掘 大数据
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(七)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
|
安全 大数据 数据挖掘
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(六)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
|
敏捷开发 数据挖掘 BI
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(六)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(六)
|
敏捷开发 数据挖掘
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(五)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(五)
|
敏捷开发 数据挖掘 测试技术
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(四)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
|
安全 数据挖掘 测试技术
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(三)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(三)
|
敏捷开发 数据挖掘
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(二)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(二)
|
数据挖掘 BI 数据库
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(一)
《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(一)
带你读《SAS数据分析开发之道 软件质量的维度》第一章概览1.1引言(一)
|
算法 大数据 数据挖掘
《Clojure数据分析秘笈》——导读
本节书摘来自华章社区《Clojure数据分析秘笈》一书中的目录,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看
1473 0