熟悉 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