熟悉 NebulaGraph 社群的小夥伴可能都知道一個技能認證叫做:NGCP,全稱 NebulaGraph Certified Professional。使用者在考試認證期間在 1 個小時內回答 100 道題目,並獲得 60+ 分,便是 NebulaGraph 認證過的 NGCP 使用者。NGCP 使用者除了會有實體證書之外,擁有與企業認證使用者相同的技術支援服務。
看樣子,只要回答 100 道問題,NGCP 證書、認證獎勵就到手!但,你知道 NGCP 透過率是多少嗎?
答案是:16.7%。
在 NebulaGraph 認證考試出題人檢視 NGCP 考試成績時,發現有部分試題的正確率特別低,針對這些難題這次我們來一把解析,給考過沒考過的小夥伴遞個“小紙條”。
下面,請聽題:
題 1. 要檢視 TAG player 上的 TTL 選項值,錯誤的命令有:
A. SHOW TAGS
B. DESCRIBE TAG player
C. SHOW CREATE TAG player
D. SHOW TTL ON player
解析:
SHOW TAGS 顯示當前圖空間內的 Tag 名稱;DESCRIBE TAG 顯示 Tag 的欄位名稱、資料型別、是否支援為 NULL、預設值和描述;SHOW TTL ON player 是錯誤命令。只有 SHOW CREATE TAG player 命令能看到完整的 Tag 建立語句,包含 TTL 選項值。所以,正確答案為 ABD。
題 2. ACID 意義上,在不同的客戶端程式看來,NebulaGraph 的隔離性是:
A. 序列化讀
B. 可重複讀
C. 提交讀
D. 未提交讀
解析:
因為當前沒有隔離性,所以是未提交讀。例如,前一個子句完成而後一個子句沒有完成,此時併發地另一個會話執行查詢,可能會查詢到不完整的資料。所以,正確答案為 D。
題 3. 在建立全文索引時,索引名稱可以為下面哪些:
A. nebula-index
B. index_1
C. nebula_index
D. _index_1
解析:
NebulaGraph 的全文索引名稱必須以 nebula 開頭。所以,正確答案為 AC。
題 4. 設定 timezone_name 修改時區後,返回結果為所設定時區的是:
A. TIMESTAMP 型別資料
B. DATETIME 型別資料
C. TIME 型別資料
D. 查詢執行時間
解析:
TIMESTAMP 型別資料與時區無關;DATETIME 和 TIME 型別資料的時區由配置檔案的 timezone_name 決定;查詢執行時間的時區由服務所在機器的系統時區決定。所以,正確答案為 BC。
題 5. NebulaGraph 核心部分預設使用的埠有:
A. 9559
B. 19669
C. 9780
D. 19560
解析:
9559 為 Meta 服務的對外埠;19669 為 Graph 服務的 HTTP 埠,可以用來查詢 Graph 服務的監控指標;9780 為 Storage 服務的對內埠之一,還有 9777 和 9778;19560 是已經棄用的 HTTPS 埠。所以,正確答案為 ABC。
題 6. 以下返回不為 NULL 的有:
A. hash( NULL )
B. 2 >= "2"
C. NULL == null
D. null IS NULL
解析:
對 NULL 進行雜湊操作,結果不為 NULL;數字 2 和字串 2 無法對比,所以結果為 NULL;NULL 表示沒有值,進行對比沒有意義,結果為 NULL;null IS NULL 為正常的判斷語句,結果不為 NULL。所以,正確答案為 AD。
題 7. 關於 NebulaGraph 執行計劃的說法中,錯誤的有:
A. 實現了基於代價的最佳化
B. 實現了基於規則的最佳化
C. 可以透過建立索引來加速查詢
D. 可以進行計劃快取
解析:
NebulaGraph 只支援基於規則的最佳化;NebulaGraph 中的索引沒有加速查詢的功能,只是用於定位到資料的必要前置條件;NebulaGraph 無法進行查詢的預編譯(包括相應的計劃快取)。所以,正確答案為 B。
題 8. 已知 Tag player 有屬性 name 和 age,Tag player 本身和屬性 name 上有索引,在執行 LOOKUP ON player WHERE player.age == 36 YIELD player.name
時,Nebula Graph 會優先查詢 age 屬性上的索引,當發現 age 屬性沒有索引,NebulaGraph 可能會:
A. 使用 name 屬性的索引繼續查詢
B. 使用 Tag player 本身的索引繼續查詢
C. 使用 VID 繼續查詢
D. 報錯,提示找不到索引
解析:
索引之間有可替代關係。在 LOOKUP 語句中 player 本身的索引和 name 屬性的索引可能替代 age 屬性索引用於屬性查詢。所以,正確答案為 AB。
題 9. 以下 nGQL 語句錯誤的是:
A. $var = GO FROM "player100" OVER follow YIELD dst(edge) AS id GO FROM $var.id OVER serve YIELD properties($$).name AS Team, properties($^).name AS Player
;
B. $var = GO FROM "player100" OVER follow YIELD dst(edge) AS id | GO FROM $var.id OVER serve YIELD properties($$).name AS Team, properties($^).name AS Player
;
C. $var = GO FROM "player100" OVER follow YIELD dst(edge) AS id; GO FROM $var.id OVER serve YIELD properties($$).name AS Team, properties($^).name AS Player
;
D. $var = GO FROM "player100" OVER follow YIELD dst(edge) AS id;| GO FROM $var.id OVER serve YIELD properties($$).name AS Team, properties($^).name AS Player
;
解析:
只有選項 C 的語句是正確的。選項 A 的 2 個語句沒有分隔;選項 B 使用管道符時,後一個語句中的 $var.id
需要改成引用符 $-.id
;選項 D 同時使用了分號和管道符。所以,正確答案為 ABD。
不知道看完本文的是,在解析問題之前答對多少道呢?來挑戰下 NGCP 題庫,拿個認證考試證書吧!掃描下方二維碼即可開啟 NGCP 認證之旅,點選連結是一樣效果喲 https://academic.nebula-graph.io/?lang=ZH_CN