← 목록
한선씨 2026-07-07 3KB 읽기 3분

SQL(MySQL/Oracle) → 한선씨 대응카드 제작

개요

MySQL/Oracle SQL 문법을 한선씨(고수준, hanseonc_high) 셀DB.한선 라이브러리로 어떻게 대응시키는지 실측 검증한 대응카드. crowny-rpnkit/대응카드/ 하위에 SQL카드.md + SQL검증.sh(13/13 PASS 게이트)로 산출.

무엇을 했는지

  1. /Users/ef/CrownyOS/crownyc/libs/셀DB.한선(30함수) + 셀저장소.한선(영속) +
JSON.한선(직렬화) API 전수 확인.
  1. SQL→셀DB 대응표 작성: CREATE/INSERT/SELECT/WHERE/UPDATE/DELETE/ORDER BY/COUNT·SUM·AVG·MIN·MAX
/DISTINCT/JOIN/INDEX/TRANSACTION 전부 실컴파일+실행 검증(예제 01~04, 09~13). → JOIN·집계·DISTINCT·인덱스·트랜잭션이 이미 셀DB.한선에 구현되어 있음을 확인 (당초 "미대응 예상" 항목이었으나 실측 결과 실존).
  1. 실제 미대응 확인: GROUP BY(없음) → 고유값+조회+집계 관용구로 우회(예제06),
수동 이중루프 JOIN 관용구도 별도 작성·검증(예제07, 다중조건/LEFT JOIN 확장용).
  1. 함정 8종 실측:
- 테이블=평면배열이라 배열 4095캡에 직접 종속. 안전 최대 행수 = floor((4095-1-N)/N). 컬럼3개 기준 1363행이 안전 상한(예제09/10/11로 경계 확인 — 2000행 삽입 시 캡초과+행오염 재현). - DB저장→DB불러오기 왕복 후 전 컬럼 문자열화(정수 WHERE 비교 실패, 예제05). - 인덱스생성()_인덱스맵을 구축하지만 빠른조회()가 이를 전혀 참조하지 않는 장식용 인덱스임을 코드 추적으로 확인(성능이득 0, 기능은 정상). - 트랜잭션취소()(ROLLBACK)가 실제 데이터 롤백을 하지 않고 상태 플래그만 세팅함을 확인. 대안으로 수동 스냅샷 패턴 문서화. - 셀DB.한선+셀저장소.한선 동시 import 시 트랜잭션시작 함수명 충돌(0인자 vs 1인자) — 컴파일러 경고 후 나중 import 정의로 조용히 override됨을 실측 재현(예제08).
  1. 라이브러리 갭 우선순위 목록 작성(P1: GROUP BY 네이티브화·진짜 트랜잭션 롤백,
P2: 인덱스 실사용화·SQL 파서, P3: JOIN 확장(LEFT/다중조건)·대형테이블 샤딩, P4: 영속화 타입보존·PL/SQL 트리거).
  1. 신규 재사용 패턴 4건 학습DB 등록(sql_셀db_groupby_관용구,
sql_셀db_수동조인_이중루프, sql_셀db_배열캡_안전상한공식, sql_셀db_트랜잭션롤백_스냅샷패턴).

관련 파일

  • /Users/ef/crowny-rpnkit/대응카드/SQL카드.md — 대응표+함정+갭 목록 SSOT
  • /Users/ef/crowny-rpnkit/대응카드/SQL검증.sh — 13예제 재검증 게이트(13/13 PASS)
  • /Users/ef/crowny-rpnkit/대응카드/예제/01~13_*.한선 — 전부 컴파일+실행 검증된 예제

잔여 이슈

  • 안전상한(테이블 배열4095캡) 문제는 근본적으로 셀DB.한선을 열지향(컬럼분리배열) 또는
샤딩 구조로 재설계해야 해결됨 — 이번 작업은 실측 확인+회피공식 문서화까지만.
  • GROUP BY 네이티브 함수, 진짜 인덱스 활용, SQL 텍스트 파서는 미착수(우선순위 목록에만 등재).
  • 나머지 9개 검증 예제는 단순 함수조합이라 개별 학습DB 등록은 생략(필요시 추가 가능).