BT

SQLiteが.NETに移植された

| 作者: Abel Avram フォローする 7 人のフォロワー , 翻訳者 竹中 翔 - (株)ポータルアイランド フォローする 0 人のフォロワー 投稿日 2009年8月9日. 推定読書時間: 2 分 |

原文(投稿日:2009/8/6)へのリンク

Noah Hart氏がSQLite3をC#に移植した。最初のバージョンはオリジナルと比べると低速ではあるものの、これによりP/Invokeやアンセーフコードなしで.NETのマネージ環境からSQLiteを使うための道が開かれたことになる。

C#-SQLiteプロジェクトはGoogle Codeでホストされていて、SQLite 3.6.16を完全にC#へ移植したと述べられている。コードはCreative Commons 3.0ライセンスで公開されている。C#-SQLiteは30,000以上のテストをパスし、失敗したのはわずかに9個だけだ。コンパイル済みのバイナリexeファイルのサイズは528KBで、オリジナルの506KBとほぼ同じサイズである。パフォーマンスについてはCで実装されているオリジナルには及ばない。しかし、Hart氏の言によれば、まだコードの最適化をしていないし、現時点でもパフォーマンスは許容範囲内だと考えている、とのことだ。下の表は1秒当たりの処理行数を表している。

テスト C#-SQLite SQLite
Insert 300K 1300K
Select 1500K 8450K
Update 60K 300K
Delete 250K 700K

Cory Nelson氏はSQLiteの移植が他のアプローチよりも適している理由について説明している。その説明によれば、P/Invokeはとても遅くて移植に向かないので避けた方がよいのだという。また、もう1つの理由として、Cを使うとコードがごちゃごちゃしてしまい最適化の妨げになる可能性があることを挙げている。

Adobe AIRなどの多くのプロダクトはSQLiteを備えている。C#-SQLiteのベストな利用形態は、Tim Anderson氏が指摘するようにSilverlightで使うことだろう。

分離ストレージに書き込み可能なMicrosoft Silverlight用のローカルデータベースマネージャを望んでいます。

… Silverlightではプラットフォーム呼び出しやアンセーフコードを使えません。P/Invokeは少ないように見受けられますが、オリジナルのSQLiteがポインタを頻繁に使っている個所では、かなりの量のアンセーフコードを使っているのではないかと私は推測しています。

Silverlightは.NET Frameworkとして実装されていますが、System.Data名前空間を備えていません。System.Linqは備えています。

C#-SQLiteはSQLiteの公式版ではなく、Hart氏はSQLite.orgに所属していない。SQLiteの作者でありその商標の商標権者であるRichard Hipp氏はこの移植版の名前に"SQLite"を含めることを認めなかった。しかし、後になってC#-SQLiteという名前を認めたようだ。

マネージドデータベースは他にもいくつか存在しており、例えばPerstdb4oSilverlight DatabaseSystem.Data.SQLiteなどがある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT