Bitmap göstəriciləri, üstünlükləri və mənfi cəhətləri

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

giriş

Kimlik, AD, ADRES, YAŞ, CİNSİYYƏT və Dövrü ilə tələbə masası ilə bağlı müntəzəm nümunəmizi nəzərdən keçirin. Bu cədvəl yeni tələbələr üçün tədris ilinin əvvəlində təzə məlumatlarla yüklənəcək və növbəti semestrdə yaşlı tələbələr üçün yenilənəcəkdir. Çox vaxt bu cədvəl statik olacaq və üzərində nisbətən daha az əlavə / sil / yeniləmə olacaqdır. Eyni zamanda bu cədvəllə ad-hoc axtarış çox olacaq, yəni; tələbələrin detallarını almaq üçün bu cədvəldə müxtəlif növ sorğular olacaq, bütün kişi / qadın tələbələr, müəyyən bir bölgədə yaşayan tələbələr və ya xüsusi semestrdə olan kişi / qadın tələbələr vs. bir kollec verilənlər bazasında bu tələbə cədvəli? Çox nəhəng, hə? Bu vəziyyətdə istifadəçi sorğusu hər cür sorğu nəticəsi əldə etmək üçün kifayət qədər sürətli olmalıdır. Ənənəvi fayl təşkili metodlarımız bizə nəticələr vermək üçün daha sürətli olacaqmı? Yoxsa məlumatların saxlanması və alınması üçün daha yaxşı bir metod düşünə bilərik?

Bəli, statik üçün yaddaşdakı qeydləri seçmək üçün daha yaxşı bir üsul var masaları cədvəlin məzmununu görmək üçün dəfələrlə daxil olur.

Bitmap göstəriciləri

Bitmap indeksləri yuxarıdakı hallar üçün qeydləri almaqda çox güclüdür. Bu metodda, unikal dəyərləri daha az olan sütunlar üçün göstəricilər bit şəklində istifadə olunur. Nümunədən istifadə edərək bu metod haqqında bir-bir anlamağa çalışaq.

Yuxarıda göstərilən nümunədə CİND sütununa diqqət yetirsək, yalnız iki dəyərə sahib ola bilər - Kişi və ya Qadın. Bütün TƏLƏBƏ cədvəli ilə müqayisədə bunlar unikal dəyər deyildir. Eynilə, kurs üçün cəmi dörd semestrimiz olduğunu söylədikdən sonra yalnız dörd dəyərə sahib ola bilərik - sem1, sem2, sem3 və sem4. Bu tip sütunlara daha az unikal dəyər sütunu və ya daha az kardinallığı olan sütun deyilir. Bu sütunların daha az dəyərli olmasına baxmayaraq, ən çox sorğu olunur.

Bitlər - hamının bildiyi kimi ən kiçik məlumat təqdimatı vahidi. Dəyər olaraq 0 ya da 1 ola bilər. İndi bu bitləri daha az unikal dəyər sütunlarını təmsil etmək üçün istifadə etsək nə olar? Bəs necə? Daha az istifadə olunan sütunları bit şəklində saxlama üsuluna bitmap indeksləri deyilir.

Bu metod daha az unikal dəyər sütunları olan çox böyük masalar üçün istifadə olunur və müxtəlif axtarış sorğuları ilə vaxt sayına çatır. Bu metodda sahib olacağıq

  1. Daha az unikal dəyər sütunlarının hər biri üçün cədvəldəki sətir sayı qədər bit. Məsələn, TƏLƏBƏ cədvəlində 10K qeyd varsa, onda hər sətir üçün bir bit - 10K bitimiz olacaq.
  2. Sütunda yaradılan bitmap indekslərinin sayı sütundakı fərqli dəyərlərin sayına bərabər olacaqdır. Məsələn, CİNS sütunu üçün iki bitmap göstəricisi yaradılacaq - biri kişi, biri qadın, semestr sütunu üçün dörd bitmap göstəricisi yaradılacaq - 1, 2, 3 və 4.
  3. Sətir üçün sütunda hər hansı bir uyğun dəyərimiz varsa, o sətir biti '1', əks halda '0' olacaqdır. Yəni Cins sütunu üçün 2 bitmap göstəricisi olacaq - biri kişi, biri qadın. 'Kişi' bit xəritə indeksi üçün bit dəyəri 1 olacaq, əgər bu cərgədə 'M', else '0' cinsi varsa.

TƏLƏBƏ cədvəlinin nümunəsində yalnız dörd qeydin olduğunu və aşağıdakı kimi dəyərlərə sahib olduğunu düşünün.

Pin

 

  1. 1-ci qaydaya görə cədvəldə dörd sıra olacaq və bu səbəbdən bitlərimiz olacaq - hər sıra üçün bir bit.
  2. CİNSİYƏ sütununun yalnız iki dəyəri var - 'M' və 'F'. Bu səbəbdən iki bitmap indeksimiz olacaq - biri 'M' üçün, digəri 'F' üçün.
  3. İndi Gender sütunu üçün bitmap indeksi aşağıdakı kimidir. Burada 'M' bitmap indeksi '1000' dəyərinə malikdir, ilk sətrin cinsi 'M' olduğunu, satırların qalan hissəsinin 'M' kimi cinsi olmadığını ifadə edir. Eynilə bitmap indeksi 'F' birinci sətrin 'F' olmadığını və istirahət olduğunu göstərir bütün satırların 'F' cinsi var.

