永続性

計算機科学における永続性



計算機科学における永続性(Persistence)とは、プログラムが生成したデータが、そのプログラムの実行終了後も存続する性質を指します。この特性がない場合、データは一時的にメモリ上にのみ存在し、コンピュータの電源が切断されると失われます。永続性は、データの長期的な保存と利用を可能にするために不可欠な概念です。

プログラミングにおける永続性



プログラミングにおいて永続性は、プログラムの実行間でデータ構造を保持することを意味します。例えば、画像編集ソフトでの複雑な選択範囲の保持や、ワープロソフトでのアンドゥ履歴の保存などが挙げられます。これらのデータは、不揮発性の記憶装置、例えばファイルシステム、関係データベース、オブジェクトデータベースなどに格納されることで永続化されます。

関連するデザインパターンとしては、container based persistence、component based persistence、Data Access Object モデルなどがあります。初期の永続性の概念では、データはプログラムの命令によってディスクから読み書きされるものであったため、永続性はデータの本質的な特性と見なされていました。しかし、メモリ容量の増大やオブジェクト指向プログラミングの登場により、この見方は変化しました。現在では、Javaのオブジェクトをディスクに保存するシリアライズや、Jakarta EEによる関係データベースへのEnterprise JavaBeansの格納などが永続性の例として挙げられます。

オペレーティングシステムプログラミング言語における組み込み



直交永続性(Orthogonal persistence)とは、一部のプログラミング言語オペレーティングシステム(OS)が持つ固有の特性です。直交永続性を持つ言語で書かれたプログラムやOSは、システムが予期せずシャットダウンやクラッシュした場合でも、データを保持し、中断した時点から処理を再開できます。

直交永続性を持つオペレーティングシステムには、KeyKOS、EROS(KeyKOSの後継)、Coyotos(EROSの改良版)、CapROS(EROSの改良版)、Multicsなどがあります。また、直交永続性を持つプログラミング言語には、PS-Algol、Smalltalk、LISP(システムイメージを使用)などがあります。

データベースの文脈における永続性も重要ですが、英語では「Durability」と呼ばれます(ACID特性参照)。

ユーザインタフェースにおける永続性



ソフトウェアをデータ処理の観点から捉えた場合、データ処理の完全性を実現するために必要な機能として「永続性」が挙げられます。この場合の永続性は、ソフトウェアが格納するデータに対する以下の操作を指します。

新たなデータエントリの追加(生成)
既存のデータエントリの参照
既存のデータエントリの編集(更新)
既存のデータエントリの削除

データを単にディスクに格納するだけでは永続性があるとは言えず、格納したデータを後で再利用できることが重要です。また、大量のデータを扱う場合には、以下の機能も永続性の要件となります。

エントリの検索
エントリのソート
エントリのフィルタリング

記憶装置と永続性



永続性記憶装置(persistent storage)とは、電源が切断されてもデータを保持できる機器のことです。これらの機器は一般に不揮発性メモリと呼ばれます。例として、ハードディスクドライブフロッピーディスクコンパクトディスクなどが挙げられます。一方、RAMのように電源が供給されていないとデータを保持できない機器は「揮発性メモリ」と呼ばれ、永続性はありません。

初期の携帯情報端末(PDA)では、全てのデータがRAMに格納されていたため、バッテリー切れでデータが失われる可能性がありました。しかし、最近のPDAは永続性記憶装置を備えており、ユーザーデータの損失を防いでいます。

関連項目



CRUD
Hibernate
Java Persistence API (JPA)
直交性
永続データ構造
Service Data Objects

外部リンク



KeyKOS
EROS
Coyotos
* CapROS

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。