CSR Priča br. 5: Priča o PebblesDB

Shvatio sam da je došlo vrijeme da se uklopim u svoju priču. Ovo je priča o tome kako je nastala i objavljena naša trgovina PebblesDB s ključevima vrijednosti na SOSP-u 17. Priča također uključuje moje post-doc iskustvo u VMware Research.

Ova priča počinje 2015. godine, kad sam završio doktorat. Razgovarao sam iz industrije i akademije: zapravo sam mislio da neću dobiti nikakve akademske ponude (nisam radio na seksi temama poput računalstva u oblaku ili strojnog učenja), ali želio sam ga isprobati prije nego što odem u industriju , Željela sam se pridružiti laboratoriju za industrijska istraživanja poput Microsoftovog istraživanja.

Zanimljivo je da je u vrijeme dok sam bio na tržištu rada nekolicina ljudi iz Microsoftove istraživačke Silicijske doline pokrenula novi istraživački laboratorij na VMware-u. Moji mentori za stažiranje Mahesh Balakrishnan i Marcos Aguilera bili su u ovom novom laboratoriju, pa su me potaknuli da se prijavim. Intervjuisao sam u laboratoriju i imao veliko iskustvo. Dali su mi ponudu da se pridružim kao istraživač.

Nastavio sam intervjuirati na različitim sveučilištima i bio sam izuzetno sretan što sam poslao ponudu na Sveučilištu u Teksasu u Austinu. Nazvao sam Dahlia Malkhi (jedan od članova utemeljitelja istraživačkog laboratorija) da joj kažem vijesti i obavijestio je da se ne mogu pridružiti VMware Research (ili VRG-u kako se naziva). Na isti telefonski poziv Dahlia mi je predložila da napravim jednogodišnju post-doc prije nego što se pridružim UT-u, i ponudila da me ugosti u VRG-u. Već sam čuo za uspješne jednogodišnje post-doktore (na primjer, Philip Guo) i nisam se baš želio odmah uroniti u fakultetski život, pa sam pristao. Razgovarao sam s ljudima iz UT Austin, koji su bili sa zadovoljstvom odgodili moj datum pridruživanja za godinu dana.

Kad sam se pridružio VRG-u, imao sam izričit cilj formirati nove veze, a ne samo raditi na istim stvarima koje sam radio tijekom doktorata. Razgovarao sam s mnogim istraživačima o tome na čemu rade i kako bih mogao pomoći. Tada sam prvi put razgovarao s Ittaijem Abrahamom, stručnjakom za teoriju / strukture podataka (njegova stručnost obuhvaća puno više područja, ali ovo je najkraći način da ga opišem). Ittai je imao ideju o novoj strukturi podataka za trgovine ključnim vrijednostima, a želio je da netko sa iskustvom u sustavu pomogne u njenom stvaranju. Pridružio sam se razmišljanju kako će to biti brzi projekt u trajanju od tri mjeseca.

Početni su dani bili pomalo grubi, s većinom onoga što je Ittai govorio išlo mi je točno preko glave. Ljudi iz sustava i ljudi u teoriji stvarno govore različite jezike, tako da je prošlo neko vrijeme prije nego što smo bili u sinkronizaciji. Da bih bolje razumio intuiciju koja stoji iza projekta, počeo sam graditi brzi prototip pytona koji utjelovljuje novu strukturu podataka o kojoj je Ittai razmišljao. Naš prototip pokazao je da nova struktura podataka može drastično smanjiti pojačavanje pisanja, iako su naša kašnjenja bila znatno veća od C ++ trgovina ključeva i vrijednosti s kojima smo uspoređivali. Predstavila sam rani oblik PebblesDB-a na VMware RADIO konferenciji, internoj R&D konferenciji u VMware-u. Btw, akademske konferencije nemaju ništa o RADIO-u: Proizvodna vrijednost RADIO-a bliža je vrijednosti TED-a nego akademskoj konferenciji. Mogli ste imati mali koncert na toj pozornici, a ne bi izgledalo kao da nije mjesto.

Nakon što smo u RADIO dobili pozitivne i korisne povratne informacije, Ittai i ja krenuli smo izmijeniti postojeću trgovinu ključeva i vrijednosti kako bismo koristili našu novu strukturu podataka. Odabrali smo LevelDB, budući da je on bio znatno jednostavniji i lakši za razumijevanje od RocksDB-a, i počeli smo ga modificirati. Konkretno, započeli smo izmjenu HyperLevelDB-a, portala LevelDB-a od strane HyperDex-a u Cornellu (grupa Emin Gun Sirer).

Imali smo nekoliko trenutaka kad smo se pretpostavili da se ono što smo pretpostavljali sukobljava s onim što LevelDB zapravo radi: na primjer, mislili smo da će biti binarno pretraživanje cijelog sstabilnog čineći pretragu O (logn); Ispada da sstables ima samo indekse koji pretražuju O (1).

