やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

SQLite3学習 SQLiteの特徴

 どんなときに使うと効果的か?

対象環境

情報源

特徴

抜き出し

ゼロ構成

 インストール、設定不要。

 というけど、ビルドツールをインストールせねばSQLite3バイナリを作れないのでは? かつて私がやったログは以下。

サーバーレス

 サーバプロセスによる手間が不要なのはステキ。でも、自前で排他制御せねばならないのは面倒。

安定したクロスプラットフォームデータベースファイル

 すべてのマシンで同じファイルフォーマットを使用できる。ビッグエンディアン・リトルエンディアン、32・64ビットだろうが関係ない。

コンパクト

 ライブラリのサイズは500KBとある。

 でも、前に私がSQLite3 3.22.0のバイナリをビルドしたときは4MBになったよ? いくつかオプションつけたけど。ライブラリより実行バイナリを使うだろうから、そのサイズを書いて欲しい。

マニフェストタイピング

 数値だろうがテキストとして保存しちゃう。日付型なんてない。テキストで保存。それを「マニフェスト型」と呼ぶようだ。

TclやPythonなどの動的に型付けされたプログラミング言語と組み合わせて使用​​する場合に、SQLiteの信頼性と使いやすさを実際に証明する意図的な設計上の決定です。

 ということで、静的型付プログラミング言語のことは考慮されていない。自前でマッピングせねばならない。別途ORマッパーを使って簡略化するのが一般的。

可変長レコード

 ほとんどのDBは文字列をVARCHAR(100)のように固定長で宣言する。たとえその長さがなくとも100バイトのディスクスペースを割り当てる。これに対してSQLiteは実際に必要なスペースだけ割り当てる。

 ファイルサイズが小さくなるのはわかる。でも、実行速度が高速になるって本当か? 固定長のほうが速いのでは? 全レコードにおいて開始と終了の位置が一度で計算できるからレコードごとのポインタ計算が不要になる。逆に可変長はそれが必要だから、その分遅くなると思うのだが。いや、実装を知らんので分からんが。

読みやすいソースコード

 でもC言語だしGitHubにない。いつか読みたい使いたい。

パブリックドメイン

 パブリックドメイン著作権の放棄なので、法的リスクがない。

 すばらしい。

SQL言語の拡張

SQLiteは、他のデータベースエンジンでは通常は見られないSQL言語への多くの機能強化を提供します。

 いつかやってみたい。でもC言語

 ファイルシステムとかネットワーク上のAPIやコンテンツをSQLで操作できたらいいのに。

前回まで