หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Note
คุณลักษณะนี้อยู่ในการแสดงตัวอย่างสาธารณะ การแสดงตัวอย่างนี้จะมีให้โดยไม่มีข้อตกลงระดับบริการ และไม่แนะนําสําหรับปริมาณงานการผลิต คุณลักษณะบางอย่างอาจไม่ได้รับการสนับสนุนหรืออาจมีความสามารถที่จํากัด สําหรับข้อมูลเพิ่มเติม ให้ดู เงื่อนไขเพิ่มเติมของการใช้สําหรับการแสดงตัวอย่าง Microsoft Azure
ชนิดกราฟจะอธิบายโครงสร้างของกราฟของคุณโดยการกําหนดว่าโหนดและขอบใดที่สามารถมีอยู่ได้ ลองนึกว่ามีลักษณะเหมือนพิมพ์เขียวหรือสคีมา ซึ่งระบุรูปร่างของโหนดและขอบในกราฟในแง่ของป้ายชื่อและคุณสมบัติของโหนด สําหรับขอบ (การเชื่อมต่อระหว่างโหนด) ยังระบุว่าขอบประเภทใดที่สามารถเชื่อมต่อโหนดประเภทใดได้บ้าง หากคุณคุ้นเคยกับฐานข้อมูลเชิงสัมพันธ์ ชนิดกราฟจะทํางานคล้ายกับวิธีที่ไดอะแกรม ER อธิบายตารางและความสัมพันธ์ของ Foreign Key
สําคัญ
บทความนี้ใช้ชุดข้อมูลกราฟตัวอย่างเครือข่ายสังคมโดยเฉพาะ
ชนิดกราฟมีประโยชน์ที่สําคัญหลายอย่าง:
- การตรวจสอบข้อมูล: ตรวจสอบว่ากราฟของคุณประกอบด้วยการผสมโหนดและขอบที่ถูกต้องเท่านั้น
- การปรับคิวรีให้เหมาะสม: ช่วยให้กลไกจัดการคิวรีเข้าใจโครงสร้างข้อมูลของคุณเพื่อประสิทธิภาพที่ดีขึ้น
- เอกสาร: ทําหน้าที่เป็นข้อกําหนดที่ชัดเจนของโครงสร้างกราฟของคุณสําหรับนักพัฒนาและนักวิเคราะห์
Note
บทความนี้แนะนําชนิดของกราฟโดยแนวคิดและแสดงข้อกําหนดโดยใช้ไวยากรณ์ที่กําหนดไว้ในมาตรฐาน GQL อย่างไรก็ตาม ไวยากรณ์นี้ไม่ได้รับการรองรับโดยตรงสําหรับกราฟใน Microsoft Fabric
ในเชิงโครงสร้าง ชนิดกราฟจะกําหนดชนิดโหนดและชนิดขอบของกราฟชนิดกราฟที่อนุญาต ตลอดจนข้อจํากัดเพิ่มเติมที่จํากัดกราฟเหล่านั้น
Note
ชนิดกราฟถูกกําหนดโดยให้ชุดของชนิดโหนด ชนิดขอบ และข้อกําหนดข้อจํากัด การเปลี่ยนลําดับของข้อกําหนดเหล่านี้จะไม่เปลี่ยนชนิดกราฟที่กําหนดไว้
กําหนดชนิดของโหนด
ชนิดของโหนดระบุป้ายชื่อและชนิดของคุณสมบัติที่โหนดของคุณสามารถมีได้ นี่คือวิธีการระบุชนิดของโหนดพื้นฐาน:
(:Organization => {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
})
ตัวอย่างนี้สร้างชนิดโหนดที่กําหนดโหนดด้วย:
- ป้ายชื่อ
Organization -
idคุณสมบัติที่เก็บค่าจํานวนเต็มที่ไม่มีเครื่องหมาย และไม่สามารถเป็น null ได้ -
nameคุณสมบัติที่จัดเก็บค่าสตริง (อาจเป็น null) -
urlคุณสมบัติที่จัดเก็บค่าสตริง (อาจเป็น null)
ตัว :: ดําเนินการ ระบุชนิดข้อมูลสําหรับแต่ละคุณสมบัติ ในขณะที่ NOT NULL ระบุว่าคุณสมบัติต้องมีค่าเสมอ
Note
NOT NULL ถือเป็นส่วนหนึ่งของชนิดใน GQL ซึ่งแตกต่างจาก SQL
ชนิดโหนดยังซับซ้อนมากขึ้น ด้วยคุณสมบัติและชนิดข้อมูลที่มากขึ้น:
(:Person => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
firstName :: STRING,
lastName :: STRING,
gender :: STRING,
birthday :: UINT64,
browserUsed :: STRING,
locationIP :: STRING
})
ชนิดของโหนดที่มีหลายป้ายชื่อ
โหนดสามารถมีหลายป้ายชื่อเพื่อสนับสนุนการสืบทอดและการจัดประเภท คุณสามารถระบุป้ายชื่อหลายป้ายสําหรับชนิดของโหนดได้ แต่ป้ายหนึ่งป้าย ("ป้ายชื่อคีย์") ต้อง ระบุประเภทโหนดที่ไม่ซ้ํากัน (ถ้ามีการระบุป้ายชื่อเพียงป้ายเดียว จะนําไปเป็นป้ายชื่อคีย์ของชนิดโหนด)
ตัวอย่างเช่น พิจารณา:
(:University => :Organization),
(:Company => :Organization)
Universityที่นี่ และ Company เป็นป้ายชื่อหลักของโหนดสองชนิดที่กําหนด ในขณะที่Organizationเป็นป้ายชื่อรองที่ใช้ร่วมกันโดยทั้งสองชนิด สังเกตว่าป้ายชื่อคีย์และป้ายชื่อรองคั่นด้วย => ในแต่ละชนิดของโหนดอย่างไร วิธีนี้จะสร้างลําดับชั้นชนิดที่ทั้งมหาวิทยาลัยและบริษัทเป็นชนิดขององค์กร
เนื่องจากป้ายชื่อหลักระบุประเภทโหนด คุณสมบัติของชนิดของโหนดที่ระบุโดยป้ายชื่อรองจะถูกสืบทอดโดยอัตโนมัติเมื่อใช้ไวยากรณ์นี้ ดังนั้นไวยากรณ์ก่อนหน้านี้สามารถเข้าใจเพื่อกําหนดชนิดโหนดต่อไปนี้ได้อย่างมีประสิทธิภาพ:
(:University => :Organization {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
}),
(:Company => :Organization {
id :: UINT64 NOT NULL,
name :: STRING,
url :: STRING
})
Note
ป้ายชื่อคีย์เป็นสิ่งสําคัญเมื่อคุณกําลังกําหนดประเภทโหนดลําดับชั้น ซึ่งช่วยให้ระบบเข้าใจชนิดของโหนดที่คุณกําลังอ้างถึงเมื่อแชร์ป้ายกํากับเดียวกันหลายชนิด
ประหยัดเวลาด้วยทางลัดการสืบทอด
การทําซ้ําป้ายชื่อและคุณสมบัติจากชนิดโหนดหลักจะได้รับความน่าเบื่อและเกิดข้อผิดพลาด Graph ใน Microsoft Fabric มีตัว += ดําเนินการเพื่อให้คุณสามารถระบุเฉพาะป้ายชื่อพิเศษ (ไม่ใช่โดยธรรมชาติ) และชนิดคุณสมบัติ:
(:Post => :Message += {
language :: STRING,
imageFile :: STRING
})
เมื่อไม่ได้ระบุคุณสมบัติเพิ่มเติม กราฟจะสืบทอดคุณสมบัติที่จําเป็นทั้งหมดจากชนิดพาเรนต์:
(:Comment => :Message) -- Same as: (:Comment => :Message += {})
ใช้ชนิดโหนดนามธรรม
คุณสามารถกําหนดชนิดของโหนดสําหรับการสร้างลําดับชั้นเท่านั้น แม้ว่ากราฟของคุณจะไม่ประกอบด้วยโหนดคอนกรีตของชนิดนั้นก็ตาม ชนิดของโหนด Abstract มีประโยชน์สําหรับการสร้างการจัดกลุ่มแนวคิดและชุดคุณสมบัติที่ใช้ร่วมกัน สําหรับวัตถุประสงค์นี้ คุณสามารถกําหนดชนิดโหนดเป็น ABSTRACT กราฟใน Microsoft Fabric:
ABSTRACT (:Message => {
id :: UINT64 NOT NULL,
creationDate :: ZONED DATETIME,
browserUsed :: STRING,
locationIP :: STRING,
content :: STRING,
length :: UINT64
})
ชนิดโหนด Abstract ไม่พร้อมใช้งานสําหรับการโหลดกราฟโดยตรง — มีไว้เพื่อจัดโครงสร้างลําดับชั้นของคุณและกําหนดคุณสมบัติที่ใช้ร่วมกันเท่านั้น สามารถโหลดชนิดโหนดคอนกรีตที่สืบทอดมาจากชนิดนามธรรมด้วยข้อมูลได้
กําหนดชนิดของขอบและตระกูล
ชนิดของขอบจะกําหนดป้ายชื่อหลัก ชนิดของคุณสมบัติ และชนิดโหนดจุดสิ้นสุดสําหรับขอบ ในฐานข้อมูลกราฟ ขอบจะแสดงการเชื่อมต่อระหว่างโหนด ข้อกําหนดของ edge บอกให้ทราบว่าความสัมพันธ์ใดได้รับอนุญาตในกราฟของคุณ:
(:Person)-[:knows { creationDate :: ZONED DATETIME }]->(:Person)
ขอบชนิดนี้จะกําหนดขอบทั้งหมดด้วย:
- ป้ายชื่อ
knows(คีย์) -
creationDateคุณสมบัติที่จัดเก็บZONED DATETIMEค่า (ประทับเวลาร่วมกับค่าชดเชยเขตเวลา) - ปลายทางต้นทางและปลายทางที่ต้องเป็น
Personโหนดทั้งสอง
ลูกศร -> ระบุทิศทางของขอบ จากต้นทางไปยังปลายทาง ข้อมูลทิศทางนี้เป็นสิ่งสําคัญสําหรับการทําความเข้าใจความหมายของกราฟของคุณ
ต่อไปนี้คือตัวอย่างของชนิดขอบเพิ่มเติม:
(:Person)-[:studyAt { classYear :: UINT64 }]->(:University)
(:Person)-[:workAt { workFrom :: UINT64 }]->(:Company)
คุณจําเป็นต้องระบุป้ายชื่อคีย์ (Person, University, หรือ Company) สําหรับชนิดโหนดปลายทางเท่านั้น - คุณไม่จําเป็นต้องทําซ้ําข้อกําหนดชนิดของโหนดที่สมบูรณ์ ระบบจะแก้ไขการอ้างอิงเหล่านี้ไปยังข้อกําหนดชนิดโหนดแบบเต็ม
กลุ่มประเภทขอบกราฟ
ป้ายชื่อคีย์ของขอบกราฟทํางานแตกต่างจากป้ายชื่อคีย์ของโหนด คุณสามารถมีชนิดของขอบได้หลายชนิดที่มีป้ายชื่อหลักเหมือนกันในกราฟประเภทหนึ่ง ตราบใดที่มีป้ายกํากับและชนิดคุณสมบัติเหมือนกัน อย่างไรก็ตาม ชนิดของขอบสองชนิดที่มีป้ายชื่อคีย์เดียวกันต้องแตกต่างกันในโหนดจุดสิ้นสุดอย่างน้อยหนึ่งชนิด เราเรียกชุดของประเภทของขอบด้วยป้ายกํากับคีย์เดียวกันซึ่งเป็นตระกูลประเภทขอบ
แนวคิดนี้ช่วยให้คุณสามารถสร้างแบบจําลองความสัมพันธ์ชนิดเดียวกันระหว่างเอนทิตีชนิดต่าง ๆ ได้
ตัวอย่าง:
(:City)-[:isPartOf]->(:Country),
(:Country)-[:isPartOf]->(:Continent)
ขอบทั้งสองชนิดใช้ isPartOf ป้ายชื่อ แต่พวกเขาเชื่อมต่อโหนดชนิดต่าง ๆ กัน ก่อกลุ่มประเภทขอบที่แสดงถึงความสัมพันธ์ของการบรรจุแบบลําดับชั้น
ใช้การพิมพ์ย่อยของโหนดในคําจํากัดความประเภท Edge
การต้องสะกดขอบแต่ละประเภทที่เป็นไปได้อาจเป็นเรื่องที่น่าเบื่อหน่ายเล็กน้อย นอกจากนี้ยังสามารถกําหนดตระกูลประเภท Edge ที่สอดคล้องกับลําดับชั้นของประเภทโหนดที่บอกเป็นนัยโดยปลายทาง
ตัวอย่าง:
-- Node types
ABSTRACT (:Message { ... }),
(:Post => :Message { ... }),
(:Comment => :Message { ... }),
-- All edge types (x)-[:hasTag]->(:Tag) where x is at least a (:Message)
(<:Message)-[:hasTag]->(:Tag)
สิ่งนี้กําหนดประเภท Edge ต่อไปนี้โดยปริยาย:
(:Post)-[:hasTag]->(:Tag)
(:Comment)-[:hasTag]->(:Tag)
ชนิดคุณสมบัติที่สนับสนุน
เมื่อคุณกําลังกําหนดชนิดของคุณสมบัติ ชนิดค่าคุณสมบัติต้องเป็นชนิดที่กราฟใน Microsoft Fabric สนับสนุน การเลือกชนิดข้อมูลที่ถูกต้องเป็นสิ่งสําคัญสําหรับประสิทธิภาพการจัดเก็บและประสิทธิภาพของคิวรี
ต่อไปนี้เป็นชนิดข้อมูลที่คุณสามารถใช้สําหรับค่าคุณสมบัติ:
-
INT(เช่นกัน:INT64) -
UINT(เช่นกัน:UINT64) STRING-
BOOL(เช่นกัน:BOOLEAN) -
DOUBLE(เช่น:FLOAT64)FLOAT -
T NOT NULLโดยที่Tคือชนิดข้อมูลใด ๆ ก่อนหน้า -
LIST<T>และLIST<T> NOT NULLโดยที่Tใด ๆ ของชนิดข้อมูลก่อนหน้า
สําหรับข้อมูลที่สมบูรณ์เกี่ยวกับชนิดของค่า ดูค่า GQL และชนิดของค่า
สําคัญ
ชนิดคุณสมบัติทั้งหมดที่มีชื่อเดียวกันกับที่เกิดขึ้นในชนิดโหนดหรือชนิดขอบของชนิดกราฟที่กําหนดต้องระบุชนิดค่าคุณสมบัติเดียวกัน
ข้อยกเว้นเดียว: พวกเขาสามารถแตกต่างกันไม่ว่าจะรวมค่า Null หรือไม่
ตัวอย่างเช่น ตามกฎนี้ ชนิดกราฟที่มี (:A { id :: STRING }), (:B { id :: STRING NOT NULL}) จะถูกต้อง ในขณะที่ชนิดกราฟด้วย (:A { id :: STRING }), (:B { id :: INT}) จะไม่ถูกต้อง
ตั้งค่าข้อจํากัดของคีย์โหนด
ข้อจํากัดของคีย์โหนดจะกําหนดวิธีการที่แต่ละโหนดในกราฟของคุณได้รับการระบุที่ไม่ซ้ํากันโดยค่าคุณสมบัติอย่างน้อยหนึ่งรายการ ข้อจํากัดหลักจะทํางานเหมือนกับข้อจํากัดของคีย์หลักในฐานข้อมูลเชิงสัมพันธ์และรับประกันความสมบูรณ์ของข้อมูล ข้อจํากัดของคีย์โหนดสามารถกําหนดเป้าหมายโหนดในหลายชนิดโหนด ซึ่งช่วยให้คุณกําหนดคีย์โหนดสําหรับลําดับชั้นแนวคิดทั้งหมดได้
การทําความเข้าใจข้อจํากัดหลักเป็นสิ่งสําคัญเนื่องจาก:
- ตรวจสอบให้แน่ใจว่าไม่ซ้ํากัน: ป้องกันโหนดที่ซ้ํากันตามตรรกะทางธุรกิจของคุณ
- เปิดใช้งานการค้นหาที่มีประสิทธิภาพ: อนุญาตให้ระบบปรับคิวรีให้เหมาะสมซึ่งค้นหาโหนดเฉพาะ
- สนับสนุนการรวมข้อมูล: ให้วิธีการที่เสถียรในการอ้างอิงโหนดข้ามแหล่งข้อมูลที่แตกต่างกัน
สําคัญ
สําหรับกราฟใน Microsoft Fabric ข้อจํากัดหลักข้อเดียวที่ต้องจํากัดทุกโหนด
วิธีการทํางานของข้อจํากัดของคีย์โหนด
คุณสามารถระบุข้อจํากัดของคีย์โหนดในชนิดกราฟของคุณ แต่ละข้อจํากัดของคีย์โหนดมีลักษณะเฉพาะที่ทําให้ทํางานได้อย่างมีประสิทธิภาพ:
ส่วนประกอบของข้อจํากัดคีย์โหนด:
- มีชื่อที่ไม่ซ้ํากันภายในชนิดกราฟเพื่อให้ง่ายต่อการอ้างอิง
- กําหนดโหนดเป้าหมายโดยใช้ รูปแบบข้อจํากัด อย่างง่ายที่ระบุโหนดที่ใช้กับข้อจํากัดนั้น
- กําหนดคุณสมบัติที่สร้างค่าคีย์ที่ไม่ซ้ํากัน
ตัวอย่าง:
CONSTRAINT person_pk
FOR (n:Person) REQUIRE n.id IS KEY
ไวยากรณ์นี้สร้างข้อจํากัดของคีย์โหนดที่เรียกว่าperson_pkสําหรับโหนดทั้งหมดที่มีป้ายชื่อเป็นอย่างน้อยPerson ข้อจํากัดช่วยให้แน่ใจว่าแต่ละโหนดในกราฟจะถูกระบุที่ไม่ซ้ํากันโดยคุณสมบัติid ไม่มีสองโหนดที่มี Person ป้ายชื่อสามารถมีค่าเดียวกัน id ได้
คุณยังสามารถกําหนดคีย์ผสมที่ใช้คุณสมบัติหลายรายการร่วมกันเพื่อให้แน่ใจว่าไม่ซ้ํากันโดยใช้ CONSTRAINT ... FOR ... REQUIRE (n.prop1, n.prop2) IS KEY ไวยากรณ์
สําคัญ
คุณสมบัติที่ใช้ในข้อจํากัดหลัก:
- ไม่สามารถเป็น Null ได้
- ต้องประกาศเป็น
NOT NULLในชนิดโหนดและชนิดขอบที่กําหนดเป้าหมายตามข้อจํากัดหลัก