C.W.K.
Stream
Lesson 04 of 05 · published

그림자 디렉토리 트리 없음

~11 min · no-shadow, database, references

Level 0Finder 에서 길 잃음
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"네 DB 가 '그 폴더에 무슨 파일 있어?' 에 답할 수 있는 순간, 넌 두 번째 파일시스템을 지은 거야 — 그리고 이제 둘 다 소유해."

넘으면 안 되는 선

Waygate 엔 SQLite DB 가 있고, 진짜 질긴 것들을 저장해. 그럼 위험은 어디 있어? 질문 하나야: DB 가 '지금 /some/folder 에 무슨 파일 있어?' 에 답할 수 있어? 그렇다면 그림자 디렉토리 트리를 지은 거야 — 앱 밖에서 뭐라도 바뀌는 순간 어긋날 파일시스템 구조의 두 번째 복사본. Waygate 의 DB 는 그 질문에 답할 수 없게 설계됐어. 디스크만 답할 수 있어.

Waygate 가 질기게 저장하는 것

DB 안 전부는 참조 아니면 증거지, 절대 내용이 아냐. 워크스페이스: 어느 위치가 열렸고 창이 어떻게 놓였나. 즐겨찾기: 북마크 더하기 표시 힌트, 대상이 여전히 존재한다는 약속 없이. 프리셋: 참조 집합이랑 레이아웃. 저장된 네트워크 위치: 정제된 스킴·호스트·공유 이름 — 자격 증명 없고, 파일 목록 없고. 오퍼레이션 저널: 엔진이 뭘 했나. 이 중 하나도 '폴더 안 파일 목록' 이 아니란 걸 봐.

동기화 클라이언트가 이걸 어렵게 가르치는 이유

클라우드 동기화 클라이언트가 반면교사야. 동기화하려면 그림자 트리를 유지해야 해 — 서버에 뭐가 있고 디스크에 뭐가 있는지의 로컬 모델 — 그리고 맞춰야 해. 그 그림자 트리가 걔들 최악 버그의 원천이야: 삭제 뒤 다시 나타나는 파일, 복제하는 충돌, 안 지워지는 유령 항목. Waygate 는 동기화 클라이언트가 아니고 일부러 그 그림자를 절대 안 지어, 바로 그래서 그 버그 가족 전체를 물려받을 수 없어.

DB 는 디스크에 관한 노트지, 그거의 복사본이 절대 아냐. Waygate 는 참조랑 증거를 저장하고; 권위가 될 수 있는 디렉토리 카탈로그를 절대 안 남겨. 어떤 테이블이 '이 폴더에 뭐 있어' 에 답할 수 있으면, 그 테이블은 그림자 파일시스템이야 — 그리고 두 번째 복사본이 항상 어긋남 버그가 사는 곳이야.
가족 전체에 걸친 똑같은 규칙. cwkPippa 도 이 규율을 지켜: 걔 SQLite 랑 벡터 스토어는 append-only JSONL 원본의 파생 미러고, 패치가 아니라 replay 로 다시 지어져. Waygate 는 똑같은 본능을 파일시스템에 적용해 — 진실 하나, 나머지 전부는 투영 아니면 그거에 관한 노트.

Code

모든 테이블은 참조 아니면 증거 — 어느 것도 파일 목록 아님·sql
-- Waygate's tables store pointers and history, never directory contents.

CREATE TABLE workspace (       -- which places are open + layout
  id INTEGER PRIMARY KEY,
  pane TEXT, tab_order INTEGER,
  location_bookmark BLOB,       -- a REFERENCE, not a file list
  view_state TEXT
);

CREATE TABLE favorites (       -- bookmarks + a display hint
  id INTEGER PRIMARY KEY,
  bookmark BLOB, display_name TEXT   -- no promise the target still exists
);

CREATE TABLE operation_journal ( -- EVIDENCE of what the engine did
  op_id TEXT PRIMARY KEY, state TEXT,
  source_ref BLOB, dest_ref BLOB, evidence TEXT
);

-- There is deliberately NO `directory_contents` table.
-- Ask the disk what's in a folder. Always.

External links

Exercise

네가 쓰는 동기화나 백업 도구를 보고 그 그림자 트리를 찾아봐 — 디스크나 서버에 뭐가 있다고 생각하는 로컬 모델. 그게 현실이랑 어긋난 적 있어 ('돌아온' 파일, 멈춘 업로드, 중복)? 그다음 동기화 도구와 달리 파일 매니저는 왜 그림자 트리를 아예 안 소유하고도 넘어갈 수 있는지 설명해봐.
Hint
동기화 도구는 양쪽을 모델링해서 맞춰야 해 — 그림자 트리가 걔들한텐 불가피하고, 그 어긋남 버그도 그래. 파일 매니저는 디스크를 지금 있는 그대로 보여주기만 하면 되니까, 그림자를 통째로 건너뛰고 요청 시 다시 읽을 수 있어. Waygate 는 어려운 기능을 거부하는 게 아냐; 애초에 필요 없던 짐을 거부하는 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.