Jaki jest sens rodzin kolumn?

9

Widziałem, że systemy baz danych NoSQL, takie jak RocksDB, oferują funkcję o nazwie rodziny kolumn . Wydaje mi się, że rozumiem, do czego odnosi się ta koncepcja, ale jakie są rzeczywiste (praktyczne) korzyści z ich używania? Przypuszczam, że w niektórych przypadkach mogą poprawić wydajność wyszukiwania lub przynajmniej wprowadzić kluczową wartość w przestrzeni kosmicznej? O ile rozumiem, nie miałoby to wpływu na faktyczną semantykę dostępu do bazy danych. Czy to jest poprawne? Czy czegoś brakuje?

Noldorin
źródło

Odpowiedzi:

3

Właśnie odkryłem kilka interesujących informacji z RocksDB FAQ . (RocksDB to sklep KV).

Oto kilka istotnych fragmentów.

P: Do czego służą rodziny kolumn?

Odp .: Najczęstsze powody używania rodzin kolumn: (1) używają różnych ustawień zagęszczania, komparatorów, typów kompresji, operatorów scalania lub filtrów zagęszczania w różnych częściach danych; (2) upuść rodzinę kolumn, aby usunąć jej dane; (3) jedna rodzina kolumn do przechowywania metadanych, a druga do przechowywania danych.

P: Jaka jest różnica między przechowywaniem danych w rodzinie z wieloma kolumnami a wieloma bazami danych rocksdb?

Odp .: Główne różnice to tworzenie kopii zapasowych, zapisy atomowe i wydajność zapisów. Zaletą korzystania z wielu baz danych: baza danych jest jednostką kopii zapasowej lub punktem kontrolnym. Łatwiej jest skopiować bazę danych na inny host niż rodzina kolumn. Zalety używania wielu rodzin kolumn: (1) partie zapisu są atomowe w wielu rodzinach kolumn w jednej bazie danych. Nie można tego osiągnąć za pomocą wielu baz danych RocksDB. (2) W przypadku wydania zapisów synchronizacji do WAL zbyt wiele baz danych może pogorszyć wydajność.

P: Mam różne miejsca na klawisze. Czy powinienem je rozdzielić przedrostkami, czy użyć różnych rodzin kolumn?

Odp .: Jeśli każda przestrzeń klucza jest dość duża, dobrym pomysłem jest umieszczenie ich w różnych rodzinach kolumn. Jeśli może być mały, należy rozważyć spakowanie wielu spacji klucza w jednej rodzinie kolumn, aby uniknąć problemów z utrzymaniem zbyt wielu rodzin kolumn.

Noldorin
źródło
2

Wiem, że nie szukasz równoległości z SQL, ale w tym artykule wyjaśniono po prostu cel i praktyczną korzyść rodzin kolumn.

Od Zrozumienie Cassandra model danych z SQL Perspektywy na RubyScale:

Do czego służy rodzina kolumn? Tylko przedrostek tabeli? Rodzina kolumn ma wiele ustawień, które zmieniają jej zachowanie. Istnieją ustawienia pamięci podręcznej dla kluczy (UUID w tym przykładzie), ustawienia pamięci podręcznej dla wszystkich wierszy (cała tabela w tym przykładzie) i, co najważniejsze, sortowanie. W Cassandrze nie ma PRZESUNIĘCIA, tylko LIMIT i odpowiednik MIĘDZY . W tym przykładzie nazwy kolumn są tylko ciągami znaków, ale mogą być również liczbami całkowitymi lub znacznikami czasu i zawsze są przechowywane w kolejności sortowania. Jedna rodzina kolumn może mieć dane posortowane według dat, w których zapytania są wykonywane według przedziału czasu, a inne mogą być danymi z książki adresowej, w których zapytania są sortowane alfabetycznie. Jedynym sortowaniem, jakie można wykonać po tym fakcie, jest odwrócenie określonego wycinka.

Nelz
źródło
Ciekawy. Jak mówisz, nie w pełni odpowiada na pytanie, ale daje podpowiedź. Dzięki.
Noldorin