Zgodba o CSR # 5: Zgodba PebblesDB

Ugotovil sem, da je čas, da sem se lotil svoje zgodbe. To je zgodba o tem, kako je nastala in objavljena naša trgovina s ključnimi vrednostmi PebblesDB na SOSP 17. Zgodba vključuje tudi moje post-doc izkušnje v VMware Research.

Ta zgodba se začne leta 2015, ko sem končal doktorat. Intervjuval sem tako v industriji kot v akademiji: dejansko sem mislil, da ne bom dobil nobene akademske ponudbe (nisem se ukvarjal s seksi temami, kot so računalništvo v oblaku ali strojno učenje), ampak sem hotel poskusiti, preden sem odšel v industrijo . Želel sem se pridružiti laboratoriju za industrijske raziskave, kot je Microsoft Research.

Zanimivo je, da je v času, ko sem bil na trgu dela, nekaj ljudi iz Microsoftove raziskave Silicijeva dolina začelo nov raziskovalni laboratorij v VMware-u. Moja mentorja stažiranja Mahesh Balakrishnan in Marcos Aguilera sta bila v tem novem laboratoriju, zato so me spodbudili k prijavi. Intervjuval sem v laboratoriju in imel veliko izkušenj. Dali so mi ponudbo, da se pridružim kot raziskovalec.

Šel sem na razgovor na različne univerze in imel sem izjemno srečo, da sem ponudil ponudbo na Teksaški univerzi v Austinu. Poklical sem Dahlia Malkhija (enega izmed ustanovnih članov raziskovalnega laboratorija), da bi ji povedal novice in ji povedal, da se ne morem pridružiti raziskavam VMware (ali VRG, kot se imenuje). Na isti telefonski klic je Dahlia predlagal, naj naredim enoletno post-doc pred vstopom v UT, in mi je ponudila, da me gosti v VRG. Slišal sem že za uspešne enoletne post-doktore (na primer Philip Guo) in se nisem ravno hotel vtirati v življenje fakultete, zato sem se strinjal. Govoril sem z ljudmi iz UT Austin, ki so bili hvaležni v redu, saj so mi datum odložili za eno leto.

Ko sem se pridružil VRG, sem imel izrecni cilj ustvariti nove povezave in ne samo delati na istih stvareh, ki sem jih delal med doktoratom. Z veliko raziskovalci sem govoril o tem, kaj delajo in kako bi si lahko pomagal. To je bilo takrat, ko sem se prvič pogovarjal z Ittaijem Abrahamom, strokovnjakom za teorijo / strukture podatkov (njegovo strokovno znanje obsega veliko več področij, vendar je to najbolj kratko opisati). Ittai je imel to idejo o novi strukturi podatkov za shrambe ključnih vrednosti in si je želel, da bi jo nekdo s sistemskimi izkušnjami pomagal graditi. Pridružil sem se razmišljanju, da bo to hiter enomesečni projekt.

Začetni dnevi so bili nekoliko grobi, večino tega, kar je rekel Ittai, mi gre ravno čez glavo. Sistemski ljudje in teoretični ljudje res govorijo različne jezike, zato je bilo nekaj časa, preden smo bili sinhronizirani. Da bi bolje razumel intuicijo projekta, sem začel graditi hitri prototip protona, ki uteleša novo podatkovno strukturo, o kateri je razmišljal Ittai. Naš prototip je pokazal, da lahko nova struktura podatkov drastično zmanjša ojačitev pisanja, čeprav so bile naše zamude bistveno večje od trgovin s ključnimi vrednostmi C ++, s katerimi smo primerjali. Zgodnjo obliko PebblesDB sem predstavil na konferenci VMware RADIO, interni konferenci o raziskavah in razvoju v VMware-u. Btw, akademske konference nimajo ničesar na RADIO: Produkcijska vrednost RADIO je bližja vrednosti TED kot akademska konferenca. Lahko bi imeli majhen koncert na tem odru, in ne bi bil videti neprimerno.

Potem ko smo na RADIO prejeli pozitivne in koristne povratne informacije, sva se Ittai odločila spremeniti obstoječo trgovino s ključnimi vrednostmi in tako uporabiti svojo novo strukturo podatkov. Izbrali smo LevelDB, saj je bil bistveno preprostejši in lažje razumljiv kot RocksDB, in ga začeli spreminjati. Konkretno, začeli smo spreminjati HyperLevelDB, vrata LevelDB s strani HyperDex-ov pri Cornellu (skupina Emin Gun Sirer).

Imeli smo nekaj trenutkov, ko se je tisto, kar smo domnevali, spopadlo s tem, kar v resnici počne LevelDB: na primer, mislili smo, da bo binarno iskanje po celotnem sstabilnem iskanju O (logn); izkaže se, da imajo nestabilniki samo indekse, ki omogočajo iskanje O (1).

