Partitioning Flashcards

1
Q

W jaki sposób można rozdzielać dane między partycjami?

Jakie wady i zalety mają te sposoby?

A

Albo po prostu po kluczu danej porcji danych albo po hashu tego klucza.
Pierwszy jest lepszy, jeśli chcemy efektywnie wykonywać range queries, ale jest w nim ciężej o równe dystrybuowanie danych pomiędzy partycjami.
Drugi jest lepszy, jeśli istnieje ryzyko występowania nierównomiernego występowania kluczy. Utrudnia jednak range query - tail latency amplification.

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

Opisz znane ci metody rebalansingu partycji. W których bazach danych stosowany jest każdy z nich?

A
  • fixed number of partitions, e.g. Riak or Elastic Search or Couchbase or Voldemort
  • dynamic number of partitions, e.g. MongoDB or HBase
  • fixed numer of partitions per nodes, e.g. Cassandra
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

W jaki sposób działają local i global secondary index w przypadku partycjonowanych baz danych?

A

Local (zwany też document-based) - indeksuje tylko dane w obrębie partycji, czyli przydatny jak chcemy uporządkować dane dla danego klucza.
Global (zwany też term-based) - tworzony przez podział danych na drugi sposób pomiędzy partycjami (w inny sposób niż główny), tak aby można było robić wydajne range query po innym kluczu niż główny. Zazwyczaj aktualizowany asynchronicznie.

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

Dlaczego partycjonowanie za pomocą mod n, gdzie n to liczba node’ów, to nienajlepszy pomysł?

A

Ponieważ rebalansing po dodaniu/odjęciu node’a wymaga dużej wymiany danych pomiędzy node’ami. Większość danych po zmianie wyląduje w zupełnie innej partycji.

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

Na czym polega dynamiczne partycjonowanie? W jakiej bazie danych jest stosowane? Jakie są jej wady i zalety?

A

Mechanizm partycjonowania, w którym liczba partycji dynamicznie się zmienia. W momencie, gdy partycja przekracza pewien rozmiar, dzielona jest na pół i potencjalnie dystrybuowana do innego node’a.
Pozwala w łatwy sposób zachowywać względnie stałe rozmiary partycji nawet gdy dane dzielone są pomiędzy partycje po kluczu a nie po hashu. Sprawdzi się zatem, gdy chcemy wykonywać na danych range query.
Stosowane w: HBase, MongoDB.

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

W jaki sposób requesty routowane są do właściwego node’a (i partycji)?

A
  • Osobna warstwa routująca przekierowująca zapytania do odpowiednich node’ów
  • Każdy z node’ów może znać podział partycji i robić przekierowania (klienci mogą stosować round robin wtedy)
  • Klienci mogą znać bezpośrednio podział i od razu uderzać do odpowiedniego node’a

W każdym przypadku potrzebny jest mechanizm przez który „świadoma” warstwa będzie utrzymywać aktualny podział partycji do node’ów (service discovery, coordination service). Często oparte jest to o ZooKeepera albo inny podobny system.
Cassandra i Riak opierają się o gossip protocol. Takie podejście zwiększa skomplikowanie w node’ach ale uwalnia od zależności na zewnętrznym serwisie koordynującym.

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