Introduction Flashcards

(12 cards)

1
Q

Wyjaśnij pojęcia reliability, maintainability i scalalability

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Co może być przyczyną różnych czasów odpowiedzi dla praktycznie takiego samego zapytania na takim samym zbiorze danych?

A

-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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wyjaśnij pojęcie tail latency amplificafion

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wymień 3 składowe maintainability i krótko je objaśnij

A

Operability - easy to operate
Simplicity - easy to onboard a new developer
Evolvability - easy to extend with new functionality

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Różnice między network model (CODASYL) i relacyjnym modelem.

A

-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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Różnice między network model (CODASYL) i relacyjnym modelem.

A

-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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Zalety dokumentowych baz danych względem relacyjnych

A

-odwzorowanie danych bliższe modelowi w aplikacji
-większa elastyczność w przechowywaniu danych
-powiązane rekordy trzymane razem (locality, szybsze wyciąganie)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wyjaśnij czym różni się schema-on-read vs schema-on-write. Jak zaktualizować schemat w obu modelach?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Jak reprezentowany jest graf zaimplementowany w oparciu o property-graph model?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Opisz model Triple Store

A

Subject-predictae-object
Subject jest wierzchołkiem
Object może być innym wierzchołkiem albo propertesiem.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Jaka jest różnica w Javie między System.currentTimeMillis() i System.nanoTime()?

A

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ć).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Dlaczego czas obserwowany przez komputer może się rozjeżdżać?

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ć

How well did you know this?
1
Not at all
2
3
4
5
Perfectly