CSR Tale # 5: PebblesDB: n tarina

Ajattelin, että oli aika aloittaa oma tarini. Tämä on tarina siitä, kuinka PebblesDB-avain-arvo-myymälämme rakennettiin ja julkaistiin SOSP 17: ssä. Tarinaan sisältyy myös post-doc-kokemukseni VMware Researchissa.

Tämä tarina alkaa vuonna 2015, kun olin viimeistelyssä tohtorini. Haastattelin sekä teollisuutta että akateemista aluetta: Luulin tosiasiallisesti, että en aio saada akateemisia tarjouksia (en työskennellyt seksikkäissä aiheissa, kuten pilvipalvelussa tai koneoppimisessa), mutta halusin kokeilla sitä ennen kuin lähdin teollisuudelle . Halusin liittyä Microsoft Researchin kaltaiseen teollisuustutkimuslaboratorioon.

Mielenkiintoista on, että silloin kun olin työmarkkinoilla, muutama Microsoft Research Silicon Valleyn henkilöstö oli aloittanut uuden tutkimuslaboratorion VMwaressa. Harjoitteluohjaajani Mahesh Balakrishnan ja Marcos Aguilera olivat tässä uudessa laboratoriossa, joten he rohkaisivat minua hakemaan. Haastattelin laboratoriossa ja minulla oli hieno kokemus. He tekivät minulle tarjouksen liittyä tutkijaksi.

Menin haastatteluun eri yliopistoissa, ja minulla oli erittäin onnekas purkaa tarjous Texasin yliopistossa Austinissa. Soitin Dahlia Malkhille (yksi tutkimuslaboratorion perustajajäsenistä) kertoa hänelle uutiset ja ilmoittaa hänelle, että en voinut liittyä VMware Researchiin (tai VRG: ään, kuten sitä kutsutaan). Samassa puhelimessa Dahlia ehdotti minun tekevän yhden vuoden post-doc ennen liittymistä UT: hen ja tarjosi isännöidäkseni minua VRG: ssä. Olin jo kuullut onnistuneista yhden vuoden jälkeisistä jatkotutkinnoista (esimerkiksi Philip Guo), enkä oikeasti halunnut syventyä tiedekunnan elämään heti, joten suostuin siihen. Puhuin Austin-yliopiston (UT) ihmisten kanssa, jotka olivat onneksi okeita lykätä liittymispäivämäärääni vuodella.

Kun liittyin VRG: hen, minulla oli nimenomainen tavoite muodostaa uusia yhteyksiä, eikä vain työskennellä samojen asioiden kanssa, joita tein tohtorin aikana. Puhuin monien tutkijoiden kanssa siitä, mitä he työskentelevät ja kuinka voisin auttaa. Silloin puhuin ensimmäistä kertaa Ittai Abrahamin, teorian / tietorakenteiden asiantuntijan kanssa (hänen asiantuntemuksensa kattaa paljon enemmän alueita, mutta tämä on lyhin tapa kuvata häntä). Ittai sai idean uudesta avainarvokauppojen tietorakenteesta, ja hän halusi jonkun, jolla on järjestelmäkokemus, auttamaan sen rakentamisessa. Liityin ajattelemaan, että se olisi nopea yhden tai kolmen kuukauden projekti.

Alkupäivät olivat hiukan karkeat, ja suurin osa siitä, mitä Ittai sanoi, meni suoraan pääni yli. Järjestelmä- ja teoria-ihmiset todella puhuvat eri kieliä, joten oli jonkin aikaa ennen kuin olimme synkronoituna. Ymmärtääksesi paremmin projektin taustalla olevaa intuitiota aloin rakentaa nopean python-prototyypin, joka ilmentää Ittan ajattelemaa uutta tietorakennetta. Prototyyppimme osoitti, että uusi tietorakenne voisi vähentää dramaattisesti kirjoitusvahvistusta, vaikka latenssimme olivat huomattavasti korkeammat kuin vertailtujen C ++-avain-arvovarastojen kanssa. Esittelin PebblesDB: n varhaisen muodon VMware RADIO -konferenssissa, sisäisessä T & K-konferenssissa VMwaressa. Sitä vastoin akateemisilla konferensseilla ei ole mitään RADIO-ohjelmasta: RADION tuotantoarvo on lähempänä TED: n arvoa kuin akateeminen konferenssi. Sinulla olisi voinut olla pieni konsertti kyseisellä lavalla, ja se ei olisi pitänyt paikoillaan.

Saatuaan positiivista ja hyödyllistä palautetta RADIO: lla, Ittai ja minä pyrimme muuttamaan olemassa olevaa avain-arvovarastoa uuden tietorakenteen käyttämiseksi. Valitsimme LevelDB: n, koska se oli huomattavasti yksinkertaisempi ja helpompi ymmärtää kuin RocksDB, ja aloitimme sen muuttamisen. Erityisesti aloimme muokata HyperLevelDB: tä, LevelDB-satamaa, jonka HyperDex-ihmiset ovat Cornellissa (Emin Gun Sirerin ryhmä).

Meillä oli useita hetkiä, kun olettamuksemme ristiriidassa sen kanssa, mitä LevelDB tosiasiallisesti teki: Esimerkiksi ajattelimme, että koko binäärihaussa tehdään binäärihaku tekemällä haku O (logn); osoittautuu, että tukihakemistoilla on vain hakemistot, jotka tekevät hausta O (1).