Ovo je bio zabavan dio projekta, jer je toliko uključeno u prelazak od teorijske strukture podataka do izgradnje stvarnog skladišta ključeva i vrijednosti koji pruža izvrsne performanse. Morali smo upotrijebiti brojne poznate inženjerske trikove za izgradnju PebblesDB-a.

Bili smo na pola puta do implementacije kada je završio moj post-doc, a ja sam se pridružio UT-u. Srećom, gotovo odmah, Pandian se pridružio mojoj istraživačkoj grupi i preuzeo dio izgradnje sustava. Pandian je nevjerojatan graditelj sustava, tako da smo vrlo brzo spremni prototip. Procijenili smo ga prema LevelDB-u i dobili smo sjajne rezultate. Pa smo ga napisali i poslali Euroysu.

Eurosys nas je odbio, uglavnom iz dva razloga: nismo ocjenjivali RocksDB, i nismo baš dobro objasnili dizajn. Činilo se da nailazi više na gomilu hakova na LevelDB nego na novu strukturu podataka. Tako smo započeli s radom, ocjenjujući RocksDB i ocjenjujući performanse aplikacija poput HyperDex i MongoDb na vrhu PebblesDB. Tada se Rohan Kadekodi pridružio projektu. Rohan je još jedan nevjerojatan graditelj sustava i u razmaku od mjesec dana prešao je od neznanja o MongoDB-u do modificiranja tako da se on pokreće na vrhu PebblesDB-a.

Bila su druga iznenađenja kada smo uspoređivali performanse aplikacija. Na primjer, i u HyperDexu i u MongoDB-u mnogi zahtjevi put () transformirali bi se u get () + put () zahtjeve da prvo provjere je li ključ već tamo. To je značajno utjecalo na performanse PebblesDB-a, budući da PebblesDB može podnijeti mnogo više zahtjeva () nego što ih je aplikacija bacila. Bilo je zanimljivo shvatiti ove prijave!

Još jedna stvar kojom smo se bavili bilo je pisanje. Nacrt sam distribuirao grupi sustava u UT Austin. Dobili smo izvrsne povratne informacije, a ponovno sam napisao rad kako bih pojasnio da radimo dvije stvari: inovacija u strukturi podataka u smislu strukture podataka fragmentiranih log-Structured Merge Trees (FLSM) i izgradnja PebblesDB na vrhu FLSM (uz uz pridružene inženjerske trikove). Konkretno, povratne informacije o uvodu bile su vrlo korisne, pa smo ih ponovno napisali nekoliko puta kako bismo utvrdili točnost. Rad smo predali SOSP-u.

Vijesti su stigle u kolovozu: primili smo odlične kritike! Bilo je dobro znati sve što se taj posao na kraju isplatio. S našim pastirom, nevjerojatnim Fransom Kaashoekom, radili smo na rješavanju komentara recenzenata. Također smo naporno radili na objavljivanju koda kao otvorenog koda na Githubu (gdje je dobio poprilično pozornosti: dosad je bilo 98 zvijezda!). Također smo radili na objavljivanju promjena koje smo napravili na MongoDB-u kako bi se one mogle voditi na PebblesDB.

Rad na PebblesDB doveo me do razmišljanja o problemu pojačanja pisanja preko skladišta, pa sam počeo raditi na njemu u UT Austin. Preliminarni rad na ovom prostoru doveo je do najboljeg postera u ApSysu i NSF CAREER grantu! Dakle, ukupno, uspješno post-doc iskustvo :)

Moje lekcije iz iskustva PebblesDB:

  • Pisanje je super važno. Snažno osjećam kako se vrijeme provedeno u ponovnom pisanju rada isplaćuje mnogo više nego vrijeme provedeno u izvođenje dodatnih eksperimenata (mada je važna i jaka procjena).
  • Rad s teoretskim ljudima je jako zabavan! Ako pronađete prave suradnike, rad na mješavini teorije i prakse dovodi do izuzetno zadovoljavajućeg istraživanja plus puno utjecaja. U VMware Researchu se događaju slični projekti koji su super cool.
  • Ako se pridružite akademijama, toplo preporučujem jednogodišnji post-doc nakon što završite doktorat. Post-doc dopustila mi je da zadržim dah nakon doktorata, istražujem nove projekte i formiram nove veze koje inače nikad ne bih imao.
  • Toplo preporučujem post-doc na VMware Research (i ne, nisam plaćen da to kažem.) Istraživačka grupa ima nevjerojatne istraživače s dubokim iskustvom u brojnim poljima, a kultura je orijentirana na velike projekte koji mogu biti potrajati duže, ali će imati trajan utjecaj.