(翻譯自apache drill 官網。)
drill是從地基開始就奔向高效能和大資料集去設計的,下面列出來的是drill能夠做到高效能的核心要點。
drill提供了乙個強大的分布式引擎來處理查詢。使用者可以從集群的任何乙個節點是提交查詢。你可以新增新的節點到集群中,以為了支援更多使用者的更多資料,或是獲得更好的效能。
通過使用一種純記憶體的分層的,列式的資料模型,drill同時為列式儲存,列式執行都做了優化。當資料是儲存在列式儲存的檔案上時(比如像parquet)drill會避免去訪問那些查詢中根本不涉及到的列。drill的執行層同樣可以直接對列式資料進行sql查詢,而不需要做乙個分行化的操作。列式儲存和直接列式執行,這兩個優化的元件顯示地降低了記憶體消耗,並為bi和分析型別的作業提供了更快的執行效率。
相比一次只處理乙個表記錄中的乙個值 ,drill中的向量化允許cpu在向量上操作,也就是一批記錄上操作。乙個記錄批次包含來自不同的記錄上的一組數值 。向量處理能夠做到非常高效的技術基礎,在於現在的晶元技術,這些晶元都攜帶了深度流水線化的cpu設計。讓所有管理都達到接近峰值的高效是不可能的,因為**複雜度太高了。
執行時編譯相比解釋執行提供了更快的執行。drill為每一條查詢指令都生成了非常高效的指令。下圖展示了drill的編譯和指令生成過程。
drill 使用樂觀的執行模型來處理查詢,假定在小片的查詢中失敗是不太常見的。drill不會浪費時間在建立邊界或是檢查點上,這樣就可以最小化恢復時間。在單條查詢失敗的時候,這條查詢就直接返回了。drill執行使用一種所有任務一次性安排的流水線模型。查詢盡可能地在記憶體中執行以便能在流水線中完成作業,只有記憶體不足時才會持久化到磁碟。
Auto Layout Guide官網文件翻譯
基於對這些檢視的約束,自動布局 auto layout 會動態的計算檢視層級中所有檢視的大小和位置。例如,你可以約束乙個按鈕,使其與乙個影象檢視保持水平居中,並且使該按鈕的頂部始終在影象檢視的底部下方的8點距離處。如果影象檢視的大小和位置發生了變化,按鈕的位置將會自動調整以匹配約束的位置。這種基於約...
B2G OS官網文件梳理
在網上查閱關於firefox os相關的文章 部落格,發現國內關於它的文章很少,即便有也是某些做過與firefox os相關工作的人根據b2g os官方文件翻譯而來的,且翻譯水平不一 若要研究此系統還是要仔細研讀b2g os官方文件。但是官網文件內部包含很多鏈結跳轉 雖然單個文件講的是乙個方向,但其...
嘗試翻譯JRUnit的文件(四)
繼續上次的.clientserver 下乙個例子是關於在junit框架下執行c s測試引發的一些問題,以及jrunit是如何解決這些問題的,相關 位於org.jboss.jrunit.sample.clientserver包。原來的測試類 servertest只要做些簡單的改動就可以了 父類從原來的...