豪鬼メモ

一瞬千撃

2020-01-01から1年間の記事一覧

DBMの設計と実装 その11 ツリーデータベースの書式

ハッシュデータベースを基盤に構築したB+木のデータベースを、以後、ツリーデータベースと呼ぶ。データベース全体のメタデータとして何を持つべきか、B+木の各ノードはどのようなデータを持つか、またどのようにシリアライズするか、ここで完全に詰めて定義…

DBMの設計と実装 その10 LRUキャッシュ

B+木をファイル上で実現するにあたり、個々のノードのデータをシリアライズしてハッシュテーブルのDBMに格納するということを前回述べた。そして、個々のノードにアクセスする度にハッシュDBMの読み書きをすると遅すぎるので、キャッシュ機構が求められる。…

DBMの設計と実装 その9 B+木の構造

B+木を使ったデータベースの設計をしよう。これを使うと、レコードの順序に基づいた検索ができる。範囲検索とか、前方一致検索ができる。その基本的な構造について考察する。

DBMの設計と実装 その8 ファイルクラス毎の性能

前回設計した4つのファイル具象クラスを実装し、その性能を測ってみた。

DBMの設計と実装 その7 ファイルの抽象化

データベースと呼ばれるシステムは大抵、ファイルにデータを記録する。DBMも例外ではない。でも、ファイルって何だろう。ここでちゃんと考えてみたい。

DBMの設計と実装 その6 ハッシュデータベースの再構築

ハッシュデータベースをオンラインで再構築する方法について検討してみる。オンラインというのはすなわちサービスを提供しながら、ダウンタイムを発生させずに行う処理である。

DBMの設計と実装 その5 ハッシュデータベースの書式

前回はハッシュデータベースの大まかな構造を述べたが、今回はデータフォーマットの形式を完全に詰める。

DBMの設計と実装 その4 ハッシュデータベースの構造

ハッシュテーブルを使ったデータベースの構造について大いに語ってみよう。基本的な構造について述べてから、インプレース更新と追記更新の違いについて明らかにする。

DBMの設計と実装 その3 ハッシュロック

今回の設計の要点の一つは、並列性である。ハッシュテーブルを保護するにあたって利用するスロットロック法について考察してみたい。

DBMの設計と実装 その2 APIの草案

DBMのAPIをほぼ決めて文書にまとめた。その解説をしよう。文書はここに置いてある。

DBMの設計と実装 その1 ハッシュ関数

個々のレコードがハッシュテーブル内のどのバケットに属するかはハッシュ関数で決める。入力値の種類によらずハッシュ値がうまいことばらけて衝突が起こりにくい関数が良い。今回は定番のMurmur hashを採用した。Rubyの文字列型のハッシュ関数もこれだ。

DBMの設計と実装 その0 全体の計画

DBMの設計と実装について20回くらいに分けて書いてみる。まずは全体の計画と意気込みから。

3月の生活

3月の生活を振り返ってみる。三月に入るところでちょうど近所のオカメザクラが満開になっていよいよ春本番だなと感じた。

バッチで文字列探索する際の性能

コロナ騒ぎであまり外に出られないこの情勢では、せっかくだから文化系の活動をしようじゃないかと思うわけだ。以前の記事で、息抜きに文字列探索法の比較をしてみた。今回は、バッチ処理の場合の傾向を見てみる。

2月の生活

いろいろゴタゴタしていて書き損ねていたが、2月の生活を綴ってみる。沈丁花の香りがしてきて、春もすぐそこだ、と思いつつ過ごしていた。

文字列探索法の比較

文字列探索のアルゴリズムで有名なものとして、ナイーブな力任せ法とKMP法とBM法とRK法の4つがある。実際問題として多くのケースでは力任せ法が十分に早いし作業空間も最小なので、C++標準ライブラリのstring::findは力任せ法で実装されている。KMP法は理論…

1月の生活

新型コロナウイルスが世間を賑わせるなか、当家ではインフルエンザが猛威をふるい、下の子と上の子が立て続けに罹患してしまった。同時にかかればまだマシなのだが、ずれてかかるものだから、隔離の都合で生活しづらくて仕方なかった。

ハワイの思い出

年末年始はハワイで過ごしてきた。ハワイ旅行なんてのは、欽ちゃんの仮装大賞で優勝したくらいでないと行けない夢のような話と子供の頃は思っていた。しかし、大人になると意外に行けるもので、今回で3回目だ。出張で貯めたマイルのおかげなんだけど。