データの永続性
データの永続性
データの永続性(Persistence)は、データを生成したプログラムが終了してもそのデータが存続する特性のことです。この特性がなければ、データはメモリにだけ存在することになり、コンピュータが停止した時など、電源が切られた時点でメモリのデータが消失することになります。ほとんどのソフトウェア・アプリケーションで重要な役割を果たしています。
データの保存
データの永続性を確保するもっとも単純な方法はディスクにデータを書き出すことです。計算結果をファイルに書き出すことも広い意味での永続性を確保したことになります。
データをファイルに書き出すということは、後でそれを読み込んでそのデータを取り出すことがあるということです。
1つのデータだけであれば単純でしょうが、データの内容が複雑になり、データ量も増えてくると、データの読み書きという処理だけでも面倒なものになってしまいます。
そのため、アプリケーション開発では、次の事項について予め検討しておく必要が’あります。
ファイルフォーマット:バイナリ、テキスト
データ・フォーマット:JSON, YAML, INIなど
保存する対象:数値、文字列、Pythonオブジェクト
永続性の期間:メモリ不足に対応するための一時的(Out-Of-Core)、キャッシュ利用、長期保存
アクセス対象:単一プロセス、多数プロセス、ネットワーク経由
スケーラビリティー;データの肥大化、高頻度アクセスへの対応
運用方法:バックアップ、ロールバック、レプリケーション
アプリケーションでデータベースシステムが利用される理由のひとつが、上記の事項の多くをデータベースシステム側が担保してくれるため、アプリケーション開発者は目的のコードの開発に集中できることがあります。
しかし、小規模プロジェクトではデータベースシステムのインストールと設定、運用保守を自分たちで行う必要がでてくる場合があります。AWS、Azure などのクラウドサービスを利用すると、データベースをサービスとして利用することができます。
データの永続性でよく使用される標準モジュール
データの永続性でよく使用される標準モジュールのうち、代表的なものには次が挙げられます。
pickle:任意のPythonオブジェクトを一連のバイトに変換 shelve:任意のPythonオブジェクトに文字列をキーにした辞書に変換 sqlite3:単純でシンプルなデータベースシステムSQLite3 へのSQLライブラリ pickle、shelve、jsonは、特定のシリアル/ディシリアルのためのものなので、実際のファイル読み書きの処理は開発者が行う必要があります。sqlite3はデータベースシステムへ接続してデータを処理するものですが、データは行として保存されていて取り出した中間のオブジェクトとの変換処理を行う必要があります。
こうした面倒な手続きも内包して、簡単にデータの永続性を確保できる拡張ライブラリには次のものがあります。
次のからは、これらに拡張モジュールについて説明することにします。
参考資料