Introduction Flashcards
(12 cards)
Wyjaśnij pojęcia reliability, maintainability i scalalability
Reliability - system działa poprawnie w przypadku napotkania problemów (software or hardware faults, human error)
Scalability - system radzi sobie ze wzrostem ruchu, danych, złożoności
Maintainability - można efektywnie rozszerzać go o nowe funkcjonalności, nie wymaga dużo pracy nad utrzymaniem go w dobrej formie
Co może być przyczyną różnych czasów odpowiedzi dla praktycznie takiego samego zapytania na takim samym zbiorze danych?
-retry pakietu TCP
-context-switch wątku
-retry czytania z dysku z powodu page fault
-większe obłożenie CPU w tym czasie
-garbage collection
Wyjaśnij pojęcie tail latency amplificafion
Jeśli jakaś akcja wymaga zapytania do kilku serwisów, to z punktu widzenia klienta końcowego akcja jest tak wolna jak najdłuższa odpowiedź spośród tych serwisów
Wymień 3 składowe maintainability i krótko je objaśnij
Operability - easy to operate
Simplicity - easy to onboard a new developer
Evolvability - easy to extend with new functionality
Różnice między network model (CODASYL) i relacyjnym modelem.
-network model żeby dojść do rekordu zagnieżdżonego, trzeba zawsze iść od parenta i znać ścieżkę do niego (Access path), można mieć wiele ścieżek, i deweloper musi je znać, jeśli chcesz zmienić ścieżkę musisz wszędzie w kodzie zmienić queriesy
-relacyjny model dowolne dane są dostępne od razu przez tabelkę (Access path wyznaczany przez abstrakcyjny query optimizer - general purpose)
Różnice między network model (CODASYL) i relacyjnym modelem.
-network model żeby dojść do rekordu zagnieżdżonego, trzeba zawsze iść od parenta i znać ścieżkę do niego (Access path), można mieć wiele ścieżek, i deweloper musi je znać, jeśli chcesz zmienić ścieżkę musisz wszędzie w kodzie zmienić queriesy
-relacyjny model dowolne dane są dostępne od razu przez tabelkę (Access path wyznaczany przez abstrakcyjny query optimizer - general purpose)
Zalety dokumentowych baz danych względem relacyjnych
-odwzorowanie danych bliższe modelowi w aplikacji
-większa elastyczność w przechowywaniu danych
-powiązane rekordy trzymane razem (locality, szybsze wyciąganie)
Wyjaśnij czym różni się schema-on-read vs schema-on-write. Jak zaktualizować schemat w obu modelach?
schema-on-read - schema is implicit, verified on read
schema-on-write - schema is explicit, verified on write
Migracje bazodanowe vs. handlowanie zmian w kodzie
Jak reprezentowany jest graf zaimplementowany w oparciu o property-graph model?
Dwie encje: vertices i edges
Każda z nich ma unique ID i listę propertesiow.
Dodatkowo edge ma wskazanie na początkowy i końcowy vertex i labelkę opisującą rodzaj relacji pomiędzy wierzchołkami.
Powinno być możliwe wyciągnięcie wychodzących/przychodzących krawędzi w odniesieniu do wierzchołka.
Opisz model Triple Store
Subject-predictae-object
Subject jest wierzchołkiem
Object może być innym wierzchołkiem albo propertesiem.
Jaka jest różnica w Javie między System.currentTimeMillis() i System.nanoTime()?
Jeden reprezentuje time-of-day clock (w szczególnych warunkach może się czas cofnąć), drugi reperezentuje monotonic clock (mierzy upływ czasu, nie reprezentuję konkretnej pory dnia, nie może się cofać).
Dlaczego czas obserwowany przez komputer może się rozjeżdżać?
W zasadzie zawsze będzie:
-sam zegar w komputerze kwarcowy ma jakąś dokładność, która może się z czasem akumulować
-dlatego zazwyczaj synchronizuje się zegar przez NTP, ale dokładność jest taka jak opóźnienie na sieci w obsłudze NTP
-samo NTP może być źle skonfigurowane
-maszyny wirtualne mogą dawać złudzenie, że czas nagle niepłynnie przesuwa się do przodu (bo maszyna była zapauzowana)
-mogą pojawiać się problemy z obsługą leap seconds
-możemy być odcięci od NTP i tego nie zauważyć