To je bil zabaven del projekta, saj je toliko vključenih v prehod od teoretične strukture podatkov do gradnje dejanske trgovine s ključnimi vrednostmi, ki prinaša odlične rezultate. Za izdelavo PebblesDB smo morali uporabiti številne znane inženirske trike.

Ko smo zaključili post-doc, smo bili na polovici poti in sem se pridružil UT. Na srečo, skoraj takoj, se je Pandian pridružil moji raziskovalni skupini in prevzel del izgradnje sistema. Pandian je neverjetno izdelovalec sistemov, zato smo že kmalu pripravili prototip. Ocenili smo ga glede na LevelDB in dobili odlične rezultate. Tako smo ga napisali in poslali Euroysu.

Na Eurosysu smo bili zavrnjeni, predvsem iz dveh razlogov: nismo ocenjevali proti RocksDB in nismo zelo dobro razložili zasnove. Zdelo se je, da je na LevelDB naletelo bolj na kup hektov kot na novo podatkovno strukturo. Tako smo se lotili dela, ocenjevanja proti RocksDB in ocenjevanja učinkovitosti aplikacij, kot sta HyperDex in MongoDb na vrhu PebblesDB. Takrat se je projektu pridružil Rohan Kadekodi. Rohan je še en neverjetni graditelj sistemov in v enem mesecu je prešel od tega, da o MongoDB ni vedel ničesar, do tega, da bi ga spremenil tako, da bo tekel na vrhu PebblesDB.

Druga presenečenja so bila, ko smo primerjali uspešnost aplikacij. Na primer v HyperDex in MongoDB bi se številne zahteve put () pretvorile v zahteve get () + put (), da najprej preverijo, ali je ključ že tam. To je bistveno vplivalo na uspešnost PebblesDB, saj je PebblesDB lahko obravnaval veliko več zahtev (), kot jih je aplikacija metala. Zanimivo je bilo ugotoviti, ali so te prošnje za prijavo!

Druga stvar, ki smo se je lotili, je bilo pisanje. Naš osnutek sem razdelil skupini sistemov na UT Austin. Dobili smo odlične povratne informacije in prispevek sem ponovno napisal, da sem jasno povedal, da počnemo dve stvari: inovacija v strukturi podatkov v smislu podatkovne strukture razdrobljene logistične strukture (FLSM) in izgradnja PebblesDB na vrhu FLSM (skupaj s pripadajočimi inženirskimi triki). Zlasti povratne informacije o uvodu so bile zelo koristne, zato smo jih večkrat napisali, da bi lahko preučili poanto. Papir smo oddali na SOSP.

Novice so prišle avgusta: sprejeli smo odlične ocene! Dobro je bilo vedeti, da se je vse delo končno izplačalo. S pastirjem, neverjetnim Fransom Kaashoekom, smo sodelovali pri reševanju komentarjev recenzentov. Zelo smo se potrudili tudi, da smo kodo Github izdali kot odprtokodno kodo (kjer je bila deležna že precej pozornosti: 98 zvezdic do zdaj!). Delali smo tudi, da smo sprostili spremembe, ki smo jih naredili v MongoDB, tako da se lahko izvajajo poleg PebblesDB.

Delo na PebblesDB me je spravilo v težavo z ojačanjem pisanja preko shranjevalnega sklopa, zato sem začel delati na njem v UT Austin. Predhodno delo v tem prostoru je privedlo do najboljšega posterja na ApSysu in dotacije NSF CAREER! Torej na splošno uspešno post-doc doživetje :)

Moje lekcije iz izkušnje PebblesDB:

  • Pisanje je zelo pomembno. Močno menim, da se čas, ki ga porabim za ponovno pisanje prispevka, bolje izplača kot čas, porabljen za dodatne poskuse (čeprav je pomembna tudi močna ocena).
  • Delo s teoretičnimi ljudmi je zelo zabavno! Če najdete prave sodelavce, delo na mešanici teorije in prakse vodi do izredno zadovoljivih raziskav in veliko vpliva. V VMware Research se dogajajo podobni projekti, ki so zelo kul.
  • Če se boste pridružili akademiji, vam toplo priporočam enoletni podoktor, ko končate doktorat. Post-doc mi je omogočil, da sem se doktoriral po doktoratu, raziskal nove projekte in oblikoval nove povezave, ki jih sicer nikoli ne bi imel.
  • Toplo priporočam post-doc na VMware Research (in ne, nisem plačan, da to rečem.) Raziskovalna skupina ima neverjetne raziskovalce z veliko izkušnjami na številnih področjih, kultura pa je usmerjena v velike projekte, ki morda traja dlje, vendar bo imel trajen vpliv.