MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

組み込みシステム向けDBであるSQLite入門


Using SQLite: Small. Fast. Reliable. Choose Any Three. (English Edition)

目次

はじめに

世界で最も使われているOSSってなんだろうと考えた時に、

真っ先に思いつくのが、SQLiteでした。(cURLとかもありますが)

 

SQLiteは、組み込みシステム向けの

ファイルベース(一時的なインメモリも可能)のDBですが、

www.sqlite.org

ほとんどすべてのスマホやブラウザ、Macのアプリ、

PythonやPHPに同包されており、

一兆以上のコピーがされ、利用されているそうです。

www.sqlite.org

 

ファイルベースで、sqliteそのものもかなり小さいソフトウェアですが、

一般的なSQLを使って、データ管理をすることができます。

myenigma.hatenablog.com

 

SQLiteの歴史

下記の記事で、SQLiteの作者が、

SQLiteの開発の歴史を説明しています。

corecursive.com

元々作者のRichard Hippさんが、

戦艦の浸水を防ぐためにドアの開閉状態を管理するシステムを

開発してた時に、使っているDBがうまく動かなかったため、

サーバタイプでなく、シンプルなファイルベースのDBを

2000年ぐらいに作ろうと思ったのが始まりらしいです。

 

特徴

下記は、SQLitenのHPで紹介されている、

SQLiteと他のRDBとの比較による特徴です。

 

下記の特徴を見ると分かる通り、

有名なDBである、MySQLやPostgreSQLとの比較するより、

ローカルに作成する設定ファイルやマスターデータファイル、

ログファイルの代わりにSQLiteのDBファイルを使うと、

良いということが公式HPでも説明されています。

 

トランザクションがある

普通のファイルにデータを書き込む場合は、

様々な理由でデータが壊れたりすることがありますが、

SQLiteは他のRDBと同様にトランザクションがあるため、

複数のデータ変更が途中で失敗して、

整合性がなくなることが防止できます。

複数のスレッドやプロセスからの、アクセスも可能です。

 

設定がない

直接ファイルを使ってデータを管理するので、

他のRDBと比べて、設定や管理がなく、

簡単に使うことができます。

 

様々なSQL機能が利用可能

通常のDBアクセス用のSQLだけでなく、

他の有名なRDBで利用可能な、

  • JSON対応

  • Window関数

などの様々なSQLの機能に対応しています。

 

クロスプラットの単一ファイルで管理

様々なOSやエンディアンのシステムでも

共通のファイルを使ってデータを管理するため、

そのファイルをコピーするだけで、

データの移行やバックアップが可能です。

これにより様々なOS上で共通的に使うことができます。

 

またこのファイルの拡張子も任意のものを設定できるため、

アプリケーション専用の設定ファイルとして使うことができます。

 

高速にデータにアクセスできる

大規模なデータ(DB)でも、SQLを使って、

高速に一部のデータを取得可能です。

ローカルのデータファイルからデータを取得する場合と、

SQLiteのファイルからSQLでデータを取得した場合を比較しても、

SQLiteを使った方が高速であることが知られています。

 

大規模なデータを管理できる

SQLiteは最大、281テラバイトのDBサイズまで対応可能です。

 

ソフトウェアが小さい

SQLiteそのものは750KBほどのサイズなので、

組み込んでもアプリのサイズが肥大化しません。

 

ソフトウェアやファイルフォーマットが安定している

SQLiteの開発者は、2025年まで、

APIの後方互換性を保つ様に考えているとのことです。

 

ソースコードがPublic domainで公開されている。

Public domainなので、様々な用途に利用可能です。

 

ソフトウェアとしての品質が高い

SQLiteは航空機ソフトウェアと同等ほどの

厳しい品質管理をベースにテストされています。

 

使い方

SQLiteを使うには様々な方法があります。

 

公式のCLIツールを使う

一番簡単な使い方は、公式のCLIツールを使うことです。

CLIからSQLを使うことで、DBを操作することができます。

www.sqlite.org

 

このCLIを使うと、

こちらのツイートの様に、シェルのワンライナーとして、

SQLで集計することができます

 

Pythonの公式モジュールsqlite3を使う

Pythonはデフォルトでsqliteを組み込んでいるため、

sqliteのDBを操作するための公式ライブラリがあります。

docs.python.org

公式ライブラリですので、

追加のパッケージ不要で、PythonはSQLiteを利用することができます。

 

PandasのDataFrameとSQLiteをやり取りする

Pythonの有名なデータ分析ライブラリであるPandasの

myenigma.hatenablog.com

myenigma.hatenablog.com

最も基本的なデータフォーマットであるDataFrameは、

to_sql関数でDataFrameをSQLiteのDBに保存したり、

pandas.pydata.org

read_sql関数を使って、

SQLiteのDBから、テーブルデータをDataFrameに読み込むこともできます。

pandas.pydata.org

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com


Using SQLite: Small. Fast. Reliable. Choose Any Three. (English Edition)

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com