RocksDB - RocksDB

RocksDB
Rocksdb-icon.svg
Pierwotny autor (autorzy) Dhruba Borthakur
Deweloper(zy) Facebook, Inc.
Pierwsze wydanie maj 2012 ; 9 lat temu ( 2012-05 )
Wersja stabilna
6.22.1  Edytuj to na Wikidanych / 12 lipca 2021
Magazyn
Napisane w C++
System operacyjny Windows , macOS , Linux , FreeBSD , OpenBSD , Solaris , AIX
Platforma x86 , x86_64 , ppc64 , ppc64le , aarch64
Rodzaj Wbudowana baza danych
Licencja Apache 2.0 lub GPL 2
Strona internetowa rocksdb .org

RocksDB to wbudowana baza danych o wysokiej wydajności dla danych klucz-wartość . Jest to rozwidlenie Google LevelDB zoptymalizowane pod kątem wykorzystania wielu rdzeni procesora i wydajnego wykorzystania szybkiej pamięci masowej, takiej jak dyski półprzewodnikowe (SSD), do obsługi obciążeń związanych z wejściem/wyjściem (I/O) . Opiera się na strukturze danych z logicznie ustrukturyzowanym drzewem scalającym (drzewo LSM). Jest napisany w C++ i zapewnia oficjalne powiązania językowe dla C++ , C i Java ; obok wielu powiązań językowych innych firm . RocksDB to oprogramowanie o otwartym kodzie źródłowym , które zostało pierwotnie wydane na podstawie 3-klauzulowej licencji BSD . Jednak w lipcu 2017 r. projekt został zmigrowany do podwójnej licencji, zarówno Apache 2.0, jak i licencji GPLv2, prawdopodobnie w odpowiedzi na czarną listę Apache Software Foundation dotyczącą poprzedniej klauzuli licencyjnej BSD+Patents.

RocksDB jest stosowany w systemach produkcyjnych w różnych web skalę przedsiębiorstw, w tym Facebook , Yahoo! i LinkedIn .

Cechy

RocksDB, podobnie jak LevelDB , przechowuje klucze i wartości w dowolnych tablicach bajtów, a dane są sortowane bajtowo według klucza lub poprzez dostarczenie niestandardowego komparatora.

RocksDB zapewnia wszystkie funkcje LevelDB, a także:

i inne: Lista funkcji RocksDB, których nie ma w LevelDB .

RocksDB nie jest bazą danych SQL (chociaż MyRocks łączy RocksDB z MySQL ). Podobnie jak inne sklepy NoSQL i dbm , nie ma relacyjnego modelu danych i nie obsługuje zapytań SQL. Ponadto nie ma bezpośredniej obsługi indeksów pomocniczych, jednak użytkownik może tworzyć własne wewnętrznie przy użyciu rodzin kolumn lub zewnętrznie. Aplikacje używają RocksDB jako biblioteki, ponieważ nie zapewnia ona serwera ani interfejsu wiersza poleceń.

Historia

RocksDB został stworzony na Facebooku przez Dhruba Borthakura w kwietniu 2012 roku, jako rozwidlenie LevelDB z początkowym celem poprawy wydajności dla obciążeń serwerów.

Integracja

Jako baza danych do osadzenia, RocksDB może być używany jako silnik pamięci masowej w większym systemie zarządzania bazą danych (DBMS). Na przykład CockroachDB używa RocksDB jako silnika pamięci masowej, głównie do obciążeń transakcyjnych, podczas gdy Rockset używa RocksDB głównie do analitycznego przetwarzania danych. Pokazuje to, że RocksDB może być używany jako silnik pamięci masowej zarówno do przetwarzania transakcji online, jak i przetwarzania analitycznego online .

Alternatywny backend

Rozpoczęto następujące projekty mające na celu zastąpienie lub oferowanie alternatywnych silników pamięci masowej dla istniejących już systemów bazodanowych za pomocą RocksDB:

ArangoDB

ArangoDB dodał RocksDB do swojego poprzedniego silnika przechowywania ("mmfiles"). Począwszy od ArangoDB 3.4, RocksDB będzie domyślnym silnikiem przechowywania w ArangoDB.

Kasandra

Cassandra w RocksDB może znacznie poprawić wydajność Apache Cassandra (ogólnie 3-4 razy szybciej, w niektórych przypadkach 100 razy szybciej). Zespół Instagrama na Facebooku opracował i udostępnił swój kod wraz z testami porównawczymi wyników wydajności.

MariaDB

MariaDB może korzystać z aparatu pamięci masowej MyRocks (który jest rozwidlony z RocksDB) od wersji MariaDB 10.2.5 (stan alfa) i jest stabilny od wersji MariaDB 10.2.16 w 2018 roku.

MongoDB

Projekt MongoRocks zapewnia moduł pamięci dla MongoDB, gdzie silnikiem pamięci jest RocksDB.

Powiązanym programem jest Rocks Strata, narzędzie napisane w Go , które umożliwia zarządzanie przyrostowymi kopiami zapasowymi MongoDB, gdy RocksDB jest używany jako silnik pamięci masowej.

MySQL

Projekt MyRocks tworzy nowy silnik przechowywania danych oparty na RocksDB dla MySQL . Szczegółowe informacje na temat MyRocks zostały zaprezentowane na Percona Live 2016.

Osadzony

Następujące systemy i aplikacje baz danych wybrały RocksDB jako wbudowany silnik pamięci masowej:

BlueStore firmy Ceph

W cef za BlueStore warstwa pamięci wykorzystuje RocksDB zarządzania metadanymi w urządzeniach OSD.

Apache Flink

Apache Flink używa RocksDB do przechowywania punktów kontrolnych.

FusionDB

FusionDB używa RocksDB jako silnika pamięci masowej dla XML, Key/Value i JSON.

LogDevice Dzienniki DB

LogsDB LogDevice jest zbudowany na bazie RocksDB.

Rockset

Usługa Rockset , która jest używana do analizy danych operacyjnych, wykorzystuje RocksDB jako silnik przechowywania.

SSDB

Projekt ssdb-rocks wykorzystuje RocksDB jako silnik pamięci masowej dla bazy danych SSDB NoSQL.

TiDB

Projekt TiDB wykorzystuje RocksDB jako silnik pamięci masowej.

Yugabajt

Baza danych Yugabyte wykorzystuje zmodyfikowaną wersję RocksDB jako część swojego silnika pamięci masowej DocDB

Powiązania językowe stron trzecich

Powiązania języków programowania innych firm dostępne dla RocksDB obejmują:

Bibliografia

Zewnętrzne linki