CSR Tale # 5: Historia PebblesDB

Uznałem, że nadszedł czas, aby opowiedzieć własną historię. To jest historia tego, jak nasz sklep z kluczowymi wartościami PebblesDB został zbudowany i opublikowany w SOSP 17. Historia ta obejmuje również moje doświadczenie post-doc w VMware Research.

Ta historia zaczyna się w 2015 roku, kiedy kończyłem doktorat. Przeprowadzałem wywiady zarówno w przemyśle, jak i na uczelni: tak naprawdę myślałem, że nie dostanę żadnych ofert akademickich (nie pracowałem nad seksownymi tematami, takimi jak przetwarzanie w chmurze czy uczenie maszynowe), ale chciałem spróbować, zanim wyjechałem do branży . Chciałem dołączyć do laboratorium badań przemysłowych, takiego jak Microsoft Research.

Co ciekawe, kiedy byłem na rynku pracy, kilku ludzi z Microsoft Research Silicon Valley otworzyło nowe laboratorium badawcze w VMware. Moi mentorzy stażowi Mahesh Balakrishnan i Marcos Aguilera byli w tym nowym laboratorium, więc zachęcili mnie do złożenia podania. Przeprowadziłem wywiad w laboratorium i miałem świetne doświadczenie. Dali mi ofertę dołączenia jako badacz.

Następnie przeprowadziłem wywiad na różnych uniwersytetach i miałem ogromne szczęście, że dostałem ofertę na University of Texas w Austin. Zadzwoniłem do Dahlii Malkhi (jednego z założycieli laboratorium badawczego), aby przekazać jej wiadomości i poinformować, że nie mogę dołączyć do VMware Research (lub VRG, jak się nazywa). Na tej samej rozmowie telefonicznej Dahlia zasugerowała, że ​​zrobię roczny post-doc przed dołączeniem do UT, i zaoferowała, że ​​będzie mnie gościć w VRG. Słyszałem już o udanych rocznych doktoratach (na przykład Philip Guo) i tak naprawdę nie chciałem od razu zanurzać się w życie wykładowców, więc się zgodziłem. Rozmawiałem z ludźmi z UT Austin, którzy byli na szczęście w porządku z odroczeniem mojej daty dołączenia o rok.

Kiedy dołączyłem do VRG, miałem wyraźny cel tworzenia nowych połączeń, a nie tylko pracy nad tymi samymi rzeczami, które zrobiłem podczas mojego doktoratu. Rozmawiałem z wieloma badaczami o tym, nad czym pracowali i jak mogłem pomóc. To wtedy po raz pierwszy rozmawiałem z Ittai Abrahamem, ekspertem od teorii / struktur danych (jego wiedza obejmuje znacznie więcej dziedzin, ale jest to najkrótszy sposób na opisanie go). Ittai wpadł na pomysł nowej struktury danych dla sklepów z kluczowymi wartościami i chciał, aby ktoś z doświadczeniem systemowym pomógł ją zbudować. Przyłączyłem się, myśląc, że będzie to szybki projekt trwający od jednego do trzech miesięcy.

Początkowe dni były trochę ciężkie, a większość tego, co mówił Ittai, przeszła mi przez głowę. Ludzie systemów i ludzie teorii naprawdę mówią różnymi językami, więc minęło trochę czasu, zanim byliśmy zsynchronizowani. Aby lepiej zrozumieć intuicję projektu, zacząłem budować szybki prototyp pytona, który ucieleśnia nową strukturę danych, o której myślał Ittai. Nasz prototyp pokazał, że nowa struktura danych może drastycznie zmniejszyć wzmocnienie zapisu, chociaż nasze opóźnienia były znacznie wyższe niż w przypadku magazynów klucz-wartość C ++, z którymi porównaliśmy. Wczesną formę PebblesDB przedstawiłem na konferencji VMware RADIO, wewnętrznej konferencji badawczo-rozwojowej w VMware. Poza tym konferencje akademickie nie mają nic na temat RADIO: wartość produkcji RADIO jest bliższa TED niż konferencji akademickiej. Mógłbyś mieć mały koncert na tej scenie i nie wyglądałoby to nie na miejscu.

Po otrzymaniu pozytywnej i użytecznej opinii w RADIO, Ittai i ja postanowiliśmy zmodyfikować istniejący magazyn kluczy i wartości, aby wykorzystać naszą nową strukturę danych. Wybraliśmy LevelDB, ponieważ był znacznie prostszy i łatwiejszy do zrozumienia niż RocksDB, i zaczęliśmy go modyfikować. W szczególności zaczęliśmy modyfikować HyperLevelDB, port LevelDB przez ludzi HyperDex w Cornell (grupa Emin Gun Sirer).

Mieliśmy kilka chwil, kiedy to, co zakładaliśmy, kolidowało z tym, co faktycznie robił LevelDB: na przykład, pomyśleliśmy, że będzie binarne wyszukiwanie w całej sstable, szukając O (logn); okazuje się, że sstables mają tylko indeksy szukające O (1).

