CSR lugu # 5: PebblesDB lugu

Ma arvasin, et on aeg asuda sisse minu enda looga. See on lugu sellest, kuidas meie PebblesDB võtmeväärtusega pood ehitati ja avaldati aadressil SOSP 17. See lugu hõlmab ka minu post-doc-i kogemust VMware Researchis.

See lugu algab 2015. aastal, kui olin lõpetanud doktorikraadi. Tegin intervjuusid nii tööstuses kui ka ülikoolides: arvasin tegelikult, et ei hakka mingeid akadeemilisi pakkumisi saama (ma ei töötanud seksikatel teemadel nagu pilvandmetöötlus ega masinõpe), vaid tahtsin proovida, enne kui tööstusesse lahkusin. . Tahtsin liituda selliste tööstusuuringute laboriga nagu Microsoft Research.

Huvitav on see, et sel ajal, kui ma tööturul olin, olid mõned Microsoft Researchi Silicon Vallexi inimesed asutanud uue teaduslabori VMware'is. Minu praktikakooli mentorid Mahesh Balakrishnan ja Marcos Aguilera viibisid selles uues laboris, nii et nad julgustasid mind kandideerima. Tegin laboris intervjuusid ja mul oli suurepärane kogemus. Nad tegid mulle ettepaneku liituda uurijana.

Käisin vestlemas erinevates ülikoolides ja mul oli väga vedanud, et pakkusin Austini Texase ülikoolis. Kutsusin Dahlia Malkhi (üks teaduslabori asutajaliikmeid), et rääkida talle uudistest ja teavitada teda, et ma ei saanud VMware Researchiga (või VRG-ga, nagu seda nimetatakse), liituda. Samal telefonikõnel tegi Dahlia ettepaneku teha enne TÜ-sse astumist üheaastane järeldokument ja pakkus mind võõrustada VRG-s. Olin juba kuulnud edukatest üheaastastest doktordokumentidest (näiteks Philip Guo) ja ma ei tahtnud tegelikult kohe õppejõudude ellu sukeldumist, seega nõustusin. Rääkisin TÜ Austinis inimestega, kellel oli õnneks hea, kui mu liitumiskuupäeva aasta võrra edasi lükati.

Kui ma VRG-ga liitusin, oli mul selgesõnaline eesmärk luua uusi ühendusi, mitte töötada samadel teemadel, mida tegin doktorikraadi ajal. Rääkisin paljude teadlastega sellest, mille kallal nad töötavad ja kuidas saaksin aidata. See oli siis, kui rääkisin esimest korda siin teooria- / andmestruktuuride eksperdi Ittai Abrahamiga (tema teadmised hõlmavad palju rohkem valdkondi, kuid see on lühim viis tema kirjeldamiseks). Siinai oli idee võtmeväärtusega kaupluste uue andmestruktuuri kohta ja ta soovis, et keegi, kellel on süsteemikogemus, aitaks seda üles ehitada. Liitusin mõttega, et see oleks kiire ühe kuni kolmekuuline projekt.

Esimesed päevad olid pisut konarlikud, enamus sellest, mida Ittai ütles, läks mul otse üle pea. Süsteemide inimesed ja teooriainimesed räägivad tõepoolest erinevaid keeli, nii et aega oli enne, kui olime sünkroonis. Projekti taga oleva intuitsiooni paremaks mõistmiseks hakkasin ehitama kiiret pütoni prototüüpi, mis kehastab Siinai uut andmestruktuuri. Meie prototüüp näitas, et uus andmestruktuur võib dramaatiliselt vähendada kirjutusvõimendust, ehkki meie latentsusajad olid oluliselt suuremad kui C ++ võtmeväärtusega kauplused, mida me võrdlesime. Ma tutvustasin PebblesDB varajast vormi VMware RADIO konverentsil, mis on VMware'i sisemine teadus- ja arendustegevuse konverents. Pealegi pole akadeemilistel konverentsidel RADIO-l midagi: RADIO toodangu väärtus on TED-ile lähemal kui akadeemilisel konverentsil. Teil oleks võinud sellel laval olla väike kontsert ja see poleks kohati välja näinud.

Pärast RADIO-s positiivse ja kasuliku tagasiside saamist otsustasime koos Siinaiga olemasolevat võtmeväärtuste kauplust meie uue andmestruktuuri kasutamiseks muuta. Valisime LevelDB, kuna see oli oluliselt lihtsam ja arusaadavam kui RocksDB, ja hakkasime seda muutma. Täpsemalt, hakkasime muutma HyperLevelDB - LevelDB porti HyperDexi inimeste poolt Cornelli (Emin Gun Sireri rühm) poolt.

Meil oli mitu hetke, kui see, mida me eeldasime, läks vastuollu sellega, mida LevelDB tegelikult tegi: näiteks arvasime, et kogu stabiilse otsingu korral tehakse binaarne otsing O (logn); selgub, et stabiilsetel on lihtsalt indeksid, mis teevad otsingu O (1).

