豪鬼メモ

一瞬千撃

2021-05-01から1ヶ月間の記事一覧

マルチレコードトランザクション機能

Tkrzwでマルチレコードトランザクションを実装してみたという話。シングルレコードトランザクション、つまり同一のレコードに複数の操作をアトミックに行う機能は従来から実装されていた。それを複数のレコードでもできるようにしたのがマルチレコードトラン…

はじめてのDBM

データベースライブラリTkrzwの改良を地道に続けて、そろそろ1.0にしようかなと思っているところだ。日本語の資料がないとなかなか日本では使ってもらえないということで、書いてみた。データベース関連のアルゴリズムの基礎や検索エンジンなどの事例につい…

I/Oのバッチ化によるDBの性能改善

前回までの一連の実験で、ダイレクトI/Oを使ってデータベースを運用する際の性能特性が見えてきた。そこで洗い出された課題を解決し、おそらくは最善の効率に到達した。性能評価の結果としては、ダイレクトI/Oを使ったデータベースの性能を、書き込みが9.3倍…

各種データベース実装と各種ファイル実装の性能比較

dependency injectionで任意のファイル実装を利用できるTkrzwだが、ダイレクトI/Oのファイル実装を各種のデータベースに組み込んだのが前回までの物語である。Tkrzw 0.9.18をリリースしたので、お試しいただきたい。今回は、完成した実装の性能を測定する。…

ダイレクトI/O用のキャッシュ実装

ハードウェアと直接お話するダイレクトI/Oが遅いのは仕方ないことだが、アプリケーション層で小さなキャッシュ機構を使うと大分マシになるという話。

DBMのダイレクトI/O対応

ファイルシステムのキャッシュ機構を介さずにストレージデバイスに対して直接入出力を行う機能をダイレクトI/Oなどと言ったりするが、それをデータベースライブラリTkrzwからも使えるようにした。LinuxとWindowsで使える。その前提として、アドレスとサイズ…

alloc_alignedの野良実装

デバイス等とやり取りするためや、他の様々な理由で、ある数の倍数にアラインメントされたメモリ領域を動的に確保する必要が生じることがある。mallocフレームワーク上でそれを行うのが標準C++のalloc_alignedという関数なのだが、それはすべての処理系でサ…

TkrzwのWindows対応 その弍

データベースライブラリTkrzwのWindows対応の実装が一通り完了した。前回、C++標準のstd::fstreamによるダミーのファイル入出力を使ってWindows対応した話をしたが、今回はそれを本番の真面目な実装に置き換える。メモリマップIOと位置指定IOの実装と性能評…

TkrzwのWindows対応 その壱

やるやる言ってやってなかったデータベースライブラリTkrzwのWindows対応を始めた。実装は何段階かに分けて行うが、とりあえず全機能が動くというところまでは来た。ここで作業の方針と進捗についてメモっておこう。