Tämä oli projektin hauska osa, koska siirrytään teoreettisesta tietorakenteesta todellisen avain-arvotallenteen rakentamiseen, joka tarjoaa erinomaista suorituskykyä. Meidän piti käyttää useita tunnettuja tekniikkavinkkejä PebblesDB: n rakentamiseen.

Olimme toteutuksen puolivälissä, kun postdokumenttini päättyi, ja liittyin UT: hen. Onneksi melkein heti Pandian liittyi tutkimusryhmääni ja otti järjestelmän rakentamisen osan. Pandian on upea järjestelmien rakentaja, joten melko pian meillä oli prototyyppi valmis. Arvioimme sitä LevelDB: n perusteella ja saimme hyviä tuloksia. Joten kirjoitimme sen ja lähetimme sen Euroysille.

Meidät hylättiin Eurosysissä pääasiassa kahdesta syystä: emme olleet arvioineet RocksDB: tä vastaan, emmekä olleet selittäneet suunnittelua kovin hyvin. Se näytti törmänneen enemmän kuin joukko hakkereita LevelDB: hen kuin uusi tietorakenne. Joten meidän piti työskennellä, arvioida RocksDB: tä vastaan ​​ja arvioida sovellusten, kuten HyperDex ja MongoDb, suorituskyky PebblesDB: n päällä. Rohan Kadekodi liittyi projektiin. Rohan on toinen hämmästyttävä järjestelmien rakentaja, ja kuukauden kuluessa hän siirtyi tietämättä mitään MongoDB: stä sen muuttamiseen siten, että se toimisi PebblesDB: n päällä.

Sovelluksen suorituskyvyn vertailuanalyysissä saimme muita yllätyksiä. Esimerkiksi sekä HyperDex: ssä että MongoDB: ssä monet put () -pyynnöt muutetaan get () + put () -pyynnöiksi ensin tarkistaaksesi, onko avain jo olemassa. Tämä vaikutti merkittävästi PebblesDB: n suorituskykyyn, koska PebblesDB pystyi käsittelemään paljon enemmän put () -pyyntöjä kuin sovellus heitti siihen. Oli mielenkiintoista selvittää nämä sovelluskirjat kuitenkin!

Toinen asia, jota käsittelimme, oli kirjoittaminen. Jaoin luonnokseni UT Austinin järjestelmäryhmälle. Saimme erinomaista palautetta, ja kirjoitin paperin uudelleen, jotta voimme tehdä selväksi, että olemme tekemässä kahta asiaa: tietorakenteeseen liittyvää innovaatiota hajanaisen lokijärjestelmän yhdistämispuiden (FLSM) tietorakenteen suhteen ja PebblesDB: n rakentamista FLSM: n päälle (pitkin) ja niihin liittyvät suunnitteluvinkit). Erityisesti johdannosta saatu palaute oli erittäin hyödyllistä, ja kirjoitimme sen useita kertoja saadaksemme asian läpi. Toimitimme paperin SOSP: lle.

Uutiset tulivat elokuussa: saimme vastaan ​​upeilla arvosteluilla! Oli hyvä tietää, että kaikki työ lopulta kannatti. Teimme yhteistyötä paimenemme, uskomattoman Frans Kaashoekin kanssa kommentoidaksesi tarkistajan kommentteja. Pyrimme myös julkaisemaan koodin avoimena lähdekoodina Githubissa (missä se on saanut kohtuullisen paljon huomiota: 98 tähteä jo nyt!). Pyrimme myös vapauttamaan muutokset, jotka teimme MongoDB: lle, jotta sitä voidaan ajaa PebblesDB: n päällä.

PebblesDB: n parissa työskenteleminen sai minut ajattelemaan varastossa olevan kirjoitusvahvistuksen ongelmaa, joten aloin työskennellä sen kanssa UT Austinissa. Tämän tilan valmistelutyöt johtivat ApSysin parhaaseen julisteeseen ja NSF CAREER -apurahaan! Joten kaiken kaikkiaan onnistunut post-doc-kokemus :)

Oppituni PebblesDB-kokemuksesta:

  • Kirjoittaminen on erittäin tärkeää. Tunnen voimakkaasti paperin uudelleen kirjoittamiseen kuluneen ajan kannattavan paljon enemmän kuin lisäkokeiden tekemiseen kuluva aika (tosin myös vahva arviointi on tärkeää).
  • Teorian kanssa työskenteleminen on hauskaa! Jos löydät oikeat yhteistyökumppanit, teoksen ja käytännön yhdistelmän kehittäminen johtaa erittäin tyydyttävään tutkimukseen ja paljon vaikutuksia. VMware Researchilla on meneillään samanlaisia ​​projekteja, jotka ovat erittäin hienoja.
  • Jos aiot liittyä yliopistoihin, suosittelen erittäin suositellusti yhden vuoden jatkotutkintoa, kun olet valmistunut tohtorisi. Postdokumentti antoi minulle mahdollisuuden hengittää tohtorintutkinnon jälkeen, tutkia uusia projekteja ja muodostaa uusia yhteyksiä, joita minulla ei koskaan olisi muuten.
  • Suosittelen erittäin vahvasti postdokumentin tekemistä VMware Researchissa (ja ei, minua ei makseta sanoa tästä.) Tutkimusryhmässä on uskomattomia tutkijoita, joilla on syvä kokemus useilla aloilla, ja kulttuuri on suuntautunut suurten projektien tekemiseen, jotka saattavat kestää kauemmin, mutta sillä on pysyviä vaikutuksia.