Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə Əsl verilənlər bazası qılıncları - qloballar - çoxdan məlumdur, lakin hələ də az adam onlardan necə səmərəli istifadə edəcəyini bilir və ya bu super silaha ümumiyyətlə sahib deyil.

Əgər siz qlobalları həqiqətən yaxşı bacardıqları problemlərin həllində istifadə etsəniz, əla nəticələr əldə edə bilərsiniz. Ya məhsuldarlıqda, ya da problemin həllinin sadələşdirilməsində (1, 2).

Qloballar, SQL-dəki cədvəllərdən tamamilə fərqli olan məlumatların saxlanması və işlənməsinin xüsusi üsuludur. Onlar 1966-cı ildə dildə meydana çıxdı M(UMPS) (təkamül inkişaf - Cache ObjectScript, bundan sonra COS) tibbi məlumat bazasında və hələ də oradadır fəal istifadə olunur, həmçinin etibarlılıq və yüksək performans tələb olunan bəzi digər sahələrə də nüfuz etmişdir: maliyyə, ticarət və s.

Müasir DBMS-lərdəki qloballar əməliyyatları, qeydləri, təkrarlamaları və bölmələri dəstəkləyir. Bunlar. müasir, etibarlı, paylanmış və sürətli sistemlər qurmaq üçün istifadə edilə bilər.

Qloballar sizi əlaqə modeli ilə məhdudlaşdırmır. Onlar sizə xüsusi tapşırıqlar üçün optimallaşdırılmış məlumat strukturlarını inkişaf etdirmək azadlığı verir. Bir çox proqramlar üçün qlobalların ağıllı istifadəsi həqiqətən gizli silah ola bilər və əlaqəli proqram tərtibatçılarının yalnız xəyal edə biləcəyi performansı təmin edə bilər.

Məlumatların saxlanması üsulu kimi qloballar həm yüksək səviyyəli, həm də aşağı səviyyəli bir çox müasir proqramlaşdırma dillərində istifadə edilə bilər. Buna görə də, bu məqalədə mən onların bir vaxtlar gəldiyi dilə deyil, qloballara xüsusi diqqət yetirəcəyəm.

2. Qloballar necə işləyir

Gəlin əvvəlcə qlobalların necə işlədiyini və onların güclü tərəflərinin nə olduğunu anlayaq. Qloballara müxtəlif nöqteyi-nəzərdən baxmaq olar. Məqalənin bu hissəsində biz onlara ağac kimi baxacağıq. Və ya iyerarxik məlumat anbarları kimi.

Sadə dillə desək, qlobal davamlı massivdir. Avtomatik olaraq diskdə saxlanılan massiv.
Məlumatların saxlanması üçün daha sadə bir şey təsəvvür etmək çətindir. Kodda (COS/M dillərində) adi assosiativ massivdən yalnız simvolda fərqlənir. ^ adından əvvəl.

Məlumatları qlobal şəkildə saxlamaq üçün SQL sorğu dilini öyrənməyə ehtiyac yoxdur, onlarla işləmək üçün əmrlər çox sadədir. Onları bir saat ərzində öyrənmək olar.

Ən sadə nümunə ilə başlayaq. 2 budaqlı bir səviyyəli ağac. Nümunələr COS-da yazılmışdır.

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



Qlobal (Set əmri) məlumat daxil edərkən avtomatik olaraq 3 şey baş verir:

  1. Məlumatların diskə saxlanması.
  2. İndeksləmə. Mötərizədə olan açardır (ingilis ədəbiyyatında - “alt işarə”), bərabərlərin sağında isə dəyər (“qovşaq dəyəri”).
  3. Sırala. Məlumat açara görə sıralanır. Gələcəkdə massivdən keçərkən birinci element "Sergey Smith", ikincisi isə "John Sidorov" olacaq. Qlobal istifadəçilərin siyahısını qəbul edərkən verilənlər bazası çeşidləmə üçün vaxt itirmir. Bundan əlavə, hər hansı bir açardan, hətta mövcud olmayandan başlayaraq çeşidlənmiş siyahının çıxışını tələb edə bilərsiniz (çıxış mövcud olmayandan sonra gələn ilk real açardan başlayacaq).

