NDB 叢集內部機制  /  NDB 核心區塊  /  NDBFS 區塊

4.15 NDBFS 區塊

此區塊提供 NDB 檔案系統抽象層,位於目錄 storage/ndb/src/kernel/blocks/ndbfs 中,其中包含以下檔案

  • AsyncFile.hpp:定義 AsyncFile 類別,代表非同步檔案。所有動作都與程序執行的其他活動並行執行。由於所有動作都在個別執行緒中執行,因此動作結果會透過記憶體通道傳回。為了非同步通知完成的請求,每個呼叫都包含一個請求作為參數。此類別用於與其他活動並行讀取或寫入資料至磁碟。

  • AsyncFile.cpp:定義非同步檔案可執行的動作,並實作這些動作。

  • Filename.hpp:定義 Filename 類別。接收一個 128 位元值(作為四個長的陣列)並以此產生檔案名稱。此檔案名稱會編碼有關檔案的資訊,例如它是檔案還是目錄,如果是檔案,則會編碼檔案類型。可能的類型包括資料檔、片段日誌、片段清單、表格清單、綱要日誌和系統檔等等。

  • Filename.cpp:實作 Filename 類別的 set() 方法。

  • MemoryChannelTest/MemoryChannelTest.cpp:用於測試記憶體通道讀寫(即讀寫環形緩衝區)的基本程式。

  • OpenFiles.hpp:實作 OpenFiles 類別,該類別提供一些便利方法,用於判斷指定的檔案是否已開啟。

  • VoidFs.cpp:用於無磁碟作業。產生一個針對寫入操作的虛擬確認。

  • CircularIndex.hpp:此檔案中定義的 CircularIndex 類別,作為實作環形緩衝區的基礎模組。它會以一般索引的方式遞增,直到達到最大大小,然後重設為零。

  • CircularIndex.cpp:僅包含單一 #define,目前未實際使用。

  • MemoryChannel.hpp:定義 MemoryChannelMemoryChannelMultipleWriter 類別,提供基於指標的通道,用於在兩個執行緒之間通訊。它不會將任何資料複製到通道中或從通道中複製出來,因此放入的項目在另一個執行緒將其傳回之前無法使用。不支援偵測項目的傳回。

  • MemoryChannel.cpp虛擬檔案,目前未使用。

  • Ndbfs.hpp:由於 NDB 信號請求可能會導致對 AsyncFile 的多個請求,因此有一個類別(在此檔案中定義)負責追蹤所有未完成的請求,並在所有請求完成時將結果回報給傳送區塊。

  • Ndbfs.cpp:實作 Ndbfs 類別的初始化和信號處理方法。

  • Pool.hpp:建立並管理物件集區,供 Ndbfs 和此區塊中的其他類別使用。

  • AsyncFileTest/AsyncFileTest.cpp:測試程式,用於測試和基準化 AsyncFile 的功能。