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
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
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 ngendi - 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. dianakaké yen . kene 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:
iku - derajat uniqueness saka pemisahan mentas diwilang lan 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.
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.
Konferensi ADBIS-2019
Adhedhasar asil panaliten, ing wulan September 2019 aku nerbitake artikel
Source: www.habr.com