Temokake dependensi fungsional kanthi efisien ing basis data

Nemokake dependensi fungsional ing data digunakake ing macem-macem area analisis data: manajemen basis data, reresik data, rekayasa reverse database lan eksplorasi data. Kita wis nerbitake babagan dependensi kasebut artikel Anastasia Birillo lan Nikita Bobrov. Wektu iki, Anastasia, lulusan Pusat Ilmu Komputer taun iki, nuduhake pangembangan karya iki minangka bagéan saka karya riset sing dibela ing pusat kasebut.

Temokake dependensi fungsional kanthi efisien ing basis data

Pilihan tugas

Nalika sinau ing pusat CS, aku wiwit sinau basis data kanthi jero, yaiku, nggoleki dependensi fungsional lan beda. Topik iki ana hubungane karo topik kursus ing universitas, mula nalika nggarap kursus, aku miwiti maca artikel babagan macem-macem dependensi ing basis data. Aku nulis review babagan wilayah iki - salah sawijining sing pertama artikel ing Inggris lan dikirim menyang konferensi SEIM-2017. Aku seneng banget nalika aku ngerti dheweke ditampa sawise kabeh, lan mutusaké kanggo delve tuwa menyang topik. Konsep kasebut dhewe ora anyar - wiwit digunakake maneh ing taun 90-an, nanging saiki digunakake ing pirang-pirang wilayah.

Sajrone semester kapindho ing pusat, aku miwiti proyek riset kanggo nambah algoritma kanggo nemokake dependensi fungsional. Dheweke kerja bareng karo mahasiswa lulusan Universitas Negeri St. Petersburg Nikita Bobrov ing JetBrains Research.

Kompleksitas komputasi nggoleki dependensi fungsional

Masalah utama yaiku kerumitan komputasi. Jumlah dependensi minimal lan ora pati penting diwatesi ing ndhuwur kanthi nilai Temokake dependensi fungsional kanthi efisien ing basis datangendi Temokake dependensi fungsional kanthi efisien ing basis data - nomer atribut tabel. Wektu operasi algoritma ora mung gumantung ing jumlah atribut, nanging uga ing jumlah baris. Ing taun 90-an, algoritma telusuran hukum federal ing PC desktop biasa bisa ngolah set data sing ngemot nganti 20 atribut lan puluhan ewu baris nganti sawetara jam. Algoritma modern sing mlaku ing prosesor multi-inti ndeteksi dependensi kanggo set data sing dumadi saka atusan atribut (nganti 200) lan atusan ewu baris ing wektu sing padha. Nanging, iki ora cukup: wektu kasebut ora bisa ditampa kanggo umume aplikasi ing donya nyata. Mulane, kita ngembangake pendekatan kanggo nyepetake algoritma sing ana.

Skema cache kanggo persimpangan partisi

Ing bagean pisanan karya, kita ngembangake skema caching kanggo kelas algoritma sing nggunakake metode persimpangan partisi. Partisi kanggo atribut yaiku sakumpulan dhaptar, ing ngendi saben dhaptar ngemot nomer baris kanthi nilai sing padha kanggo atribut tartamtu. Saben dhaptar kasebut diarani kluster. Akeh algoritma modern nggunakake partisi kanggo nemtokake manawa ana ketergantungan dianakake utawa ora, yaiku, padha netepi lemma: Ketergantungan. Temokake dependensi fungsional kanthi efisien ing basis data dianakaké yen Temokake dependensi fungsional kanthi efisien ing basis data. kene Temokake dependensi fungsional kanthi efisien ing basis data partisi ditetepake lan konsep ukuran partisi digunakake - jumlah klompok ing. Algoritma sing nggunakake partisi, nalika dependensi dilanggar, nambah atribut tambahan ing sisih kiwa dependensi, banjur ngitung maneh, nindakake operasi persimpangan partisi. Operasi iki diarani spesialisasi ing artikel. Nanging kita ngeweruhi sing sekat kanggo dependensi sing mung bakal disimpen sawise sawetara babak spesialisasi bisa digunakake maneh aktif, kang Ngartekno bisa nyuda wektu mlaku saka algoritma, wiwit operasi persimpangan larang.

