옵시디언 위키링크를 블록 ID 기반 관계형 데이터베이스로 전환하는 공정
30 avril 2026
0
컴퓨터/소프트웨어Comments (0)
Log in to leave a comment
No posts yet
Log in to leave a comment
No posts yet
옵시디언을 쓰다 보면 파일 이름 하나 바꿨다가 연결된 수백 개의 링크가 끊어지는 꼴을 보게 됩니다. 문서가 수천 개로 늘어나면 인덱싱 지연 때문에 타이핑조차 버벅거리죠. 파일 기반 시스템은 결국 한계가 명확합니다. 씨위엔(SiYuan)은 이 문제를 단순하게 해결합니다. 모든 요소를 20자리 고유 식별자가 붙은 블록으로 정의하고 SQLite 커널에 때려 넣습니다. 파일명이 아니라 블록 ID를 추적하니까 물리적 위치를 아무리 옮겨도 링크가 깨질 일이 없습니다. 실제로 수만 개의 마크다운 파일을 보유한 환경에서 블록 체계로 전환했을 때 참조 오류 발생률은 0.1% 미만으로 떨어집니다.
비정형 데이터를 관계형 데이터베이스로 옮기려면 파이썬 정규식 스크립트가 필요합니다.
re 모듈로 [[파일명#헤더]] 패턴을 찾아내는 정규식을 돌립니다.((BlockID "앵커텍스트"))로 전부 치환합니다.이 과정을 거치면 수동으로 링크를 복구하느라 버리는 시간을 통째로 아낄 수 있습니다. 파일 시스템의 유연함보다는 데이터베이스의 엄격한 외래 키(Foreign Key) 관계가 필요한 시점입니다.
지식 베이스 전체가 SQLite로 관리된다는 건 시니어 엔지니어에게는 엄청난 무기입니다. 옵시디언처럼 단순 텍스트를 긁는 게 아니라 표준 SQL 문법으로 원하는 데이터만 동적으로 뽑아낼 수 있습니다. blocks 테이블은 ID, 마크다운 전문, 타입, 서브타입 등 상세한 컬럼 스키마를 이미 갖추고 있습니다. 수만 건의 노트를 뒤져도 응답 속도는 밀리초 단위입니다. 옵시디언의 단순 검색보다 업무 흐름을 끊는 지연 시간이 80% 이상 줄어듭니다.
흩어진 코드 스니펫을 실시간으로 관리하고 싶다면 임베디드 블록과 SQL을 조합해야 합니다.
SELECT * FROM blocks WHERE type = 'c' AND subtype = 'python' 쿼리를 입력합니다.AND content LIKE '%API%' 조건을 붙이고, ORDER BY created DESC로 최신순 정렬을 겁니다.별도 플러그인을 덕지덕지 설치할 필요도 없습니다. 순정 기능만으로 수천 개의 노트에 박혀 있는 파이썬 코드들을 주제별로 자동 취합하는 대시보드가 완성됩니다.
데이터 주권은 남의 서버가 아니라 내 컨테이너에서 나옵니다. 씨위엔은 공식적으로 도커 배포를 지원합니다. 테일스케일(Tailscale) 메쉬 VPN을 엮으면 포트를 외부에 개방하지 않고도 제로 트러스트 환경에서 안전하게 노트를 동기화할 수 있습니다. 경로 탐색 취약점이나 웹소켓 DoS 공격 걱정 없이 내 데이터를 지키는 방법입니다.
개인 서버나 NAS에 보안이 강화된 인스턴스를 올리는 절차는 이렇습니다.
-u 1000:1000 옵션과 볼륨 매핑을 넣어 docker run 명령을 실행합니다.http://siyuan-node:6806에 접속합니다.이렇게 아키텍처를 짜두면 유료 구독 서비스에 매달 돈을 상납하지 않아도 됩니다. 연간 10만 원 넘는 구독료를 아끼면서 보안은 더 강력해집니다.
데이터가 수만 개를 넘어가면 SQLite 엔진 내부에도 빈 공간인 데드 튜플(Dead Tuples)이 쌓입니다. 검색 성능이 예전 같지 않다면 엔진을 청소해야 할 때입니다. 씨위엔의 Go 기반 커널은 멀티코어를 잘 활용하므로 초기 인덱싱 단계에서 도커 컨테이너에 -cpus 자원을 넉넉히 주는 게 좋습니다. 쿼리 실행 계획이 꼬이지 않도록 정기적으로 유지보수 명령을 때려야 합니다.
검색 응답 시간을 1초 미만으로 유지하려면 다음 작업을 수행해야 합니다.
VACUUM 명령으로 삭제된 데이터가 차지하던 물리적 공간을 회수합니다.ANALYZE 명령으로 데이터 분포 통계를 갱신해서 SQL 엔진이 가장 빠른 검색 경로를 찾게 만듭니다.assets 폴더에 그냥 던져두지 말고 이미지 리사이징을 하거나 외부 링크로 돌려 인덱스 크기를 줄입니다.이 작업을 주기적으로 하면 전체 저장 공간의 60%를 절감할 수 있습니다. 데이터가 기하급수적으로 늘어나도 처음 설치했을 때의 그 속도를 유지하는 비결입니다.