OrientDB - ดัชนี

Index เป็นตัวชี้ที่ชี้ไปยังตำแหน่งของข้อมูลในฐานข้อมูล Indexingเป็นแนวคิดที่ใช้ในการค้นหาข้อมูลอย่างรวดเร็วโดยไม่ต้องค้นหาทุกระเบียนในฐานข้อมูล OrientDB รองรับอัลกอริทึมดัชนีสี่แบบและหลายประเภทภายในแต่ละประเภท

ดัชนีสี่ประเภท ได้แก่ -

ดัชนี SB-Tree

มีคุณสมบัติที่หลากหลายจากดัชนีประเภทอื่น ๆ ควรใช้สิ่งนี้สำหรับยูทิลิตี้ทั่วไป มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง เป็นประเภทดัชนีเริ่มต้น ปลั๊กอินประเภทต่างๆที่รองรับอัลกอริทึมนี้คือ -

  • UNIQUE- ดัชนีเหล่านี้ไม่อนุญาตให้คีย์ซ้ำกัน สำหรับดัชนีคอมโพสิตหมายถึงเอกลักษณ์ของคีย์คอมโพสิต

  • NOTUNIQUE - ดัชนีเหล่านี้อนุญาตให้คีย์ซ้ำกัน

  • FULLTEXT- ดัชนีเหล่านี้ขึ้นอยู่กับคำเดียวของข้อความ คุณสามารถใช้ในแบบสอบถามผ่านไฟล์CONTAINSTEXT ตัวดำเนินการ

  • DICTIONARY - ดัชนีเหล่านี้คล้ายกับที่ใช้ UNIQUE แต่ในกรณีของคีย์ที่ซ้ำกันจะแทนที่ระเบียนที่มีอยู่ด้วยระเบียนใหม่

ดัชนีแฮช

ทำงานได้เร็วขึ้นและมีน้ำหนักเบาในการใช้งานดิสก์ มีความทนทานทำธุรกรรมได้ แต่ไม่รองรับการสืบค้นช่วง ทำงานเหมือน HASHMAP ซึ่งทำให้การค้นหาตรงเวลาเร็วขึ้นและใช้ทรัพยากรน้อยกว่าดัชนีประเภทอื่น ๆ ปลั๊กอินประเภทต่างๆที่รองรับอัลกอริทึมนี้คือ -

  • UNIQUE_HASH_INDEX- ดัชนีเหล่านี้ไม่อนุญาตให้คีย์ซ้ำกัน สำหรับดัชนีคอมโพสิตหมายถึงเอกลักษณ์ของคีย์คอมโพสิต

  • NOTUNIQUE_HASH_INDEX - ดัชนีเหล่านี้อนุญาตให้คีย์ซ้ำกัน

  • FULLTEXT_HASH_INDEX- ดัชนีเหล่านี้ขึ้นอยู่กับคำเดียวของข้อความ คุณสามารถใช้ในแบบสอบถามผ่านตัวดำเนินการ CONTAINSTEXT

  • DICTIONARY_HASH_INDEX - ดัชนีเหล่านี้คล้ายกับดัชนีที่ใช้ UNIQUE_HASH_INDEXแต่ในกรณีของคีย์ที่ซ้ำกันจะแทนที่ระเบียนที่มีอยู่ด้วยระเบียนใหม่

ดัชนีข้อความแบบเต็มของ Lucene

มีดัชนีข้อความเต็มที่ดี แต่ไม่สามารถใช้เพื่อจัดทำดัชนีประเภทอื่นได้ มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง

Lucene Spatial Index

มีดัชนีเชิงพื้นที่ที่ดี แต่ไม่สามารถใช้เพื่อจัดทำดัชนีประเภทอื่นได้ มีความทนทานทำธุรกรรมและรองรับการสืบค้นช่วง

การสร้างดัชนี

สร้างดัชนีคือคำสั่งในการสร้างดัชนีบนสคีมาเฉพาะ

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานในการสร้างดัชนี

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

ต่อไปนี้เป็นรายละเอียดเกี่ยวกับตัวเลือกในไวยากรณ์ด้านบน

<name>- กำหนดชื่อตรรกะสำหรับดัชนี คุณยังสามารถใช้สัญกรณ์ <class.property> เพื่อสร้างดัชนีอัตโนมัติที่ผูกไว้กับคุณสมบัติสคีมา <class> ใช้คลาสของสกีมาและ <property> ใช้คุณสมบัติที่สร้างในคลาส

<class-name>- ระบุชื่อของคลาสที่คุณกำลังสร้างดัชนีอัตโนมัติเพื่อจัดทำดัชนี คลาสนี้ต้องมีอยู่ในฐานข้อมูล

<prop-names>- แสดงรายการคุณสมบัติที่คุณต้องการให้ดัชนีอัตโนมัติจัดทำดัชนี คุณสมบัติเหล่านี้ต้องมีอยู่แล้วในสคีมา

<type> - จัดเตรียมอัลกอริทึมและประเภทของดัชนีที่คุณต้องการสร้าง

<key-type> - ระบุประเภทคีย์ที่เป็นทางเลือกพร้อมดัชนีอัตโนมัติ

<metadata> - จัดเตรียมการแสดง JSON

ตัวอย่าง

ลองใช้แบบสอบถามต่อไปนี้เพื่อสร้างดัชนีอัตโนมัติที่เชื่อมโยงกับคุณสมบัติ 'ID' ของผู้ใช้ sales_user

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

ดัชนีการสืบค้น

คุณสามารถใช้คิวรีแบบเลือกเพื่อรับเรกคอร์ดในดัชนี

ลองใช้แบบสอบถามต่อไปนี้เพื่อดึงคีย์ของดัชนีชื่อ 'indexforId'

SELECT FROM INDEX:indexforId

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

ดร็อปดัชนี

หากคุณต้องการทิ้งดัชนีเฉพาะคุณสามารถใช้คำสั่งนี้ การดำเนินการนี้ไม่ได้ลบเรกคอร์ดที่เชื่อมโยง

คำสั่งต่อไปนี้เป็นไวยากรณ์พื้นฐานในการดร็อปดัชนี

DROP INDEX <name>

ที่ไหน <name> ระบุชื่อของดัชนีที่คุณต้องการวาง

ลองใช้คำค้นหาต่อไปนี้เพื่อดร็อปดัชนีชื่อ 'ID' ของผู้ใช้ sales_user

DROP INDEX sales_users.Id

หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้

Index dropped successfully