Pattern matching — ma’lumot ichidan oldindan tavsiflangan tuzilma yoki shartga mos bo‘laklarni topish usulidir. Grafik ma’lumotlar bazasida bu atama tugunlar, qirralar, yo‘nalishlar, yorliqlar va xususiyatlardan iborat kichik naqshni katta grafdan izlashni anglatadi. Natija naqshdagi o‘zgaruvchilarni haqiqiy graf elementlariga moslashtirish orqali olinadi.
Grafik naqsh
Naqsh “mijoz buyurtma berdi, buyurtma esa mahsulotni o‘z ichiga oladi” kabi bog‘lanishni ifodalashi mumkin. Cypher tilida u quyidagicha yoziladi:
MATCH (m:Mijoz)-[:BERDI]->(b:Buyurtma)-[:ICHIDA]->(p:Mahsulot)
WHERE p.tur = $tur
RETURN m.id, p.nom
Qavslar tugunlarni, strelkali qavslar qirralarni, nomlar esa keyin ishlatiladigan o‘zgaruvchilarni bildiradi. Yorliq va qirra turi nomzodlarni toraytiradi. WHERE xususiyat qiymati, vaqt oralig‘i yoki boshqa mantiqiy shartlarni qo‘shadi.
Moslashtirish semantikasi
Bir naqsh grafning ko‘p joyiga mos kelishi mumkin. So‘rov tizimi har bir mos keluvchi bog‘lanishni alohida satr sifatida qaytaradi, shuning uchun takror ko‘ringan qiymatlar har doim ma’lumot dublikati emas. DISTINCT faqat natijadagi teng qiymatlarni birlashtiradi va haqiqiy mosliklar soni haqidagi axborotni yo‘qotishi mumkin.
Ixtiyoriy naqsh SQL dagi chap tashqi birlashtirishga o‘xshab, bog‘lanish topilmasa ham asosiy tugunni saqlaydi. Inkorga asoslangan shart esa ma’lum qirra mavjud bo‘lmagan elementlarni tanlaydi. O‘zgaruvchan uzunlikdagi naqsh bir nechta qadamli yo‘lni qidiradi, ammo tugun yoki qirrani takrorlash qoidasi mahsulot va so‘rov shakliga bog‘liq.
Bajarilish va unumdorlik
Grafik pattern matching ichki jihatdan boshlang‘ich nomzodlarni topish, qirralar bo‘ylab kengaytirish va predikatlarni tekshirish bosqichlariga bo‘linadi. Xususiyat indeksi noyob yoki kam uchraydigan boshlang‘ich tugunni tez topadi. Selektiv qismdan boshlash oraliq natijalarni kamaytiradi. Aksincha, yorliqsiz va chuqurligi cheklanmagan naqsh katta grafda juda ko‘p kombinatsiya hosil qiladi.
So‘rov rejasini ko‘rish, taxminiy va haqiqiy satr sonlarini solishtirish hamda indekslardan foydalanishni tekshirish muhim. Grafik statistikasi eskirsa, optimizator noqulay boshlang‘ich nuqtani tanlashi mumkin. Parametr ishlatish reja qayta foydalanilishiga va qiymatni so‘rov matniga xavfli biriktirmaslikka yordam beradi.
Boshqa sohalardagi ma’no
Dasturlash tillarida pattern matching qiymatning shaklini tekshirib, uning qismlarini o‘zgaruvchilarga ajratadi. Muntazam ifoda esa matndagi belgilar ketma-ketligini izlaydi. Bu usullar umumiy “naqshga moslash” g‘oyasiga ega, biroq grafik pattern matching topologik bog‘lanishlarni ham hisobga oladi. Shuning uchun regexni graf so‘rovi bilan to‘liq tenglashtirib bo‘lmaydi.
Naqsh natijasi ma’lumot modeliga bog‘liq. Qirralarning yo‘nalishi noto‘g‘ri yozilsa yoki bir xil aloqa turli nomlarda saqlansa, to‘g‘ri so‘rov ham kutilgan moslikni topmaydi. Sinov to‘plamida mavjud, mavjud bo‘lmagan va ko‘p marta mos keladigan holatlar bo‘lishi kerak. Xavfsizlik nuqtai nazaridan yorliq yoki qirra turini foydalanuvchi kiritishidan dinamik tuzishda ruxsat etilgan nomlar ro‘yxati ishlatiladi.
Sinov strategiyasi
Naqsh so‘roviga mo‘ljallangan test grafi faqat ijobiy misoldan iborat bo‘lmasligi kerak. Yo‘nalishi teskari qirra, yetishmaydigan xususiyat, sikl, parallel qirralar va bir nechta teng moslik alohida tekshiriladi. Kutilgan natija elementlar tartibiga tayanadigan bo‘lsa, so‘rovda aniq saralash beriladi; aks holda ma’lumotlar bazasi qaytarish tartibini kafolatlamasligi mumkin. So‘rov rejasi versiyalar orasida o‘zgarsa, katta ma’lumot to‘plamidagi regressiya testi unumdorlik pasayishini erta aniqlaydi.
Bog‘liq tushunchalar
Cypher, Graf so‘rovi, Path, Traversiya, Muntazam ifoda, So‘rov rejasi