맨위로가기

지속성

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

지속성은 프로그래밍에서 프로그램 실행 사이에서 데이터 구조를 유지하는 것을 의미하며, 파일 시스템, 데이터베이스 등 비휘발성 저장 장치에 데이터를 저장하여 구현된다. 직교 영속성은 프로그램이 상태를 저장하기 위해 특별한 작업을 수행할 필요가 없는 환경을 의미하며, 시스템 이미지, 저널, 더티 쓰기 등의 기법이 사용된다. 영속성 계층은 프로그램의 상태 유지를 쉽게 해주는 소프트웨어 계층을, 영속성 기억 장치는 전원이 꺼져도 데이터를 보존하는 기기를, 지속성 운영 체제는 충돌 후에도 지속성을 유지하는 운영 체제를 의미한다.

더 읽어볼만한 페이지

  • 지속성 - 직렬화
    직렬화는 데이터 전송, 저장 등을 위해 데이터 구조를 바이트로 변환하는 과정이며, 아키텍처 독립성을 유지하고 다양한 형식으로 지원되지만 캡슐화 위반 등의 단점도 존재한다.
  • 지속성 - 마샬링 (컴퓨터 과학)
    마샬링은 컴퓨터 과학에서 프로세스나 스레드 간 데이터 전송을 위해 객체의 상태를 바이트 스트림 형태로 변환하는 과정이며, 원격 프로시저 호출 구현에 필수적이고 직렬화의 한 단계로 간주될 수 있지만, 프로그래밍 언어에 따라 직렬화와 상호 교환적으로 사용되거나 정의와 사용법에 차이가 있다.
  • 계산 모형 - 양자 컴퓨터
    양자 컴퓨터는 양자역학적 현상을 이용하여 정보를 처리하는 컴퓨터로, 큐비트를 통해 0과 1을 동시에 표현하여 특정 연산에서 기존 컴퓨터보다 빠른 속도를 보이며 암호 해독, 신약 개발 등 다양한 분야에 혁신을 가져올 것으로 기대된다.
  • 계산 모형 - 양자 회로
    양자 회로는 양자 컴퓨팅에서 양자 논리 게이트들을 연결한 회로로, 큐비트의 양자역학적 특성을 활용하여 계산을 수행하며 양자 계산의 핵심 요소로서 연구가 활발히 진행되고 있다.
  • 컴퓨터 용어 - 중앙 처리 장치
    중앙 처리 장치(CPU)는 컴퓨터 시스템의 핵심 부품으로, 프로그램 명령어를 해석하고 실행하여 데이터를 처리하는 장치이다.
  • 컴퓨터 용어 - 운영체제 서비스 관리
지속성

2. 프로그래밍

프로그래밍에서 영속성은 데이터 구조를 프로그램 실행과 실행 사이에서 유지하는 것을 의미한다. 이는 데이터를 파일 시스템, 관계형 데이터베이스, 객체 데이터베이스 같은 비휘발성 저장 장치에 저장함으로써 이루어진다.[1] 이와 관련된 디자인 패턴으로는 컨테이너 기반 지속성, 컴포넌트 기반 지속성, 데이터 액세스 객체 모델 등이 있다. 지속성이라는 용어가 처음 등장했을 때는 프로그래밍 언어 명령에 의해 데이터를 디스크에서 읽고 썼기 때문에, 지속성은 데이터의 본질적인 특성으로 여겨졌다. 그러나 이후 메모리 용량 증대와 동적으로 데이터 구조를 생성하는 객체 지향 프로그래밍의 등장으로 이러한 관점은 변화했다.

2. 1. 프로그래밍 기법

프로그래밍에서 지속성이란 데이터 구조를 프로그램 실행과 실행 사이에서 유지하는 것을 의미한다. 예를 들어, 이미지 편집에서의 복잡한 선택 유지나 워드 프로세서에서의 UNDO 히스토리 유지 등이 있다.

이는 데이터를 비휘발성 저장 장치, 즉 파일 시스템이나 관계형 데이터베이스 또는 객체 데이터베이스에 저장함으로써 이루어진다. 이와 관련된 디자인 패턴으로는 컨테이너 기반 지속성, 컴포넌트 기반 지속성, 데이터 액세스 객체 모델 등이 있다. 처음 지속성이라는 용어가 등장했을 때, 데이터는 프로그래밍 언어의 명령에 의해 디스크에서 읽고 쓰여졌기 때문에, 지속성은 데이터의 본질적인 특성으로 여겨졌다. 그러나 이후 메모리 용량의 증대와 동적으로 데이터 구조를 생성하는 객체 지향 프로그래밍의 등장으로 인해, 이러한 관점은 변화해갔다. 지속성의 예로는, 자바의 객체를 디스크에 저장하기 위한 직렬화, 자카르타 EE에 의한 관계형 데이터베이스에 엔터프라이즈 자바빈즈를 저장하는 것이 있다.