To była zabawna część projektu, ponieważ tak wiele jest zaangażowanych w przejście od teoretycznej struktury danych do budowy rzeczywistego magazynu klucz-wartość, który zapewnia doskonałą wydajność. Do zbudowania PebblesDB musieliśmy zastosować wiele znanych sztuczek inżynieryjnych.

Byliśmy w połowie wdrażania, kiedy mój post-doc zakończył się i dołączyłem do UT. Na szczęście niemal natychmiast Pandian dołączył do mojej grupy badawczej i przejął część dotyczącą budowy systemu. Pandian to niesamowity konstruktor systemów, więc już wkrótce mieliśmy gotowy prototyp. Oceniliśmy to w porównaniu z LevelDB i uzyskaliśmy świetne wyniki. Więc napisaliśmy to i wysłaliśmy do Euroys.

Zostaliśmy odrzuceni na Eurosys, głównie z dwóch powodów: nie oceniliśmy w stosunku do RocksDB i nie wyjaśniliśmy bardzo dobrze projektu. Wydawało się, że to bardziej hackowanie LevelDB niż nowa struktura danych. Musieliśmy więc pracować, oceniając w porównaniu z RocksDB i oceniając wydajność aplikacji takich jak HyperDex i MongoDb na PebblesDB. Wtedy do projektu dołączył Rohan Kadekodi. Rohan to kolejny niesamowity twórca systemów. W ciągu miesiąca przeszedł od niewiedzy o MongoDB do modyfikacji go tak, aby działał na PebblesDB.

To właśnie wtedy, gdy analizowaliśmy wydajność aplikacji, dostaliśmy inne niespodzianki. Na przykład, zarówno w HyperDex, jak i MongoDB, wiele żądań put () zostanie przekształconych w żądania get () + put (), aby najpierw sprawdzić, czy klucz już tam jest. Wpłynęło to znacząco na wydajność PebblesDB, ponieważ PebblesDB mógł obsłużyć znacznie więcej żądań put (), niż aplikacja na niego rzucała. Ciekawe było wymyślenie tych dziwactw związanych z aplikacją!

Kolejną rzeczą, którą rozwiązaliśmy, było pisanie. Rozdałem nasz projekt grupie systemów w UT Austin. Otrzymaliśmy doskonałe informacje zwrotne i ponownie napisałem artykuł, aby wyjaśnić, że robimy dwie rzeczy: innowacje w strukturze danych pod względem struktury danych fragmentarycznych logarytmicznych drzew scalonych (FLSM) oraz budowanie PebblesDB na FLSM (wraz z powiązanymi sztuczkami inżynierskimi). W szczególności informacje zwrotne na temat wprowadzenia były bardzo przydatne, a my napisaliśmy je kilka razy, aby uzyskać sens. Przekazaliśmy artykuł do SOSP.

Nowości pojawiły się w sierpniu: zostaliśmy zaakceptowani ze świetnymi recenzjami! Dobrze było wiedzieć, że cała ta praca w końcu się opłaciła. Współpracowaliśmy z naszym pasterzem, niesamowitym Fransem Kaashoekiem, aby odpowiedzieć na komentarze recenzentów. Pracowaliśmy również ciężko, aby opublikować kod jako oprogramowanie typu open source na Github (gdzie otrzymał sporo uwagi: obecnie 98 gwiazd!). Pracowaliśmy również nad wydaniem zmian, które wprowadziliśmy w MongoDB, aby można go było uruchomić na PebblesDB.

Praca nad PebblesDB sprawiła, że ​​pomyślałem o problemie wzmocnienia zapisu w stosie pamięci, więc zacząłem nad tym pracować w UT Austin. Wstępne prace w tej przestrzeni doprowadziły do ​​uzyskania najlepszego plakatu w ApSys i grantu NSF CAREER! Ogólnie rzecz biorąc, udane doświadczenie post-doc :)

Moje lekcje z doświadczenia PebblesDB:

  • Pisanie jest bardzo ważne. Mocno czuję, że czas poświęcony na ponowne napisanie artykułu, aby być lepszym, zwraca się o wiele więcej niż czas poświęcony na dodatkowe eksperymenty (choć ważna jest również silna ocena).
  • Praca z ludźmi z teorii to świetna zabawa! Jeśli znajdziesz odpowiednich współpracowników, praca nad kombinacją teorii i praktyki prowadzi do niezwykle satysfakcjonujących badań i dużego wpływu. W VMware Research trwają podobne projekty, które są super fajne.
  • Jeśli dołączysz do środowiska akademickiego, gorąco polecam roczny post-doc po zakończeniu doktoratu. Doktorat pozwolił mi złapać oddech po doktoracie, odkryć nowe projekty i nawiązać nowe kontakty, których nigdy bym nie miał.
  • Zdecydowanie polecam wykonanie post-doc w VMware Research (i nie, nie muszę tego mówić). Grupa badawcza ma niesamowitych badaczy z dużym doświadczeniem w wielu dziedzinach, a kultura jest zorientowana na robienie dużych projektów, które mogą potrwają dłużej, ale będą miały trwały wpływ.