피드로 돌아가기
Hacker NewsHacker News
Database

금액 오차 제거를 위한 Fraction 기반 데이터 설계 분석

Spanish traders set the standard forGnuCash database design

2026년 6월 8일5intermediate

Context

Floating-point 연산의 정밀도 한계로 인한 금융 데이터의 누적 오차 발생 문제 분석. 전통적인 Minor Unit 저장 방식은 고정 정밀도로 인해 통화별 가변 정밀도 대응에 한계 노출.

Technical Solution

  • Floating-point 오차 제거를 위해 분자와 분모를 분리하여 저장하는 Fraction 구조 채택
  • 정수 기반 Minor Unit 방식 대신 분수 형태의 데이터 모델링을 통한 무한 정밀도 확보
  • 통화별 상이한 Minor Unit(예: JPY 0, KWD 1,000, BTC 100,000,000)에 유연하게 대응하는 설계
  • 시대적 요구사항(NYSE의 1/8 달러 분수 표기법)을 수용한 데이터 스키마 구축
  • Commodity Precision 변경 시 별도의 데이터 마이그레이션 없이 계산 정밀도 조정 가능 구조 구현
  • 최소공배수(Least Common Denominator) 기반의 연산 로직을 통한 수학적 정확성 유지

- 금융 시스템 설계 시 Floating-point 사용을 금지하고 Decimal 또는 정수 기반 단위를 검토할 것 - 도메인의 정밀도 요구사항이 가변적인 경우 Fraction 기반 저장 구조의 Trade-off(유연성 vs 성능) 분석 - 대규모 트래픽 환경에서는 분수 연산의 계산 비용 증가를 고려하여 Fixed-point 정밀도 설정 검토

원문 읽기