# RocksDB：カラムファミリー

![`smart`](RocksDBColumnFamilies_aa_002_20220511.png)

----------------------------------------------------------------------------
RocksDBは、カラムファミリーと呼ばれる複数の論理パーティションを作成・管理することができるキー・バリュー・データベースです。各カラムファミリーは、ユニークなキー・バリュー・ペアのセットを格納し、独立して構成・管理することができます。カラムファミリーは、RocksDBバージョン3.0で導入され、データベースを論理的にシャードする方法を提供し、より効率的で柔軟なデータの管理を可能にします。

カラムファミリーの主な特徴の1つは、複数のカラムファミリー間でアトミックな書き込みをサポートすることです。これは、複数のカラムファミリーをまたいだ書き込み操作をアトミックに実行できることを意味します。すべての書き込みが適用されるか、またはどれも適用されないかを保証します。これは、複数のカラムファミリー間のデータの一貫性を維持する必要があるアプリケーションにとって有用です。

データベース内のすべてのカラムファミリーで一貫したデータの見え方を提供することが、カラムファミリーの重要な特徴です。これは、あなたがどのカラムファミリーからもデータをクエリしてアクセスでき、データが一貫して最新の状態であるということを意味します。

RocksDBのカラムファミリーは、1つのwrite-ahead logging (WAL) ファイルを共有しますが、MemTableやSSTableファイルは共有しません。各カラムファミリーには、専用のMemTableとSSTableファイルがあります。これにより、アトミックな書き込みを行うことができますが、各カラムファミリーごとに独立した設定と管理を行うことも可能です。カラムファミリーをフラッシュすると、新しいWALログファイルが作成され、すべてのカラムファミリーへの書き込みはこの新しいファイルに書き込まれます。すべてのカラムファミリーがフラッシュされ、そのデータが新しいログファイルに書き込まれるまで、古いWALログファイルは削除されません。これにより、すべてのカラムファミリーが定期的にフラッシュされ、クラッシュやその他の失敗によるデータの損失を防ぐことができます。
