RocksDBのWrite Ahead Log(WAL)
1231 ワード
Overview
RocksDBには三つの基本的なデータ構造概念があります.memtable、sstfile、logfile. memtableはメモリデータ構造であり、新規に入会してmemtableを挿入して選択的にlogfileに書き込む. logfileは、ディスクに順次書き込むファイルである. memtableがいっぱい書いたら、flushからディスク上のsstfileになります.logfileが安全に削除されることをお知らせします.検索keysの性能を向上させるために、sstfileのデータがソートされました. RocksDBに対する書き込み操作は必ず二つのところに書かれています.1)メモリベースのデータ構造memtable.2)日記-Write Ahead Log(WAL)を書き留めます.WALは異常が発生すれば、memtableのデータを完全に回復し、dbの元の状態を回復するために使用することができる.デフォルトの設定では、RocksDBはユーザーが書いた後にflush WALを使うことで、プロセスのcrash後の一貫性を保証します.
WALのライフサイクル
例えば、RocksDBの例dbは、二つのColumn Famile es:「newuucf」、「default」によって作成され、Column FamiriesはRocksDB 3.0において作成され、各key-value pairは少なくとも一つのColumn Famiriesに対応し、指定されていない場合は「default」に対応する.Column Famiriesは、論理的にdbを分離する方法を提供する.db openの後に、新しいWALユーザーの持続的なすべての書き込みを作成します.
RocksDBには三つの基本的なデータ構造概念があります.memtable、sstfile、logfile.
WALのライフサイクル
例えば、RocksDBの例dbは、二つのColumn Famile es:「newuucf」、「default」によって作成され、Column FamiriesはRocksDB 3.0において作成され、各key-value pairは少なくとも一つのColumn Famiriesに対応し、指定されていない場合は「default」に対応する.Column Famiriesは、論理的にdbを分離する方法を提供する.db openの後に、新しいWALユーザーの持続的なすべての書き込みを作成します.
DB* db;
std::vector column_families;
column_families.push_back(ColumnFamilyDescriptor(
kDefaultColumnFamilyName, ColumnFamilyOptions()));
column_families.push_back(ColumnFamilyDescriptor(
"new_cf", ColumnFamilyOptions()));
std::vector handles;
s = DB::Open(DBOptions(), kDBPath, column_families, &handles, &db);