Pin

Eynilə Semestr üçün bitmap indeksi belə ola bilər:

Tutaq ki, ikinci semestrdə olan tələbə qızları tapmalıyıq. Burada bu sorğu, hər ikisinin daha az unikal dəyər sütununa sahib olduğu qeydləri süzmək üçün iki sütundan istifadə edir.

 

* TƏLƏBƏDƏN HARADA SEÇİN GENDER = 'F' VƏ YARIYIL = 2;

Sorğu, bu sütunların hər ikisi üçün bitmap indeksini axtaracaq və nəticənin həqiqi ünvanını almaq üçün bu indekslərdə məntiqi 'VƏ' əməliyyatı həyata keçirəcəkdir.

F üçün bitmap indeksi: 0 1 1 1 
SEM 2 üçün bitmap indeksi: 0 0 1 0 
Nəticə: 0 0 1 0   üçüncü sətirdə sorğunun nəticəsi olduğu nəzərdə tutulur.

 

 

 

 

 

Düzgün olub olmadığını yoxlamaq üçün masaya baxın. Bəli, düzgün sıra ilə nəticələndi. Beləliklə, DBMS fayldakı üçüncü sıraya keçir və istifadəçi üçün nəticəni göstərir.

Burada bitmap indeksini almaq və nəticəni əldə etmək üçün məntiqi 'AND' əməliyyatını yerinə yetirmək nisbətən daha sürətli olur. Beləliklə, bu saxlama metodu bu cür məlumatlar üçün faydalıdır.

Yazını cədvəldən silməyimiz lazım olsa, müvəqqəti bir silmək indeksi yaradılacaq. Sonra məlumatları cədvəldən çıxarmaq üçün filtr sütunlarında və müvəqqəti indeksdə məntiqi 'VƏ' əməliyyatı yerinə yetirəcəkdir.

Fərz edək ki, qız tələbəni 4-dən silməliyikth semestr. Sonra bu qeydin silinməsindəki addımlar aşağıdakı kimidir.

* TƏLƏBƏDƏN HARADA SEÇİN GENDER = 'F' VƏ YARIYIL = 4;

F üçün bitmap indeksi: 0 1 1 1
SEM 2 üçün bitmap indeksi: 0 0 0 1
1 0 0 0  müvəqqəti silin
Nəticə: 0 0 0 0  bu heç bir satır nəzərdə tutmur, buna görə qeyd silinir

Bitmap göstəricilərinin üstünlükləri

  • Daha əvvəl də gördüyümüz kimi, bu metod daha az kardinal sütun olduqda və bu sütunlarda ən çox sorğuda istifadə edildikdə qeydlərin daha sürətli alınmasına kömək edir. Bu üsul çox böyük masamız olsa da səmərəlidir.
  • Bu metod, sütunların daxiletmə / yeniləmə / silmə əməliyyatlarında ən az iştirak etdiyi zaman daha səmərəlidir.
  • Yuxarıdakı nümunələrdə gördüyümüz kimi sorğunu açmaq üçün birdən çox bitmap indeksini birləşdirməyə imkan verir

Bitmap göstəricilərinin dezavantajları

  • Kiçik masalar üçün uyğun deyillər. Kiçik cədvəllərdə DBMS bitmap indeksindən istifadə etmək əvəzinə tam cədvəl taramasından istifadə etməyə məcbur edəcəkdir.
  • Fərqli istifadəçilər tərəfindən masada birdən çox əlavə/yeniləmə/silmə olduqda, bu, masalarda tıxanmaya səbəb ola bilər. Tamaşanı ifa etmək üçün vaxt lazımdır DML əməliyyat və sonra bitmap indeksini yeniləmək üçün. Buna görə fərqli istifadəçilərdən birdən çox DML əməliyyatı olduqda, əməliyyatı tez bir zamanda həyata keçirə bilməyəcək və çıxılmaz vəziyyətə düşə bilər.
  • Çox sayda qeyd olduqda, bu bitmap indekslərini qorumaq üçün bir xərc var. Hər dəfə yeni bir qeyd daxil edildikdə, bitmap indeksini dəyişdirməliyik, bu yorucu və vaxt aparan bir şeydir.

SQL-də göstərici

SQL-də aşağıdakı sorğudan istifadə edərək bitmap indeksi yarada bilərik.

BITMAP INDEX Index_Name yaradın
ON Table Table (Sütun_Adı);

Cinsiyyət və Semestr üçün bitmap indeksi yaratmaq üçün yuxarıdakı nümunəmiz aşağıdakı kimi yazıla bilər:

BITMAP INDEX IDX_GENDER YARATIN
TƏLƏBƏ (CİNSİ) ÜZRƏ;

BITMAP INDEX IDX_ SEMESTER YARATIN
TƏLƏBƏ (SEMESTER) ÜZRƏ;

Crack Sistemi Dizayn Müsahibələri
Translate »