쿼리 가능한 실행 파일

3 weeks ago 25

SELF는 프로그램을 SQLite 데이터베이스로 구성해 코드뿐 아니라 웹사이트, 라우트, 방문 기록, 애플리케이션 상태까지 하나의 파일에 저장함 Linux의 binfmt_misc가 전용 인터프리터를 실행하면 segments 테이블을 메모리에 매핑하고 진입점으로 이동하며, 프로그램은 argv[0]을 통해 자기 파일을 SQL로 읽고 쓸 수 있음 개념 증명 웹서버 self-httpd는 routes, visits, presses 테이블을 사용해 페이지 요청과 버튼 클릭 결과를 실행 중인 SQLite 실행 파일에 직접 기록함 콘텐츠 수정은 같은 파일에 대한 ACID 트랜잭션으로 처리돼 재시작이나 재배포 없이 반영·롤백할 수 있으며, sqldiff와 FTS5 같은 기존 SQLite 도구도 그대로 활용 가능함 코드와 데이터가 같은 파일이어서 배포는 scp 한 번으로 단순해지고, 재배포 시 기존 상태를 INSERT... SELECT로 옮기는 데이터 마이그레이션으로 다룰 수 있음 프로그램과 상태를 하나의 SQLite 파일로 통합 SELF는 프로그램 자체가 SQLite 데이터베이스인 실행 파일 형식임 Linux의 binfmt_misc가 사용자 정의 인터프리터를 호출함 인터프리터는 segments 테이블의 행을 매핑한 뒤 프로그램 진입점으로 이동함 바이너리 관련 작업 상당수를 SQL로 처리할 수 있음 실행 파일이 쓰기 가능한 데이터베이스이므로 실행 중인 프로그램도 자신의 상태를 같은 파일에 저장할 수 있음 프로그램 배포물과 애플리케이션 상태가 단일 파일로 묶임 /var/, /tmp/, /home/ 같은 별도 파일시스템 경로 없이 상태를 보관할 수 있음 상태 변경에도 트랜잭션을 적용할 수 있음 self-httpd 개념 증명 self-httpd는 프로그램, 웹사이트, 라우트, 방문 로그와 상태를 모두 같은 SQLite 파일에 담은 단일 파일 웹서버임 서버 실행 후 페이지를 요청하거나 /api/press에 POST하면 그 결과가 실행 파일 내부에 기록됨 presses 테이블에서 버튼 클릭 횟수와 시각을 조회할 수 있음 visits 테이블에는 /와 /api/press 요청이 남음 실제 서버는 selfdb.exe.xyz에서 동작함 가장 작은 배포 티어를 사용하므로 사이트가 작동하지 않을 수 있음 페이지는 방문 로그와 버튼 클릭뿐 아니라 세그먼트, 심볼, 재배치 정보도 보여줌 이 정보는 빌드 시 페이지에 넣은 것이 아니라 실행 중인 서버가 ...

Read Entire Article