https://www.yangdb.org/
วิกิ
ข้อมูลเวอร์ชัน
Release.บันทึก
ลิเออร์ เพอร์รี่
โรมัน มาร์โกลิส
โมติ โคเฮน
เอลาด วีส
ชิมอน เบนอชติ
โพสต์แนะนำความคิดริเริ่มโอเพ่นซอร์สใหม่ของเราสำหรับการสร้างฐานข้อมูลกราฟแบบกระจายที่ปรับขนาดได้ผ่าน Opensearch https://www.linkedin.com/pulse/making-db-lior-perry/
การใช้งาน Opensearch อีกครั้งเป็นกราฟ DB https://medium.com/@imriqwe/elasticsearch-as-a-graph-database-bc0eee7f7622
โลกของฐานข้อมูลกราฟมีผลกระทบอย่างมากในช่วงไม่กี่ปีที่ผ่านมา โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับเครือข่ายสังคมและผลกระทบของกิจกรรมในชีวิตประจำวันของเรา
RDBMS ที่ครั้งหนึ่งเคยยิ่งใหญ่ (และโดดเดี่ยว) จำเป็นต้องสร้างพื้นที่สำหรับพันธมิตรที่มีความสำคัญมากขึ้นเรื่อยๆ ในศูนย์ข้อมูล นั่นก็คือ ฐานข้อมูลกราฟ
Twitter กำลังใช้งาน Facebook กำลังใช้งาน แม้แต่เว็บไซต์หาคู่ออนไลน์ก็กำลังใช้งาน พวกเขากำลังใช้กราฟความสัมพันธ์ ท้ายที่สุดแล้ว สังคมก็คือสังคม และท้ายที่สุดแล้ว ทุกอย่างเกี่ยวกับความสัมพันธ์
มีองค์ประกอบหลักสองประการที่ทำให้เทคโนโลยีกราฟแตกต่าง: การจัดเก็บและการประมวลผล
พื้นที่เก็บข้อมูลกราฟโดยทั่วไปหมายถึงโครงสร้างของฐานข้อมูลที่มีข้อมูลกราฟ
พื้นที่จัดเก็บกราฟดังกล่าวได้รับการปรับให้เหมาะสมสำหรับกราฟในหลาย ๆ ด้าน ทำให้มั่นใจได้ว่าข้อมูลจะถูกจัดเก็บอย่างมีประสิทธิภาพ โดยทำให้โหนดและความสัมพันธ์อยู่ใกล้กันในชั้นกายภาพจริง
พื้นที่จัดเก็บแบบกราฟจะถูกจัดประเภทเป็นแบบไม่ใช่เนทีฟเมื่อพื้นที่จัดเก็บมาจากแหล่งภายนอก เช่น ฐานข้อมูลเชิงสัมพันธ์ แบบเรียงเป็นแนว หรือฐานข้อมูลประเภทอื่นๆ (โดยส่วนใหญ่แล้ว พื้นที่จัดเก็บ NoSQL จะเหมาะกว่า)
ฐานข้อมูลกราฟที่ไม่ใช่เจ้าของภาษามักจะประกอบด้วยที่เก็บค่าเชิงสัมพันธ์ เอกสาร และคีย์ที่มีอยู่ ซึ่งปรับให้เหมาะกับสถานการณ์การสืบค้นแบบจำลองข้อมูลกราฟ
การประมวลผลกราฟประกอบด้วยการเข้าถึงกราฟ การเคลื่อนที่ผ่านจุดยอดและขอบ และการรวบรวมผลลัพธ์
การแวะผ่านคือวิธีที่คุณสืบค้นกราฟ การนำทางจากโหนดเริ่มต้นไปยังโหนดที่เกี่ยวข้อง โดยติดตามความสัมพันธ์ตามกฎบางอย่าง
ค้นหาคำตอบของคำถาม เช่น “เพลงไหนที่เพื่อนของฉันชอบแต่ฉันยังไม่มี?”
หนึ่งในโมเดลยอดนิยมสำหรับการแสดงกราฟคือโมเดลคุณสมบัติ
โมเดลนี้มีเอนทิตีที่เชื่อมต่อกัน (โหนด) ซึ่งสามารถเก็บแอตทริบิวต์จำนวนเท่าใดก็ได้ (คู่คีย์-ค่า-)
โหนดมีรหัสเฉพาะและรายการคุณลักษณะที่แสดงถึงคุณสมบัติและเนื้อหา
โหนดสามารถทำเครื่องหมายด้วยป้ายกำกับที่แสดงถึงบทบาทที่แตกต่างกันในโดเมนของคุณ นอกจากคุณสมบัติความสัมพันธ์แล้ว ป้ายกำกับยังสามารถให้บริการข้อมูลเมตาบนองค์ประกอบกราฟได้อีกด้วย
โหนดมักใช้เพื่อเป็นตัวแทนของเอนทิตี แต่ขึ้นอยู่กับความสัมพันธ์ของโดเมนก็อาจใช้เพื่อจุดประสงค์นั้นได้เช่นกัน
ความสัมพันธ์จะแสดงโดยโหนดต้นทางและเป้าหมายที่พวกเขากำลังเชื่อมต่ออยู่ และในกรณีที่มีการเชื่อมต่อหลายจุดระหว่างจุดยอดเดียวกัน – ป้ายกำกับเพิ่มเติมของคุณสมบัติที่จะแยกแยะ (ประเภทของความสัมพันธ์)
ความสัมพันธ์จะจัดโหนดต่างๆ ให้เป็นโครงสร้างที่กำหนดเองได้ ซึ่งช่วยให้กราฟมีลักษณะคล้ายกับรายการ ต้นไม้ แผนที่ หรือเอนทิตีแบบผสม ซึ่งสิ่งใดสิ่งหนึ่งอาจรวมกันเป็นโครงสร้างที่ซับซ้อนยิ่งขึ้นได้
เหมือนกับคีย์ต่างประเทศระหว่างตารางในโมเดล DB เชิงสัมพันธ์ ในความสัมพันธ์ของโมเดลกราฟจะอธิบายความสัมพันธ์ระหว่างจุดยอด
ความแตกต่างที่สำคัญอย่างหนึ่งในโมเดลนี้ (เมื่อเทียบกับสคีมาเชิงสัมพันธ์แบบเข้มงวด) ก็คือ โครงสร้างแบบไม่มีสคีมานี้ทำให้สามารถเพิ่ม/ลบความสัมพันธ์ระหว่างจุดยอดโดยไม่มีข้อจำกัดใดๆ
โมเดลกราฟเพิ่มเติมคือโมเดล Resource Description Framework (RDF)
กรณีการใช้งานของเราอยู่ในโดเมนของเครือข่ายโซเชียล กราฟโซเชียลขนาดใหญ่มากที่ต้องอัปเดตบ่อยครั้งและพร้อมใช้งานสำหรับทั้ง:
การค้นหาแบบง่าย (ส่วนใหญ่เป็นข้อความ)
แบบสอบถามตามกราฟ
การอ่านและเขียนทั้งหมดเกิดขึ้นพร้อมกันโดยมีเวลาตอบสนองที่สมเหตุสมผลและปริมาณงานที่เพิ่มขึ้นเรื่อยๆ
ข้อกำหนดแรกได้รับการปฏิบัติตามโดยใช้ Opensearch ซึ่งเป็นกลไกการค้นหาและจัดเก็บเอกสาร NoSql ที่เป็นที่รู้จักและเป็นที่ยอมรับซึ่งสามารถบรรจุข้อมูลปริมาณมากได้
สำหรับข้อกำหนดที่สอง เราตัดสินใจว่าทางออกที่ดีที่สุดคือการใช้ Opensearch เป็นเลเยอร์การจัดเก็บฐานข้อมูลกราฟที่ไม่ใช่เนทิฟ
ตามที่กล่าวไว้ก่อนหน้านี้ ชั้นพื้นที่จัดเก็บกราฟ-DB สามารถนำไปใช้ได้โดยใช้พื้นที่จัดเก็บที่ไม่ใช่เนทีฟ เช่น พื้นที่จัดเก็บ NoSql
ในการสนทนาครั้งต่อไป ฉันจะอธิบายรายละเอียดว่าเหตุใดทางเลือกชุมชนยอดนิยมสำหรับ graph-DB – Neo4J จึงไม่สามารถตอบสนองความต้องการของเราได้
ประเด็นแรกบนจานของเราคือการออกแบบแบบจำลองข้อมูลที่แสดงถึงกราฟ โดยเป็นชุดของจุดยอดและขอบ
ด้วย Opensearch เราสามารถใช้ความสามารถในการค้นหาอันทรงพลังเพื่อดึงเอกสารโหนดและความสัมพันธ์ตามตัวกรองแบบสอบถามได้อย่างมีประสิทธิภาพ
ใน Opensearch แต่ละดัชนีสามารถอธิบายได้ว่าเป็นตารางสำหรับสคีมาเฉพาะ ตัวดัชนีนั้นจะถูกแบ่งพาร์ติชันเป็นแบบแบ่งใช้ ซึ่งอนุญาตให้ปรับขนาดและความซ้ำซ้อน (พร้อมแบบจำลอง) ทั่วทั้งคลัสเตอร์
เอกสารถูกส่งไปยังส่วนแบ่งเฉพาะในดัชนีโดยใช้สูตรต่อไปนี้:
shard_num = แฮช (_routing) % num_primary_shards
แต่ละดัชนีมีสคีมา (เรียกว่าประเภทใน Opensearch) ซึ่งกำหนดโครงสร้างเอกสาร (เรียกว่าการทำแผนที่ใน Opensearch) แต่ละดัชนีสามารถเก็บการแมปประเภทเดียวเท่านั้น (ตั้งแต่ Opensearch 6)
ดัชนีจุดยอดจะประกอบด้วยเอกสารจุดยอดที่มีคุณสมบัติ ดัชนีขอบจะมีเอกสารขอบพร้อมคุณสมบัติ
วิธีที่เราอธิบายวิธีสำรวจกราฟ (แหล่งข้อมูล)
มีภาษาคิวรีเชิงกราฟเพียงไม่กี่ภาษา:
Cypher เป็นภาษาคิวรีสำหรับฐานข้อมูลกราฟ Neo4j (ดูการเริ่มต้น openCypher)
Gremlin เป็นภาษาการสำรวจกราฟของ Apache Software Foundation สำหรับระบบกราฟ OLTP และ OLAP
SPARQL เป็นภาษาคิวรีสำหรับกราฟ RDF
ภาษาบางภาษามีรูปแบบตามและมีการประกาศมากกว่า บางภาษามีความจำเป็นมากกว่า - ทั้งหมดอธิบายถึงวิธีการสำรวจข้อมูลเชิงตรรกะ
ลองพิจารณา Cypher ซึ่งเป็นภาษาประกาศที่ได้รับแรงบันดาลใจจาก SQL สำหรับการอธิบายรูปแบบในกราฟด้วยสายตาโดยใช้ไวยากรณ์ ASCII-ART
ช่วยให้เราสามารถระบุสิ่งที่เราต้องการเลือก แทรก อัปเดต หรือลบออกจากข้อมูลกราฟของเรา โดยไม่ต้องให้เราอธิบายอย่างชัดเจนว่าต้องทำอย่างไร
เมื่อได้รับคำค้นหาแบบลอจิคัลแล้ว เราจำเป็นต้องแปลเป็นชั้นกายภาพของการจัดเก็บข้อมูลซึ่งก็คือ Opensearch
Opensearch มีแบบสอบถาม DSL ซึ่งมุ่งเน้นไปที่การค้นหาและการรวมกลุ่ม - ไม่ใช่การสำรวจเส้นทาง เราจำเป็นต้องมีขั้นตอนการแปลเพิ่มเติมที่จะคำนึงถึงโครงสร้างแผนผังของกราฟ (และดัชนีพื้นฐาน)
การแปลคิวรีเชิงตรรกะเป็นฟิสิคัลเป็นกระบวนการที่เกี่ยวข้องกับไม่กี่ขั้นตอน:
ตรวจสอบแบบสอบถามกับสคีมา
การแปลฉลากเป็นเอนทิตีสคีมาจริง (ดัชนี)
การสร้างแบบสอบถาม Opensearch ทางกายภาพ
นี่คือกระบวนการในการทบทวนระดับสูง ในทางปฏิบัติ จะมีขั้นตอนเพิ่มเติมที่ปรับการสืบค้นแบบลอจิคัลให้เหมาะสม ในบางกรณี เป็นไปได้ที่จะสร้างแผนทางกายภาพหลายแผน (แผนการดำเนินการ) และจัดอันดับตามกลยุทธ์ด้านประสิทธิภาพ (ต้นทุน) บางอย่าง เช่น จำนวนองค์ประกอบที่จำเป็นในการดึงข้อมูล...
เราเริ่มต้นด้วยการพูดคุยถึงวัตถุประสงค์ของฐานข้อมูลกราฟในกรณีการใช้งานทางธุรกิจในปัจจุบัน และทบทวนโมเดลต่างๆ สำหรับการแสดงกราฟ การทำความเข้าใจองค์ประกอบพื้นฐานเชิงตรรกะที่ฐานข้อมูลกราฟที่มีศักยภาพควรประกอบด้วย และหารือเกี่ยวกับตัวเลือก NoSql ที่มีอยู่เพื่อตอบสนองความต้องการเลเยอร์พื้นที่จัดเก็บข้อมูล
เมื่อเราเลือก Opensearch เป็นเลเยอร์พื้นที่จัดเก็บข้อมูล เราจะนำแบบจำลองกราฟเกณฑ์มาตรฐานเครือข่ายโซเชียล LDBC และทำให้ง่ายขึ้นเพื่อเพิ่มประสิทธิภาพในพื้นที่จัดเก็บข้อมูลเฉพาะนั้น เราได้หารือเกี่ยวกับสคีมาพื้นที่จัดเก็บจริงด้วยคุณสมบัติที่ซ้ำซ้อน และตรวจสอบภาษาไซเฟอร์เพื่อสืบค้นพื้นที่จัดเก็บในภาษารูปแบบกราฟที่คล้ายกับ sql
เรายังคงเห็นการเปลี่ยนแปลงที่แท้จริงของแบบสอบถาม Cypher ไปเป็นแบบสอบถามการดำเนินการทางกายภาพที่จะดำเนินการโดย Opensearch
ในส่วนสุดท้าย เราได้ใช้แบบสอบถามแบบกราฟง่ายๆ และเจาะลึกรายละเอียดของกลยุทธ์การดำเนินการและกลไกการเปรียบเทียบ
บทช่วยสอนการติดตั้ง:
บทช่วยสอนการสร้างสคีมา:
บทช่วยสอนการโหลดข้อมูล:
ค้นหาบทช่วยสอนกราฟ:
บทช่วยสอนการฉายภาพและการนับ: