레코드 (컴퓨터 과학)

레코드는 컴퓨터 과학에서 하나의 논리적 단위로, 여러 개의 필드(속성)들을 모아 구성된 데이터 구조를 의미한다. 각 필드는 특정 데이터 형식을 가지며, 레코드 전체는 같은 구조를 공유하는 여러 개의 레코드 집합에서 일관된 형태를 제공한다. 레코드는 파일 시스템, 데이터베이스, 프로그래밍 언어 등의 다양한 영역에서 사용된다.

정의 및 특징

  • 구조: 레코드는 고정된 순서와 개수를 가진 필드들의 집합으로 구성된다. 각 필드는 정수, 문자열, 부동소수점 수 등 다양한 데이터 형식을 가질 수 있다.
  • 동일 구조: 동일한 레코드 타입에 속하는 모든 레코드는 같은 필드 순서와 데이터 형식을 유지한다. 이는 레코드 집합(예: 테이블)에서 일관된 데이터 처리를 가능하게 한다.
  • 식별: 레코드에는 종종 고유 식별자(키)가 포함되어, 데이터 검색 및 업데이트 시 특정 레코드를 식별한다.

주요 사용 분야

  1. 데이터베이스

    • 관계형 데이터베이스 시스템(RDBMS)에서 테이블의 각 행(row)은 레코드에 해당한다. 각 열(column)은 레코드의 필드와 매핑된다.
    • 레코드는 SQL 명령어(INSERT, SELECT, UPDATE, DELETE) 등을 통해 생성, 조회, 수정, 삭제된다.
  2. 파일 시스템

    • 순차 파일이나 고정 길이 레코드 파일에서는 레코드가 파일 내에 일정한 크기로 저장되어, 파일 입출력 시 레코드 단위로 읽고 쓸 수 있다.
    • 가변 길이 레코드 파일에서는 레코드 앞에 길이 정보를 포함하는 헤더가 추가되어 레코드 경계를 식별한다.
  3. 프로그래밍 언어

    • C 언어의 struct, Pascal의 record, Ada의 record 등에서 레코드와 동일한 개념을 제공한다.
    • 객체지향 언어에서는 클래스 인스턴스가 레코드와 유사한 역할을 수행하지만, 메서드와 상속 등 추가적인 기능을 포함한다.
  4. 네트워크 프로토콜

    • 패킷 헤더나 응용 계층 메시지 등에서도 고정된 형식의 필드 집합을 레코드 형태로 정의하여 파싱한다.

구현 방식

  • 정적 레코드: 컴파일 시 레코드 구조가 고정되어 메모리 레이아웃이 일정한 경우. 주로 시스템 프로그래밍에서 사용된다.
  • 동적 레코드: 런타임에 레코드 형식을 정의하거나 변경할 수 있는 경우. 예를 들어, 스키마가 변하는 NoSQL 데이터베이스 등이 해당한다.
  • 직렬화: 레코드를 파일이나 네트워크 전송을 위해 바이트 스트림으로 변환하는 과정. 대표적인 포맷으로는 JSON, Protocol Buffers, Avro 등이 있다.

관련 용어

  • 튜플(tuple): 레코드와 유사하지만, 일반적으로 순서만을 강조하고 필드 이름이 없는 경우에 사용된다.
  • 구조체(struct): 레코드와 거의 동등한 개념으로, 프로그래밍 언어별 구현에 따라 용어가 달라진다.
  • 행(row): 관계형 데이터베이스에서 레코드와 같은 의미로 쓰인다.

어원

‘레코드(record)’는 라틴어 recordare(다시 생각하다)에서 유래한 영어 단어이며, 원래는 ‘기록’이나 ‘기록된 자료’를 의미한다. 컴퓨터 과학에서는 데이터가 기록된 단위라는 의미에서 차용되어 사용된다.

참고 문헌

  • 데이터베이스 시스템 개론, 김태희 외, 2021.
  • C 프로그래밍 언어, Brian W. Kernighan, Dennis M. Ritchie, 1988.
  • “The Architecture of Open Source Applications”, 다양한 저자, 2009‑2023.
둘러보기

더 찾아볼 만한 주제