W terminologii BigTable/GFS i Cassandra, jaka jest definicja SSTable?Co to jest SSTable?
Odpowiedz
Sort Struny stołowy (zapożyczone z google) jest plikiem o klucz/wartość pary strun, klasyfikowane według kluczy
Dzięki za kolejny doskonały SO Cassandra odpowiedź! BTW, czy widziałeś to pytanie: http://stackoverflow.com/questions/2573106/what-are-the-alternative-ways-to-model-mm-relations-in-cassandra – knorv
Czy jest ogólnie niezmienny? –
tak, sstables są niezmienne od projektu - co jest niesamowitą cechą – Schildmeijer
„An SSTable zapewnia trwałą, uporządkowaną mapa niezmienny z kluczy do wartości, gdzie oba klucze i wartości dowolne ciągi bajtów Operacje są wykonywane w celu wyszukania wartości skojarzonej z określonym kluczem i iteracji po wszystkich parach klucz/wartość w określonym zakresie klucza Wewnętrznie, każda SSTable zawiera sekwencję bloków (zazwyczaj każdy blok ma rozmiar 64 KB , ale jest to konfigurowalne) Indeks bloku (przechowywany na końcu SSTable) służy do lokalizowania bloków, indeks jest ładowany do pamięci po otwarciu Sstable. znajdź odpowiedni blok, wykonując wyszukiwanie binarne w in-memor y indeks, a następnie odczytanie odpowiedniego bloku z dysku. Ewentualnie SSTable można całkowicie odwzorowane w pamięci, która pozwala na wykonanie wyszukiwań i skanuje bez dotykania twardy „.
"bez dotykania dysku" -> "bez świadomości, że dysk jest dotykany". Mapowana pamięć IO jest bardzo przydatną techniką, ponieważ przekazuje rzeczywistą wartość IO do systemu operacyjnego, zakładając, że może wykonać dobrą robotę przy buforowaniu (szczególnie, gdy kilka procesów współdzieli ten sam plik). Ale ma tę wadę, że nie masz nad nim kontroli. Jeśli strona nie jest rezydentna w pamięci, wątek będzie blokował i nie może wykonywać innych operacji; kontrastuje to z "asynchronicznym IO", w którym można zarejestrować wywołanie zwrotne i wykonać inne czynności w tym samym wątku, podczas gdy OI oczekuje. – ithkuil
@ithkuil: Możesz całkowicie kontrolować odwzorowanie pamięci IO co najmniej do tego stopnia, że możesz upewnić się, że niektóre strony są w pamięci lub zostały zatwierdzone na dysku (nadal jest miejsce do przeglądania stron, które nie są gwarantowane w pamięci, ale może być bardzo dobrze). To właśnie robią cudowne rzeczy, takie jak mlock(), msync() i MAP_LOCKED.Możesz również zrozumieć, co aktualnie jest i nie jest stronicowane przez mincore(). –
@ ChristopherSmith: tak masz rację, są sposoby, aby to kontrolować. Zwykle jest on jednak używany do krytycznych sekcji wydajności (w czasie rzeczywistym) lub problemów związanych z bezpieczeństwem (np. Unikanie zamiany hasła w pamięci na dysk). Pliki mapowane w pamięci są bardzo użyteczne właśnie dlatego, że nie musisz decydować, ile z nich ma pozostać w pamięci; w przeciwnym razie można po prostu odczytać cały plik w pamięci bez mmap i osiągnąć ten sam efekt. W rzeczywistości po prostu przejrzałem kod Kasandra; jedynym wywołaniem jest 'mlockall (MCL_CURRENT);' done podczas uruchamiania. Zobacz także: http://goo.gl/AEgPM – ithkuil
Tabletka jest przechowywany w postaci SSTables.
SSTable (bezpośrednio mapowane na GFS) jest . klucz-wartość w oparciu niezmienny przechowywanie przechowuje ilości danych, z których każda ma 64KB
Definicje:.
- indeks kluczy: klucz i lokalizacja począwszy
- Chunk jest jednostką przechowywania w GFS, zarządzanie repliki są przez kawałka
SSTable (pol. Sorted Strings Table) to plik z parami klucz/wartość posortowany według kluczy.
SSTable zapewnia trwałą, niezmienną nakazał mapę z kluczy do wartości, gdzie oba klucze i wartości są arbitralne ciągi bajtów.
Wewnątrz każdej SSTable zawiera sekwencję bloków (zazwyczaj
każdy blok jest 64 KB wielkości, ale można to zmienić).
Jest to świetny wstęp do SSTables postu: http://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/ –