クラスは頻繁に使われているので、俗に「クラスのあるC」なんて言われている模様。知らなくてもなんとなーく読めるという印象。いう構成になっています。実装に入る前に、まずはざっくり概要を把握しておきます。オプティマイズやクライアントとの通信を担うサーバの本体機能と、実際のデータアクセスを提供する機能が分離されています。後者がストレージエンジンなわけですが、これがプラガブルになっていることで、アプリケーションのユースケースに合わせてデータアクセスを最適化できるようになっています。以下の図のデータ部がディスクであってもメモリであっても、はたまたネットワーク越しのデータアクセスであっても、その違いはストレージエンジンレイヤで吸収されることになります。クラスのオブジェクトです。クラスを継承したクラスのオブジェクトです。実装したクラスがストレージエンジン層そのものということになります。サーバはデータ操作時、ハンドラに対して関数(API)を呼び出すだけなので、実際にどこにデータが入っているのか、どのようにデータにアクセスするのかを意識する必要がありません。(この記事では、下の図での中間層を「ハンドラ」と総称します。焦点を当てる場合には「handler」と書きます。いったクラスが各ストレージエンジンの実態です。具体例としては例えば、テーブルを作成/開閉するための関数や、行を読み書きするための関数などがあります。今回作るのは超単純にファイルへの読み書きをするだけのストレージエンジンなので、必要最小限の実装をしていきます。それから、ハンドラとテーブルの関係を簡単に書いておくと、基本的にハンドラはスレッドがテーブルを開く度に生成されます。ハンドラとテーブルは多対1の関係になります。複数のクライアントが同時にテーブルにアクセスするようなケースでは、ハンドラはその数だけ用意されるということです。インスタンスは常に1つです。ストレージエンジン単位の操作を担います(コミットやロールバックなど)。