2013-05-07 15 views
8

Czy Apache Cassandra obsługuje sharding?Czy Cassandra obsługuje sharding?

Przepraszam, że to pytanie musi wydawać się banalne, ale nie mogę znaleźć odpowiedzi. Czytałem, że Cassandra była częściowo wzorowana na Wielkim Stolicy GAE, który odskakuje na masową skalę. Ale większość dokumentacji, którą obecnie znajduję na Cassandrze, zdaje się sugerować, że Cassandra nie dzieli danych poziomo na wiele komputerów, ale raczej obsługuje wiele zduplikowanych maszyn. Sugerowałoby to, że Cassandra jest dobrze dopasowaną wysoką dostępnością, ale ostatecznie ulegnie zniszczeniu, jeśli wielkość zapisu stanie się bardzo wysoka.

Odpowiedz

13

Cassandra dzieli partycję na węzły (ponieważ jeśli nie można jej podzielić, nie można jej skalować). Wszystkie dane dla klastra Cassandra są podzielone na "pierścień", a każdy węzeł na ringu odpowiada za jeden lub więcej kluczowych zakresów. Masz kontrolę nad Partitioner (np. Random, Zamówione) i ile węzłów w pierścieniu klucz/kolumna powinny być replikowane na podstawie Twoich wymagań.

Zawiera dość dobry przegląd. Basic architecture

Polecam również przeczytanie białej księgi Dynamo. Podczas gdy Cassandra na wiele sposobów różni się od Dynamo, koncepcyjnie wywodzą się one z tych samych źródeł. Sprawdź to: Dynamo White Paper

+0

OK, kluczowe pytanie: czy Cassandra może zostać zapytana za pomocą większej i mniejszej liczby operatorów w czasie Olog (n)? –

+0

Zależy to od tego, czy użyłeś losowego lub uporządkowanego partycjonera. Random Partitioner będzie równomiernie rozdzielał węzły, więc możliwe jest, że zapytanie o zakres wymagałoby trafienia większości/wszystkich węzłów w celu pobrania danych ... więc może O (n). Z uporządkowanym Partitioner Cassandra może dokładnie określić, które węzły będą wyszukiwać i zwracać wszystko w pierścieniu pomiędzy, ale odbywa się to kosztem równomiernej dystrybucji danych (tj. Hello hotspotów). Istnieją sposoby uzyskiwania zapytań o zakres (np. Zbuduj własny indeks, w którym kluczem jest kolumna). To gwarantuje samo w sobie inne pytanie/dyskusję. –

+0

Czy partycjonowane dane są replikowane na wszystkich węzłach (tych, które zostały skonfigurowane do replikacji)? – user3587180

-3

tak, Kasandra obsługuje sharding, ale na swój własny sposób.

W Mongodb każdy węzeł drugorzędny zawiera pełne dane węzła podstawowego, ale w Cassandra każdy węzeł wtórny jest odpowiedzialny za przechowywanie tylko niektórych kluczowych partycji danych.

+7

Konflikujesz MongoDB [* replikacja *] (http://docs.mongodb.org/manual/replication/) (gdzie wtórniki zawierają pełną kopię danych dla nadmiarowości) z [* sharding *] (http://docs.mongodb.org/manual/sharding/) (partycjonowanie logicznej bazy danych w klastrze maszyn). Zasadniczo, jeśli jesteście shardingiem, chcielibyście również, aby każdy fragment był wspierany przez zestaw replik, ale te dwie koncepcje są w rzeczywistości ortogonalne. – Stennie