Bütün bu əməliyyatlar inanılmaz sürətlə baş verir. Ev kompüterimdə bir prosesdə 750 insert/s-ə qədər dəyərlər əldə edirdim. Çox nüvəli prosessorlarda dəyərlərə çata bilər on milyonlarla əlavələr/san.

Əlbəttə ki, daxiletmə sürətinin özü çox şey demir. Siz, məsələn, mətn fayllarına çox tez məlumat yaza bilərsiniz - bu kimi söz-söhbət Viza işlənməsi işləri. Lakin qloballar vəziyyətində, nəticədə gələcəkdə asanlıqla və tez işlənə bilən strukturlaşdırılmış indeksləşdirilmiş yaddaş əldə edirik.

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

  • Qlobalların ən böyük gücü yeni qovşaqların daxil edilmə sürətidir.
  • Qlobal məlumat həmişə indekslənir. Onları həm bir səviyyədə, həm də ağacın dərinliklərində keçmək həmişə sürətlidir.

Qlobal səviyyəyə ikinci və üçüncü səviyyələrin daha bir neçə qolunu əlavə edək.

Set ^a("+7926X", "city") = "Moscow"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

Aydındır ki, çox səviyyəli ağaclar qloballara əsaslanaraq tikilə bilər. Üstəlik, daxiletmə zamanı avtomatik indeksləşdirmə səbəbindən istənilən node giriş demək olar ki, ani olur. Və ağacın istənilən səviyyəsində bütün budaqlar açarla sıralanır.

Gördüyünüz kimi, məlumat həm açarda, həm də dəyərdə saxlanıla bilər. Ümumi açar uzunluğuna (bütün indekslərin uzunluqlarının cəmi) çata bilər 511 bayt, və dəyərlər 3.6 MB Cache üçün. Ağacdakı səviyyələrin sayı (ölçülərin sayı) 31-dir.

Başqa bir maraqlı məqam. Üst səviyyələrin qovşaqlarının dəyərlərini göstərmədən bir ağac qura bilərsiniz.

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

Set ^b("a", "b", "c", "d") = 1
Set ^b("a", "b", "c", "e") = 2
Set ^b("a", "b", "f", "g") = 3

Boş dairələr heç bir dəyəri olmayan qovşaqlardır.

Qlobalları daha yaxşı başa düşmək üçün onları digər ağaclarla müqayisə edək: bağ ağacları və fayl sistemi adı ağacları.

Qloballardakı ağacları bizə ən tanış olan iyerarxik strukturlarla müqayisə edək: bağlarda və tarlalarda bitən adi ağaclarla, eləcə də fayl sistemləri ilə.

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

Bağ ağaclarında gördüyümüz kimi, yarpaq və meyvələr yalnız budaqların uclarında olur.
Fayl sistemləri - məlumat yalnız tam uyğun fayl adları olan filialların uclarında saxlanılır.

Və burada qlobal məlumat strukturu var.

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissəFərqlər:

  1. Daxili qovşaqlar: qlobal məlumat yalnız filialların uclarında deyil, hər bir qovşaqda saxlanıla bilər.
  2. Xarici qovşaqlar: Qlobal, budaqların uclarında müəyyən edilmiş dəyərlərə malik olmalıdır, FS və bağ ağacları isə yoxdur.



Daxili qovşaqlar baxımından deyə bilərik ki, qlobal quruluş fayl sistemlərində və bağ ağaclarında ad ağaclarının strukturunun üst hissəsidir. Bunlar. daha çevik.

Ümumiyyətlə, qlobaldır hər node məlumat saxlamaq imkanı ilə sifariş ağac.

