InfoGrab DocsInfoGrab Docs

데이터베이스 레코드의 시맨틱 버전 관리

요약

데이터베이스 레코드에 시맨틱 버전 관리(Semantic Versioning)를 적용하면 필터링 및 정렬 시 복잡성이 증가합니다. SemanticVersionable을 사용하려면 먼저 테이블에 필요한 칼럼을 추가하는 데이터베이스 마이그레이션을 만들어야 합니다.

데이터베이스 레코드에 시맨틱 버전 관리(Semantic Versioning)를 적용하면 필터링 및 정렬 시 복잡성이 증가합니다. 데이터베이스는 시맨틱 버전을 기본적으로 이해하지 못하므로, 버전 구성 요소를 데이터베이스의 별도 칼럼으로 추출해야 합니다. 이 과정을 쉽게 만들기 위해 SemanticVersionable 모듈이 도입되었습니다.

설정 방법#

SemanticVersionable을 사용하려면 먼저 테이블에 필요한 칼럼을 추가하는 데이터베이스 마이그레이션을 만들어야 합니다. 필요한 칼럼은 semver_major, semver_minor, semver_patch, semver_prerelease입니다. semver_prefixed 칼럼을 추가하면 버전에 v 접두사를 붙일 수 있습니다. 마이그레이션 예시는 다음과 같습니다:

class AddVersionPartsToModelVersions < Gitlab::Database::Migration[2.2]
  milestone '16.9'

  def up
    add_column :ml_model_versions, :semver_major, :integer
    add_column :ml_model_versions, :semver_minor, :integer
    add_column :ml_model_versions, :semver_patch, :integer
    add_column :ml_model_versions, :semver_prerelease, :text
    add_column :ml_model_versions, :semver_prefixed, :boolean, default: false
  end

  def down
    remove_column :ml_model_versions, :semver_major, :integer
    remove_column :ml_model_versions, :semver_minor, :integer
    remove_column :ml_model_versions, :semver_patch, :integer
    remove_column :ml_model_versions, :semver_prerelease, :text
    remove_column :ml_model_versions, :semver_prefixed, :boolean
  end
end

칼럼이 데이터베이스에 추가되면, 모델에 모듈을 포함시켜 활성화할 수 있습니다. 예시:

module Ml
  class ModelVersion < ApplicationRecord
    include SemanticVersionable
  ...
  end
end

이 모듈은 기본적으로 시맨틱 버전을 유효성 검사하도록 구성되어 있습니다.

정렬#

이 concern은 시맨틱 버전으로 정렬하기 위한 두 가지 스코프를 제공합니다:

scope :order_by_semantic_version_desc, -> { order(semver_major: :desc, semver_minor: :desc, semver_patch: :desc)}
scope :order_by_semantic_version_asc, -> { order(semver_major: :asc, semver_minor: :asc, semver_patch: :asc)}

필터링 및 검색#

TBD

데이터베이스 레코드의 시맨틱 버전 관리

GitLab v19.1
원문 보기
요약

데이터베이스 레코드에 시맨틱 버전 관리(Semantic Versioning)를 적용하면 필터링 및 정렬 시 복잡성이 증가합니다. SemanticVersionable을 사용하려면 먼저 테이블에 필요한 칼럼을 추가하는 데이터베이스 마이그레이션을 만들어야 합니다.

데이터베이스 레코드에 시맨틱 버전 관리(Semantic Versioning)를 적용하면 필터링 및 정렬 시 복잡성이 증가합니다. 데이터베이스는 시맨틱 버전을 기본적으로 이해하지 못하므로, 버전 구성 요소를 데이터베이스의 별도 칼럼으로 추출해야 합니다. 이 과정을 쉽게 만들기 위해 SemanticVersionable 모듈이 도입되었습니다.

설정 방법#

SemanticVersionable을 사용하려면 먼저 테이블에 필요한 칼럼을 추가하는 데이터베이스 마이그레이션을 만들어야 합니다. 필요한 칼럼은 semver_major, semver_minor, semver_patch, semver_prerelease입니다. semver_prefixed 칼럼을 추가하면 버전에 v 접두사를 붙일 수 있습니다. 마이그레이션 예시는 다음과 같습니다:

class AddVersionPartsToModelVersions < Gitlab::Database::Migration[2.2]
  milestone '16.9'

  def up
    add_column :ml_model_versions, :semver_major, :integer
    add_column :ml_model_versions, :semver_minor, :integer
    add_column :ml_model_versions, :semver_patch, :integer
    add_column :ml_model_versions, :semver_prerelease, :text
    add_column :ml_model_versions, :semver_prefixed, :boolean, default: false
  end

  def down
    remove_column :ml_model_versions, :semver_major, :integer
    remove_column :ml_model_versions, :semver_minor, :integer
    remove_column :ml_model_versions, :semver_patch, :integer
    remove_column :ml_model_versions, :semver_prerelease, :text
    remove_column :ml_model_versions, :semver_prefixed, :boolean
  end
end

칼럼이 데이터베이스에 추가되면, 모델에 모듈을 포함시켜 활성화할 수 있습니다. 예시:

module Ml
  class ModelVersion < ApplicationRecord
    include SemanticVersionable
  ...
  end
end

이 모듈은 기본적으로 시맨틱 버전을 유효성 검사하도록 구성되어 있습니다.

정렬#

이 concern은 시맨틱 버전으로 정렬하기 위한 두 가지 스코프를 제공합니다:

scope :order_by_semantic_version_desc, -> { order(semver_major: :desc, semver_minor: :desc, semver_patch: :desc)}
scope :order_by_semantic_version_asc, -> { order(semver_major: :asc, semver_minor: :asc, semver_patch: :asc)}

필터링 및 검색#

TBD