Mula, kita ngusulake heuristik adhedhasar Shannon Entropy lan Ginny Uncertainty, uga metrik kita, sing diarani Reverse Entropy. Iku modifikasi tipis saka Shannon Entropy lan mundhak minangka uniqueness saka pesawat data mundhak. Heuristik sing diusulake kaya ing ngisor iki:

Temokake dependensi fungsional kanthi efisien ing basis data

iku Temokake dependensi fungsional kanthi efisien ing basis data - derajat uniqueness saka pemisahan mentas diwilang Temokake dependensi fungsional kanthi efisien ing basis datalan Temokake dependensi fungsional kanthi efisien ing basis data minangka rata-rata derajat keunikan kanggo atribut individu. Kabeh telung metrik sing diterangake ing ndhuwur diuji minangka metrik keunikan. Sampeyan uga bisa sok dong mirsani sing ana rong modifiers ing heuristik. Pisanan nuduhake carane cedhak pemisahan saiki kanggo tombol utami lan ngijini sampeyan kanggo cache menyang ombone luwih partisi sing adoh saka tombol potensial. Modifier kapindho ngidini sampeyan ngawasi pendhudhukan cache lan kanthi mangkono nyengkuyung nambahake partisi liyane menyang cache yen ana ruang kosong. Solusi sukses masalah iki ngidini kita nyepetake algoritma PYRO kanthi 10-40%, gumantung saka dataset. Wigati dicathet yen algoritma PYRO paling sukses ing wilayah iki.

Ing tokoh ing ngisor iki sampeyan bisa ndeleng asil nglamar heuristik ngajokaken dibandhingake pendekatan caching duwit receh-loncat karo muter awak dhasar. Sumbu X iku logaritma.

Temokake dependensi fungsional kanthi efisien ing basis data

Cara alternatif kanggo nyimpen partisi

Kita banjur ngusulake cara alternatif kanggo nyimpen partisi. Partisi minangka sakumpulan kluster, sing saben-saben nyimpen jumlah tuple kanthi nilai sing padha kanggo atribut tartamtu. Kluster kasebut bisa ngemot urutan nomer tuple sing dawa, contone, yen data ing tabel diurutake. Mula, kita ngusulake skema kompresi kanggo nyimpen partisi, yaiku panyimpenan interval nilai ing klompok partisi:

$$tampilan$$pi(X) = {{underbrace{1, 2, 3, 4, 5}_{interval pisanan}, underbrace{7, 8}_{interval kapindho}, 10}}\ downarrow{ Compression} \ pi(X) = {{underbrace{$, 1, 5}_{first~interval}, underbrace{7, 8}_{second~interval}, 10}}$$display$$

Cara iki bisa nyuda konsumsi memori sajrone operasi algoritma TANE saka 1 nganti 25%. Algoritma TANE minangka algoritma klasik kanggo nggoleki hukum federal; nggunakake partisi sajrone karyane. Minangka bagéan saka praktik kasebut, algoritma TANE dipilih, amarga luwih gampang ngleksanakake panyimpenan interval tinimbang, umpamane, ing PYRO kanggo ngevaluasi apa pendekatan sing diusulake. Asil sing dipikolehi ditampilake ing gambar ing ngisor iki. Sumbu X iku logaritma.

Temokake dependensi fungsional kanthi efisien ing basis data

Konferensi ADBIS-2019

Adhedhasar asil panaliten, ing wulan September 2019 aku nerbitake artikel Caching Cerdas kanggo Penemuan Ketergantungan Fungsional sing Efisien ing Konferensi Eropa kaping 23 babagan Kemajuan ing Database lan Sistem Informasi (ADBIS-2019). Sajrone presentasi, karya kasebut dicathet dening Bernhard Thalheim, wong sing penting ing bidang database. Asil riset dadi basis saka disertasi ing gelar master ing matématika lan mekanika ing St. Petersburg State University, kang loro pendekatan ngajokaken (caching lan komprèsi) padha dipun ginakaken ing loro algoritma: TANE lan PYRO. Ing wektu sing padha, asil nuduhake manawa pendekatan sing diusulake universal, amarga ing loro algoritma kasebut, kanthi pendekatan loro kasebut, pangurangan konsumsi memori sing signifikan diamati, uga pangurangan sing signifikan ing wektu operasi algoritma.

Source: www.habr.com

Add a comment