Qlobalların işini daha yaxşı başa düşmək üçün təsəvvür edin ki, fayl sistemlərinin yaradıcıları məlumat saxlamaq üçün qlobal sistemlərə oxşar yanaşmadan istifadə etsələr nə baş verərdi?

  1. Kataloqdakı tək bir faylın silinməsi qovluğu, eləcə də yenicə silinmiş yalnız bir kataloqu ehtiva edən bütün qovluqları avtomatik siləcək.
  2. Kataloqlara ehtiyac olmayacaqdı. Sadəcə olaraq alt faylları olan fayllar və alt faylları olmayan fayllar ola bilər. Adi bir ağacla müqayisə edilsəydi, hər budaq bir meyvəyə çevrilərdi.

    Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

  3. README.txt faylları kimi şeylərə ehtiyac olmaya bilər. Kataloqun məzmunu haqqında deyilməli olan hər şey kataloq faylının özünə yazıla bilər. Yol məkanında fayl adı qovluq adından fərqlənmir, ona görə də sadəcə fayllarla işləmək mümkün idi.
  4. İç-içə alt kataloqları və faylları olan qovluqların silinmə sürəti kəskin şəkildə artacaq. Habré-də dəfələrlə milyonlarla kiçik faylı silməyin nə qədər uzun və çətin olduğu haqqında məqalələr dərc olunub (1, 2). Bununla belə, əgər siz qlobal bir psevdofayl sistemi yaratsanız, bu, saniyələr və ya onun fraksiyalarını çəkəcək. Mən ev kompüterində alt ağacların silinməsini sınaqdan keçirəndə o, 1 saniyə ərzində HDD-də (SSD deyil) iki səviyyəli ağacdan 96-341 milyon qovşağı sildi. Üstəlik, biz qloballarla yalnız bütün faylı deyil, ağacın bir hissəsini silməkdən danışırıq.

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə
Alt ağacların çıxarılması qlobalların başqa bir güclü nöqtəsidir. Bunun üçün rekursiyaya ehtiyacınız yoxdur. Bu inanılmaz sürətlə baş verir.

Ağacımızda bu əmrlə edilə bilər Öldürmək.

Kill ^a("+7926X")

Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 1-ci hissə

Qlobal miqyasda hansı hərəkətlərin bizim üçün mövcud olduğunu daha yaxşı başa düşmək üçün qısa bir cədvəl təqdim edəcəyəm.

COS-da qloballarla işləmək üçün əsas əmrlər və funksiyalar

Set
Budaqları bir qovşaq (hələ müəyyən edilməmişsə) və qovşaq dəyərlərinə təyin etmək

Qatışmaq
Alt ağacın kopyalanması

Öldürmək
Alt ağacın çıxarılması

ZKill
Müəyyən bir node dəyərinin silinməsi. Düyündən çıxan alt ağaca toxunulmur

$Query
Ağacın tam keçidi, ağacın dərinliyinə girmək

$Sifariş
Müəyyən bir düyünün budaqlarını keçmək

$Data
Bir node müəyyən edilib yoxlanılır

$artırma
Düyün dəyərinin atomik şəkildə artırılması. ACID üçün oxumaq və yazmaqdan çəkinmək üçün. Bu yaxınlarda dəyişdirmək tövsiyə edilmişdir $Sequence

Diqqətiniz üçün təşəkkür edirik, suallarınızı cavablandırmağa hazırıq.

Məsuliyyətdən imtina: Bu məqalə və mənim şərhlərim mənim fikrimdir və InterSystems Corporation-ın rəsmi mövqeyini təmsil etmir.

Artırma Qloballar məlumatların saxlanması üçün xəzinə qılınclarıdır. Ağaclar. 2-ci hissə. Qloballarda hansı növ məlumatların göstərilə biləcəyini və onların hansı tapşırıqlarda maksimum fayda təmin etdiyini öyrənəcəksiniz.

Mənbə: www.habr.com

Добавить комментарий