rtdb @ ウィキ

トップページ

@オンメモリデータベース開発日記


2010/08/08
ソート処理を関数でなくILで直接出力するようにした。
1貝のトランザクションでDELETE,INSERT,UPDATEとしたときのDELETE行末尾の処理を間違えていてそれを修正。

2010/06/28
Listや配列のコレクションを使えるようにした。JoinやSelectManyの内側表に使えるようになった。

2010/06/16
作業表を作りそれを参照させるUnion,Except,Intersect,GroupByをJoin,SelectManyの内側に指定した場合のメモリ解放エラー修正。

2010/06/14
独自のStreamクラスは廃止。
完全に方針が決まってから再設計したほうがより効率的な実装になると判断したから。

2010/06/13
Distinctを実装した。
複雑な処理はC#メソッドとして定義しておりDynamicMethodのOpCodes.Callでそれを読んでいた。
構築コストを省けるが呼び出しコストの大きさ、最適化にしにくさでほとんどDynamicMethod化した。
代表的なところはソート処理など。

2010/06/10
StringをGCHandleのpublicメソッド、プロパティを使わずinternalメソッドのInternalGet,InternalSet,InternalAlloc,InternalFreeを使うことで高速化した。
カタログテーブルを廃止。カタログオブジェクトをコレクションクラスで管理し、ストレージとの入出力はシリアライズで実装した。

2010/04/02
LINQプロバイダを標準的な方法で実装していなかったのでそれに準じた。
内部の一貫性の無い実装をかなりそろえた。

2010/02/21
通信バッファからのデータコピー、ファイルアクセス時のバッファ管理等、
理想はゼロコピー通信であるがその後のデータの加工等を考えて敢然にはゼロコピーできないところがある。
妥協案として1コピー通信を心がけた。
クライアントとのデータのやり取りのサイズの上限を決める制約と引き換えに連続バッファを使うようにした。
これにより処理の単純化、高速化される。

2010/01/01
TPC-Bを実装
300tpmbぐらい。
TPC-Cは100tpmc
これでは既存のDBには勝てない。
プロファイラが欲しい。VS2010の上位エディションの購入を検討中。

2009/12/30
リレーションで自己参照された表の連鎖削除の不具合修正。

2009/12/28
終了時に強制終了とキャンセルを選択させるメッセージボックスを表示。
強制終了時の問題は別スレッドで接続しているSocketの受信が強制終了できないこと。
タイムアウトもないのでプロセスごと終了させることになる。
上手い方法を模索中。

2009/12/26
DDLをDOMで実装した。
DDLを実行した後にDMLを実行するにはインターフェースDLLを再読み込みしてコンパイルする必要がある。
DDLとDMLを同時に利用する上手い方法を模索中。

2009/12/10
SQL Serverからインポートしてテストするためにデータ型にGuid構造体を使えるようにした。

2009/12/10
作業領域に結果が格納されるGroup,Order,Except,Union,Intersectをハッシュ結合の対象に出来るようにした。

2009/12/07
リレーションが設定してあるハッシュ結合に文字列が含まれていた場合の処理をString.GetHashCode()ではなくStringを管理しているGCHandle.GetHashCode()を使うことで高速化した。
リレーションによる親子関係に設定された列がStringの場合は管理するGCHandle値が同じであることを利用した。

2009/11/16
ハッシュ結合できた。
内側表が一意索引を持っている場合索引でなく一意ハッシュ結合する。
内側表が重複索引を持っている場合索引でなく重複ハッシュ結合する。
まだ少ない行数の表を内側に持っていく処理はしていない。

2009/10/25
NetworkStream,MemoryStream,FileStreamのunsafe版作成中。
最も大きな理由はWrite(byte[])はあってもWrite(byte*,Int32)がないので必要と考えた。
特にBinaryReader,BinaryWriterをこれらに特化させることで性能がUPする目処が立った。

2009/10/06
join句でINDEXを利用できるようになった。

2009/10/05
where句でINDEXを利用できるようになった。
op_Equality(==)の右辺、左辺のいずれかにINDEXを構成するFIELDがあった場合使用される。
等式の変形は行われない。

2009/10/04
暫定でのTPC-Cベンチマークプログラム作成完了。

2009/10/03
トランザクションログからロールフォワードに成功

オンメモリデータベースとはメモリ上にデータがあることを前提とした小容量、高速なデータベースマネージメントシステムのことである。
ここはその開発のメモである
今日のアクセス数 1
いままでのアクセス数 4633
昨日のアクセス数 3
今日のアクセス数 1
メンバ数 1