Skip to content

Latest commit

 

History

History
187 lines (128 loc) · 7.59 KB

File metadata and controls

187 lines (128 loc) · 7.59 KB

第1章: SQLite入門

1.1 SQLiteとは何か

SQLite(エスキューライト)は、パブリックドメインの軽量なリレーショナルデータベース管理システム(RDBMS)です。2000年にD. Richard Hippによって開発され、現在では世界で最も広く使われているデータベースエンジンとなっています。

SQLiteの特徴

  1. サーバーレス: 別途データベースサーバーを起動する必要がありません
  2. ゼロ設定: インストール後、すぐに使用開始できます
  3. 自己完結型: 単一のファイルでデータベース全体を管理します
  4. クロスプラットフォーム: Windows、macOS、Linux、iOS、Androidなど、ほぼすべてのプラットフォームで動作します
  5. 軽量: ライブラリサイズは約600KB程度と非常にコンパクトです

どこで使われているか

SQLiteは私たちの身の回りで想像以上に広く使われています:

  • スマートフォン: iOSとAndroidの両方で、アプリケーションデータの保存に使用
  • Webブラウザ: Firefox、Chrome、Safariなどがブックマークや履歴の保存に使用
  • デスクトップアプリケーション: Skype、Dropbox、Adobe製品など多数のアプリケーションで採用
  • 組み込みシステム: IoTデバイス、車載システム、航空機システムなど

1.2 SQLiteの歴史と背景

SQLiteは2000年5月に最初のバージョンがリリースされました。開発者のD. Richard Hippは、当時勤めていたGeneral Dynamics社で、戦艦のソフトウェアにデータベースが必要になったことがきっかけで開発を始めました。

設計思想

SQLiteの設計には以下の原則があります:

  1. シンプルさ: 複雑な機能よりも、基本的な機能を確実に動作させることを重視
  2. 信頼性: データの整合性と耐久性を最優先
  3. 効率性: 限られたリソースでも高速に動作
  4. 互換性: SQL標準への準拠と長期的な後方互換性の維持

1.3 SQLiteのメリット

1. セットアップが不要

従来のデータベースシステムでは、インストール、設定、サーバーの起動など、多くの準備作業が必要でした。SQLiteは、ライブラリをリンクするだけですぐに使用できます。

# 例:Pythonでの使用
import sqlite3
conn = sqlite3.connect('mydatabase.db')  # これだけで使用開始!

2. 単一ファイルでの管理

データベース全体が1つのファイルに格納されるため:

  • バックアップが簡単(ファイルをコピーするだけ)
  • 移植性が高い(ファイルを移動するだけ)
  • バージョン管理システムでの管理が可能

3. 高速な動作

サーバープロセスとの通信オーバーヘッドがないため、特に以下の場合に高速です:

  • 小〜中規模のデータセット
  • 読み取りが多いワークロード
  • 単一ユーザー/単一プロセスでの使用

4. ゼロ管理

  • ユーザー管理が不要
  • メモリ管理は自動
  • ディスク容量の事前割り当て不要

5. 標準SQL対応

SQLiteは、以下のSQL機能をサポートしています:

  • CREATE, DROP, ALTER TABLE
  • INSERT, UPDATE, DELETE, SELECT
  • JOIN(INNER, LEFT, RIGHT, FULL OUTER)
  • トランザクション(BEGIN, COMMIT, ROLLBACK)
  • トリガー、ビュー、インデックス

1.4 SQLiteのデメリットと制限

SQLiteは万能ではありません。以下の場合は他のデータベースシステムを検討すべきです:

1. 同時書き込みの制限

SQLiteは同時に1つの書き込みトランザクションしか処理できません。多数のユーザーが同時に書き込む必要がある場合は適していません。

2. ネットワークアクセスの非推奨

SQLiteデータベースファイルをネットワークファイルシステム(NFS、SMBなど)に置くことは推奨されません。ファイルロックの問題が発生する可能性があります。

3. 大規模データの制限

理論上の最大データベースサイズは281TBですが、実用的には数GB程度が快適に扱える範囲です。

4. 一部のSQL機能の欠如

  • 右外部結合(RIGHT OUTER JOIN)は左外部結合で代替
  • 完全外部結合(FULL OUTER JOIN)は非対応
  • ストアドプロシージャは非対応

1.5 他のデータベースとの比較

MySQLとの比較

特徴 SQLite MySQL
アーキテクチャ 組み込み型 クライアント/サーバー型
セットアップ 不要 必要(サーバーインストール)
同時接続 制限あり 多数対応
適用規模 小〜中規模 中〜大規模
管理コスト ほぼゼロ 要管理者

PostgreSQLとの比較

特徴 SQLite PostgreSQL
SQL準拠度 部分的 高度に準拠
データ型 動的型付け 厳密な型付け
拡張性 限定的 高い拡張性
ACID準拠 完全準拠 完全準拠

1.6 SQLiteが適している用途

最適な用途

  1. モバイルアプリケーション

    • オフラインデータストレージ
    • ユーザー設定の保存
    • キャッシュストレージ
  2. デスクトップアプリケーション

    • アプリケーション設定
    • ローカルデータの管理
    • ドキュメントフォーマット
  3. 組み込みシステム

    • IoTデバイスのデータ記録
    • センサーデータの保存
    • 設定情報の管理
  4. 開発・テスト環境

    • プロトタイピング
    • 単体テスト
    • 開発時の一時的なデータストア
  5. データ分析

    • CSVファイルの代替
    • 一時的なデータ処理
    • レポート生成

不適切な用途

  1. 高トラフィックなWebサイト

    • 同時書き込みが多い
    • 多数のユーザーアクセス
  2. 大規模なエンタープライズシステム

    • 複雑な権限管理が必要
    • 分散トランザクションが必要
  3. リアルタイムシステム

    • ミリ秒単位の応答が必要
    • 高頻度の同時更新

1.7 まとめ

SQLiteは、シンプルさと信頼性を重視した、非常に実用的なデータベースエンジンです。適切な用途で使用すれば、複雑な設定や管理なしに、強力なデータ管理機能を提供します。

次の章では、実際にSQLiteをインストールし、最初のデータベースを作成する方法を学びます。

この章で学んだこと

  • SQLiteは組み込み型の軽量データベースエンジン
  • サーバーレスで、単一ファイルでデータベースを管理
  • モバイルアプリ、デスクトップアプリ、組み込みシステムに最適
  • 大規模な同時アクセスが必要な場合は他のDBMSを検討
  • セットアップが簡単で、すぐに使い始められる

確認問題

  1. SQLiteが「サーバーレス」と呼ばれる理由を説明してください。
  2. SQLiteのデータベースファイルの特徴を3つ挙げてください。
  3. SQLiteが適している用途を3つ、適していない用途を3つ挙げてください。
  4. MySQLやPostgreSQLと比較して、SQLiteの利点と欠点を説明してください。

← 目次へ戻る | → 第2章: 環境構築へ進む