See oli projekti lõbus osa, sest teoreetilisest andmestruktuurist tõelise võtmeväärtusega kaupluse ehitamiseni, mis pakub suurepäraseid tulemusi, on nii palju kaasatud. PebblesDB ehitamiseks pidime kasutama mitmeid tuntud tehnilisi nippe.

Olime rakendamisega poole peal, kui minu postdokumendi lõpp lõppes ja astusin TÜ-sse. Õnneks liitus Pandian peaaegu kohe minu uurimisrühmaga ja võttis üle süsteemi loomise osa. Pandian on hämmastav süsteemiehitaja, nii et üsna varsti oli meil prototüüp valmis. Hindasime seda LevelDB alusel ja saime suurepäraseid tulemusi. Niisiis kirjutasime selle üles ja saatsime Euroysesse.

Me saime Eurosys tagasi lükatud, peamiselt kahel põhjusel: me polnud RocksDB-le hinnangu andnud ega ka kujundust väga hästi selgitanud. See tundus olevat rohkem kui LevelDB häkkimine kui uus andmestruktuur. Nii et me saime tööle hakata, hinnates seda RocksDB-ga ja hinnates lisaks PebblesDB-le selliseid rakendusi nagu HyperDex ja MongoDb. Sel ajal liitus projektiga Rohan Kadekodi. Rohan on veel üks hämmastav süsteemiehitaja ja kuu aja pärast läks ta teadmata MongoDB-st midagi teadlikult, et seda muuta nii, et see töötaks PebblesDB peal.

Rakenduse toimivuse võrdlusalusena saime muid üllatusi. Näiteks nii HyperDex kui ka MongoDB muudavad paljud put () taotlused get () + put () päringuteks, et kõigepealt kontrollida, kas võti on juba olemas. See mõjutas märkimisväärselt PebblesDB jõudlust, kuna PebblesDB sai hakkama palju enamate (() päringutega kui taotlus sellele ette heitis. Oli huvitav välja mõelda, kas need rakendused on!

Teine asi, millega me tegelesime, oli kirjutamine. Jagasin meie mustandi TÜ Austini süsteemigrupile. Saime suurepärase tagasiside ja kirjutasin uuesti paberi ümber, et oleks selge, et me tegime kahte asja: andmestruktuuri uuendust seoses killustatud log-struktureeritud koondamise puude (FLSM) andmestruktuuriga ja PebblesDB ehitamist FLSM-i peale (mööda koos kaasnevate inseneritrikkidega). Eriti kasulik oli sissejuhatuse tagasiside ja kirjutasime seda mitu korda ümber, et asjast üle saada. Esitasime paberi SOSP-le.

Uudised tulid augustis: saime heade arvustustega vastu! Oli hea teada, et kõik see töö tasus end lõpuks ära. Tegime koos oma karjase, hämmastava Frans Kaashoekiga arvustuse kommentaaridele tähelepanu. Tegime kõvasti tööd ka selle nimel, et kood Githubis (kui see on pälvinud üsna palju tähelepanu: praeguse seisuga 98 tähte!) Avatud lähtekoodina koodi vabastamiseks. Samuti tegutsesime MongoDB-s tehtud muudatuste vabastamiseks, et seda saaks PebblesDB peal peal käitada.

PebblesDB kallal töötamine pani mind mõtlema kirjutamise võimenduse probleemile kogu salvestusruumi korral, nii et asusin selle kallal töötama Austraalias TÜ-s. Eeltöö selles ruumis viis ApSysi parima postitaja ja NSF CAREERi stipendiumi saamiseni! Nii et üldiselt edukas post-doc kogemus :)

Minu õppetunnid PebblesDB kogemusest:

  • Kirjutamine on ülitähtis. Ma tunnen, et paberi ümberkirjutamiseks kulutatud aeg tasub paremini ära kui lisakatsete tegemiseks kulutatud aeg (kuigi oluline on ka tugev hinnang).
  • Teooriatega töötamine on väga lõbus! Kui leiate õiged koostööpartnerid, toob teooria ja praktika segu väljatöötamine kaasa eriti rahuldava uurimistöö ja palju mõju. VMware Researchis on käimas sarnased projektid, mis on ülilahedad.
  • Kui kavatsete ühineda akadeemiliste ringkondadega, soovitan tungivalt üheaastast doktorikraadi omandamist pärast doktorikraadi omandamist. Järeldokument võimaldas mul pärast doktorikraadi hingata, uurida uusi projekte ja luua uusi seoseid, mida mul muidu poleks olnud.
  • Soovitan tungivalt teha järeldoktorant VMware Researchis (ja ei, mulle ei tasustata seda öelda.) Uurimisrühmas on hämmastavaid teadlasi, kellel on paljudes valdkondades sügav kogemus ja kultuur on orienteeritud suurte projektide tegemisele, mis võivad võtab kauem aega, kuid sellel on püsiv mõju.