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)及更好的性能。動態:對已經處理完的數據集進行統計,以此作為運行時的最佳化查詢計畫的依據。