2. 2. 직교 영속성

'''직교 영속성''' (Orthogonal persistence|오쏘고널 퍼시스턴스영어)은 일부 프로그래밍 언어나 운영 체제 (OS)가 가진 고유한 특징이다. 직교 영속성을 가진 언어로 작성된 프로그램이나 직교 영속성을 가진 OS는 플랫폼이 갑작스럽게 종료되거나 충돌하더라도 영속성을 유지할 수 있다. 즉, 시스템을 다시 시작하면 중단된 시점부터 처리가 계속된다.

직교 영속성의 장점은 더 간단하고 오류가 적은 프로그램을 만들 수 있다는 것이다.[1]

직교 영속성을 가진 운영 체제는 다음과 같다:

운영체제
{{lang
{{lang (KeyKOS의 후속)
{{lang (EROS의 개선)
{{lang (EROS의 개선)
Multics와 그 단일 레벨 기억 장치



직교 영속성을 가진 프로그래밍 언어는 다음과 같다:

프로그래밍 언어
PS-Algol
스몰토크와 LISP (시스템 이미지 사용)



데이터베이스에서의 유사한 특성도 "영속성"이라고 부르지만, 영어로는 ''Durability''이다 (ACID 참조).

3. 영속성 기법

프로그래밍에서 지속성이란 프로그램 실행 간에 데이터 구조를 유지하는 것을 의미한다. 예를 들어 이미지 편집 시 복잡한 선택을 유지하거나 워드 프로세서에서 UNDO 히스토리를 유지하는 것이 있다.

이는 데이터를 파일 시스템이나 관계형 데이터베이스, 객체 데이터베이스 같은 비휘발성 저장 장치에 저장함으로써 이루어진다. 관련된 디자인 패턴으로는 컨테이너 기반 지속성, 컴포넌트 기반 지속성, 데이터 액세스 객체 모델 등이 있다. 처음 지속성 개념이 등장했을 때는 데이터가 프로그래밍 언어 명령에 의해 디스크에서 읽고 쓰여졌기 때문에 데이터의 본질적인 특성으로 여겨졌다. 그러나 이후 메모리 용량 증가와 동적으로 데이터 구조를 생성하는 객체 지향 프로그래밍의 등장으로 이러한 관점은 변화했다. 지속성의 예로는 자바 객체를 디스크에 저장하기 위한 직렬화, 자카르타 EE를 이용해 관계형 데이터베이스에 엔터프라이즈 자바빈즈를 저장하는 것이 있다.

3. 1. 시스템 이미지

시스템 이미지를 사용하는 것은 가장 단순한 지속성 전략이다. 노트북의 최대 절전은 시스템 이미지를 사용하는 직교적 지속성의 예시인데, 이는 시스템에서 실행 중인 프로그램의 어떠한 동작도 요구하지 않기 때문이다. 시스템 이미지를 사용하는 비직교적 지속성의 예시는 전체 문서를 파일에 저장하기 위해 특정 명령을 실행하는 간단한 텍스트 편집 프로그램이다.

'''단점'''

전체 시스템 상태를 저장할 수 있을 만큼 충분한 RAM이 필요하다. 마지막 이미지가 저장된 후 시스템에 가해진 상태 변화는 시스템 오류나 종료 시 손실된다. 모든 변경 사항에 대해 이미지를 저장하는 것은 대부분의 시스템에서 시간이 너무 오래 걸리므로, 이미지는 중요한 시스템의 단일 지속성 기술로 사용되지 않는다.

3. 2. 저널

저널링은 각 이벤트를 시스템에 적용하기 전에 로그에 저장하는 방식이다. 이러한 로그를 저널이라고 한다.

시스템 오류나 종료 시 데이터 손실을 방지하기 위해 시작 시 저널을 읽고 각 이벤트를 시스템에 다시 적용한다.

예를 들어, 그림 편집 프로그램에서 사용자의 모든 명령의 "실행 취소/다시 실행" 기록이 파일에 기록되면, 이는 편집된 그림의 상태를 언제든지 복구할 수 있는 저널이 된다.

저널은 저널링 파일 시스템, 우세 시스템 및 데이터베이스 관리 시스템에서 사용되며, "트랜잭션 로그" 또는 "재실행 로그"라고도 한다.

'''단점'''

저널만 단독으로 사용하면, 모든 시스템 이벤트의 전체 기록(잠재적으로 큼)을 모든 시스템 시작 시 다시 적용해야 한다. 결과적으로 저널은 종종 다른 지속성 기술과 결합된다.

3. 3. 더티 쓰기 (Dirty writes)

이 기법은 마지막 쓰기 이후 변경된(더티) 시스템 상태의 해당 부분만 저장소에 쓰는 것이다. 예를 들어, 정교한 문서 편집 응용 프로그램은 마지막 저장 이후 실제로 변경된 문서의 해당 부분만 저장하기 위해 더티 쓰기를 사용한다.
단점: 이 기법은 프로그램 내에서 상태 변경을 가로채야 한다. 이는 특정 저장-API 호출을 요구하거나 프로그램 변환을 통해 투명한 방식으로 달성된다. 이로 인해 기본 코드보다 느리고 디버깅이 더 복잡한 코드가 생성된다.

4. 영속성 계층

소프트웨어 계층 중 프로그램이 상태를 지속적으로 유지하는 것을 더 쉽게 만들어주는 모든 계층을 통칭하여 지속성 계층이라고 한다. 대부분의 지속성 계층은 직접 지속성을 달성하지 않고, 기본 데이터베이스 관리 시스템을 사용한다.

5. 시스템 보편성

시스템 우세성은 시스템 이미지와 트랜잭션 저널을 결합하여 그 한계를 극복하는 기술이다.
단점: 보편적인 시스템은 전체 시스템 상태를 유지할 수 있을 만큼 충분한 을 갖춰야 한다.

6. 데이터베이스 관리 시스템 (DBMS)

DBMS는 더티 쓰기 및 트랜잭션 저널링 기술을 함께 사용한다. 데이터베이스 관리 시스템은 지속성뿐만 아니라 질의, 감사 및 접근 제어와 같은 다른 서비스도 제공한다.

7. 사용자 인터페이스

소프트웨어를 데이터를 처리하는 것으로 간주할 때, 데이터 처리 관점에서 무결성을 실현하는 데 최소한 필요한 기능을 "지속성"이라고 부르는 경우가 있다. 이 경우, 지속성이 있는 조작은 소프트웨어가 저장하는 데이터에 대한 조작으로 다음과 같이 분류된다.


  • 새로운 데이터 항목을 추가(생성)하는 기능
  • 기존 데이터 항목을 참조하는 기능
  • 기존 데이터 항목을 편집(갱신)하는 기능
  • 기존 데이터 항목을 삭제하는 기능


이는 생성한 데이터를 단순히 디스크 등에 저장한다고 지속성이 있는 것이 아니라, 나중에 이를 재사용할 수 있어야 비로소 지속성이 있다고 말할 수 있다는 것을 의미한다. 또한, 이 외에도 대량의 데이터 항목을 처리하는 경우에는 다음과 같은 기능도 "지속성"의 요건으로 간주되는 경우가 있다.

  • 항목을 검색하는 기능
  • 항목을 정렬하는 기능
  • 항목을 필터링하는 기능

8. 기억 장치

'''영속성 기억 장치'''(persistent storage)는 전원이 꺼져도 데이터를 보존할 수 있는 기기를 가리킨다. 그러한 기기는 일반적으로 광의의 비휘발성 메모리 기기라고 불린다. 예를 들어, 하드 디스크 드라이브, 플로피 디스크, 콤팩트 디스크 등이 포함된다.

RAM처럼 전원을 공급하지 않으면 데이터를 보존할 수 없는 기기는 "휘발성 메모리" 기기라고 불리며, 영속성은 없다.

초기의 개인 휴대 정보 단말기(PDA)에서는 모든 데이터가 RAM에 저장되어 있었다. 따라서, 배터리 전원이 끊어지면 데이터도 손실되었다. 최근의 PDA는 영속성 기억 장치를 갖추고 있어, 그러한 사용자 데이터의 손실은 발생하지 않도록 되어 있다.

9. 지속성 운영 체제

운영 체제의 일종으로, 충돌이나 예기치 않은 종료 후에도 지속성을 유지한다. 이러한 기능을 사용하는 운영 체제는 다음과 같다.


  • 키코스
  • EROS, 키코스의 후속
  • 코요토스, EROS의 후속
  • 멀틱스와 해당 단일 레벨 저장소
  • 팬텀
  • IBM System/38
  • IBM i
  • 그래스호퍼 OS
  • 루아 OS
  • tahrpuppy-6.0.5

참조

[1] 간행물 PS-algol: A Language for Persistent Programming http://archive.cs.st[...]
[2] 웹사이트 Contracted Persistent Object Programming http://people.inf.et[...] ETH Zürich 2005-11-17
[3] 웹인용 Contracted Persistent Object Programming http://people.inf.et[...] ETH Zürich 2005-11-07
[4] 웹인용 Why persistent storage is a good thing http://blogs.msdn.co[...] Microsoft Blog 2005-07-14



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com