Dryad和DryadLINQ是微软研究院的两个项目,用于辅助C#开发人员在在计算机集群或数据中心里处理大规模的数据。
Dryad是一个在计算机集群或数据中心里并行地执行顺序程序的基础架构。
DryadLINQ是“一个把LINQ程序转化成分布式计算指令,以便运行于PC集群的编译器”。这个转化过程可以分解为以下几步:
C#和LINQ数据对象转化为分布式的文件块。
LINQ查询转化为分布式Dryad任务。
C#方法转化为运行于Dryad任务节点上的代码。
DryadLINQ有如下功能:
声明式编程:计算指令要求使用类似SQL的高级语言进行表示。
自动并行化:DryadLINQ编译器将顺序的声明式代码,转化为分布在大规模计算机集群中高度并行的查询计划。而对于单台机器中多核的使用,DryadLINQ则依赖PLINQ并行框架。
Visual Studio集成:程序员在使用DryadLINQ时可以利用VS中大量的高级特性,如智能提示、代码重构、集成调试、构建以及原代码管理。
.NET集成:所有的.NET类库,包括Visual Basic,以及各种动态语言都可以自由使用。
类型安全:对分布式计算进行静态检查。
自动序列化:数据传输机制会自动处理所有的.NET对象类型。
任务图的优化静态:一系列丰富的查询优化规则,可以使查询计划有更好的局部性(locality)及更好的性能。动态:对已经处理完的数据集进行统计,以此作为运行时的优化查询计划的依据。