InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

SQLiteが.NETに移植された

作者 Abel Avram , 翻訳者 竹中 翔 - (株)ポータルアイランド 投稿日 2009年8月9日

セクション
運用/インフラ,
デベロップメント,
設計/アーキテクチャ
トピック
データアクセス ,
.NET
タグ
SQLite

原文(投稿日: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などがある。

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。