2020-01-01から1年間の記事一覧
ハッシュデータベースを基盤に構築したB+木のデータベースを、以後、ツリーデータベースと呼ぶ。データベース全体のメタデータとして何を持つべきか、B+木の各ノードはどのようなデータを持つか、またどのようにシリアライズするか、ここで完全に詰めて定義…
B+木をファイル上で実現するにあたり、個々のノードのデータをシリアライズしてハッシュテーブルのDBMに格納するということを前回述べた。そして、個々のノードにアクセスする度にハッシュDBMの読み書きをすると遅すぎるので、キャッシュ機構が求められる。…
B+木を使ったデータベースの設計をしよう。これを使うと、レコードの順序に基づいた検索ができる。範囲検索とか、前方一致検索ができる。その基本的な構造について考察する。
前回設計した4つのファイル具象クラスを実装し、その性能を測ってみた。
データベースと呼ばれるシステムは大抵、ファイルにデータを記録する。DBMも例外ではない。でも、ファイルって何だろう。ここでちゃんと考えてみたい。
ハッシュデータベースをオンラインで再構築する方法について検討してみる。オンラインというのはすなわちサービスを提供しながら、ダウンタイムを発生させずに行う処理である。
前回はハッシュデータベースの大まかな構造を述べたが、今回はデータフォーマットの形式を完全に詰める。
ハッシュテーブルを使ったデータベースの構造について大いに語ってみよう。基本的な構造について述べてから、インプレース更新と追記更新の違いについて明らかにする。
今回の設計の要点の一つは、並列性である。ハッシュテーブルを保護するにあたって利用するスロットロック法について考察してみたい。
DBMのAPIをほぼ決めて文書にまとめた。その解説をしよう。文書はここに置いてある。
個々のレコードがハッシュテーブル内のどのバケットに属するかはハッシュ関数で決める。入力値の種類によらずハッシュ値がうまいことばらけて衝突が起こりにくい関数が良い。今回は定番のMurmur hashを採用した。Rubyの文字列型のハッシュ関数もこれだ。
DBMの設計と実装について20回くらいに分けて書いてみる。まずは全体の計画と意気込みから。
3月の生活を振り返ってみる。三月に入るところでちょうど近所のオカメザクラが満開になっていよいよ春本番だなと感じた。
コロナ騒ぎであまり外に出られないこの情勢では、せっかくだから文化系の活動をしようじゃないかと思うわけだ。以前の記事で、息抜きに文字列探索法の比較をしてみた。今回は、バッチ処理の場合の傾向を見てみる。
いろいろゴタゴタしていて書き損ねていたが、2月の生活を綴ってみる。沈丁花の香りがしてきて、春もすぐそこだ、と思いつつ過ごしていた。
文字列探索のアルゴリズムで有名なものとして、ナイーブな力任せ法とKMP法とBM法とRK法の4つがある。実際問題として多くのケースでは力任せ法が十分に早いし作業空間も最小なので、C++標準ライブラリのstring::findは力任せ法で実装されている。KMP法は理論…
新型コロナウイルスが世間を賑わせるなか、当家ではインフルエンザが猛威をふるい、下の子と上の子が立て続けに罹患してしまった。同時にかかればまだマシなのだが、ずれてかかるものだから、隔離の都合で生活しづらくて仕方なかった。
年末年始はハワイで過ごしてきた。ハワイ旅行なんてのは、欽ちゃんの仮装大賞で優勝したくらいでないと行けない夢のような話と子供の頃は思っていた。しかし、大人になると意外に行けるもので、今回で3回目だ。出張で貯めたマイルのおかげなんだけど。