OrientDB - Dizinler

Index veri tabanındaki bir veri konumuna işaret eden bir işaretçidir. Indexingveritabanındaki her kaydı aramak zorunda kalmadan verileri hızlı bir şekilde bulmak için kullanılan bir kavramdır. OrientDB, dört dizin algoritmasını ve her biri içinde birkaç türü destekler.

Dört tür dizin şunlardır:

SB-Ağaç Dizini

Diğer dizin türlerinde bulunan özelliklerin iyi bir karışımını sağlar. Bunu genel yardımcı program için kullanmak daha iyidir. Dayanıklıdır, işlemseldir ve aralık sorgularını destekler. Varsayılan dizin türüdür. Bu algoritmayı destekleyen farklı türdeki eklentiler şunlardır:

  • UNIQUE- Bu dizinler yinelenen anahtarlara izin vermez. Bileşik dizinler için bu, bileşik anahtarların benzersizliğine işaret eder.

  • NOTUNIQUE - Bu dizinler yinelenen anahtarlara izin verir.

  • FULLTEXT- Bu dizinler herhangi bir metin kelimesine dayanmaktadır. Bunları sorgularda kullanabilirsiniz.CONTAINSTEXT Şebeke.

  • DICTIONARY - Bu dizinler UNIQUE kullananlara benzer, ancak yinelenen anahtarlar durumunda, mevcut kaydı yeni kayıtla değiştirirler.

Karma Endeksi

Daha hızlı çalışır ve disk kullanımında çok hafiftir. Dayanıklıdır, işlemseldir, ancak aralık sorgularını desteklemez. Dakik aramalarda daha hızlı olmasını sağlayan HASHMAP gibi çalışır ve diğer dizin türlerinden daha az kaynak tüketir. Bu algoritmayı destekleyen farklı türdeki eklentiler şunlardır:

  • UNIQUE_HASH_INDEX- Bu dizinler yinelenen anahtarlara izin vermez. Bileşik dizinler için bu, bileşik anahtarların benzersizliğine işaret eder.

  • NOTUNIQUE_HASH_INDEX - Bu dizinler yinelenen anahtarlara izin verir.

  • FULLTEXT_HASH_INDEX- Bu dizinler herhangi bir metin kelimesine dayanmaktadır. Bunları CONTAINSTEXT operatörü aracılığıyla sorgularda kullanabilirsiniz.

  • DICTIONARY_HASH_INDEX - Bu dizinler, kullananlara benzer UNIQUE_HASH_INDEX, ancak yinelenen anahtarlar durumunda, mevcut kaydı yeni kayıtla değiştirirler.

Lucene Tam Metin Dizini

İyi tam metin dizinleri sağlar, ancak diğer türleri dizine eklemek için kullanılamaz. Dayanıklıdır, işlemseldir ve aralık sorgularını destekler.

Lucene Mekansal Endeksi

İyi uzamsal indeksler sağlar, ancak diğer türleri indekslemek için kullanılamaz. Dayanıklıdır, işlemseldir ve aralık sorgularını destekler.

Dizinler Oluşturma

Dizin oluştur, belirli bir şema üzerinde bir dizin oluşturmak için kullanılan bir komuttur.

Aşağıdaki ifade, bir dizin oluşturmak için temel sözdizimidir.

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

Yukarıdaki sözdizimindeki seçeneklerle ilgili ayrıntılar aşağıdadır.

<name>- Dizinin mantıksal adını tanımlar. Bir şema özelliğine bağlı otomatik bir dizin oluşturmak için <class.property> gösterimini de kullanabilirsiniz. <class>, şema sınıfını kullanır ve <property>, sınıfta oluşturulan özelliği kullanır.

<class-name>- Dizine eklenecek otomatik dizini oluşturduğunuz sınıfın adını sağlar. Bu sınıf veritabanında bulunmalıdır.

<prop-names>- Otomatik dizinin indekslemesini istediğiniz özelliklerin listesini sağlar. Bu özellikler şemada zaten mevcut olmalıdır.

<type> - Oluşturmak istediğiniz algoritmayı ve indeks türünü sağlar.

<key-type> - Otomatik dizinler ile isteğe bağlı anahtar türü sağlar.

<metadata> - JSON temsilini sağlar.

Misal

Sales_user kullanıcısının "ID" özelliğine bağlı otomatik dizin oluşturmak için aşağıdaki sorguyu deneyin.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Endeksleri Sorgulama

Dizindeki kayıtları almak için seçme sorgusunu kullanabilirsiniz.

'İndexforId' adlı dizinin anahtarlarını almak için aşağıdaki sorguyu deneyin.

SELECT FROM INDEX:indexforId

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

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

Drop Dizinleri

Belirli bir dizini bırakmak istiyorsanız, bu komutu kullanabilirsiniz. Bu işlem bağlantılı kayıtları kaldırmaz.

Aşağıdaki ifade, bir dizini bırakmak için temel sözdizimidir.

DROP INDEX <name>

Nerede <name> düşürmek istediğiniz dizinin adını sağlar.

Sales_user kullanıcısının 'ID' adlı bir dizini bırakmak için aşağıdaki sorguyu deneyin.

DROP INDEX sales_users.Id

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

Index dropped successfully