← 기술 블로그 목록으로 돌아가기
#958 • Database Engineering & Zero-Install Client Architecture

무설치 듀얼 데이터베이스 엔진: ZeliSQL의 SQLite 인메모리 파이프라인과 MySqlConnector 커넥션 풀링 아키텍처

"컴퓨터실 실습 PC에 DBeaver나 MySQL Workbench를 깔려고 했더니 '관리자 권한 필요(UAC)' 경고창이 뜨며 거부당하셨습니까?" 자바(JRE) 런타임이나 무거운 IDE 설치 없이 단 하나의 실행 파일로 구동되는 Zero-Install 듀얼 DB 클라이언트, 원본 파일 손상을 원천 봉쇄하는 Microsoft.Data.Sqlite의 읽기 전용(ReadOnly) 안전 파이프라인, 원격 인트라넷 RDBMS를 위한 MySqlConnector 비동기 커넥션 풀링, Windows DPAPI 하드웨어 결합 비밀번호 암호화, 그리고 Database ➔ Tables 2단계 스키마 네비게이션 아키텍처 백서.

"초·중·고 정보 수업에서 데이터베이스 기초를 가르치거나, 국방 행정관이 인트라넷 서버의 MariaDB 테이블 상태를 점검하려면 거대한 벽에 부딪힙니다. DBeaver는 500MB가 넘는 자바 런타임을 요구하고, MySQL Workbench는 Visual C++ 재배포 패키지와 복잡한 관리자 권한 설치 과정을 요구합니다. 관리자 권한이 통제된 실습실 PC에서는 설치 자체가 불가능합니다. ZeliSQL은 단 1바이트의 외부 런타임 설치 없이, 로컬 .db 파일과 원격 MySQL 서버를 즉각 연결하는 완전 격리 온디바이스 DB 스위트입니다."

1. 교육과 국방 현장의 DB 클라이언트 장벽: "관리자 권한 없는 PC와 1GB짜리 무거운 IDE"

전국 초·중·고 컴퓨터실과 군부대 PC는 보안상의 이유로 일반 사용자(Standard User) 계정으로 잠겨 있습니다:

2. Zero-Install 듀얼 엔진 설계: SQLite 로컬/인메모리 + MySQL 원격 통합

ZeliSQL은 .NET 네이티브 DLL만으로 패키징되어 Zero-Install(무설치) 원클릭 구동을 달성했습니다.

특히 교육 및 실무 환경에서 가장 많이 쓰이는 두 가지 데이터베이스 패러다임을 탭 전환 하나로 자유롭게 오갑니다:

flowchart TD subgraph UI["ZeliSQL 통합 사용자 인터페이스"] Radio["DB 엔진 선택 라디오 버튼"] Radio -->|"SQLite 선택"| TabSqlite["로컬 .db 파일 브라우징"] Radio -->|"MySQL 선택"| TabMysql["원격 인트라넷 서버 접속"] end subgraph CoreEngine["C# 네이티브 듀얼 드라이버 (Zero-Install)"] TabSqlite --> EngineSqlite["Microsoft.Data.Sqlite\n(Mode=ReadOnly 안전 모드)"] TabMysql --> EngineMysql["MySqlConnector\n(비동기 풀링 & SslMode=Preferred)"] end subgraph Features["공통 분석 및 렌더링 파이프라인"] EngineSqlite --> SchemaTree["2단계 스키마 트리 (DB ➔ Tables)"] EngineMysql --> SchemaTree SchemaTree --> QueryExec["Stopwatch 정밀 실행 텔레메트리 (ms)"] QueryExec --> Export["다중 포맷 출력 (Markdown / CSV / JSON)"] end classDef ui fill:#1e293b,stroke:#6366f1,stroke-width:2px,color:#c7d2fe; classDef core fill:#0f172a,stroke:#38bdf8,stroke-width:2px,color:#f8fafc; classDef feat fill:#1a103c,stroke:#a855f7,stroke-width:2px,color:#e9d5ff; class UI,Radio,TabSqlite,TabMysql ui; class CoreEngine,EngineSqlite,EngineMysql core; class Features,SchemaTree,QueryExec,Export feat;

3. 원본 데이터 무결성 보장: SQLite Mode=ReadOnly 안전 파이프라인

수업 중에 학생이 실습용 SQLite 데이터베이스에 실수로 UPDATE를 쳐서 원본이 깨지면, 교사는 컴퓨터실 40대 PC에 교재 파일을 다시 배포해야 하는 악몽을 겪습니다.

ZeliSQL은 SQLite 연결 문자열에 Mode=ReadOnly를 기본 강제합니다:

C# (ZeliSQLWindow.xaml.cs) SQLite 읽기 전용(ReadOnly) 안전 연결 파이프라인
// 🛡️ 핵심 안전망: Mode=ReadOnly 강제로 학생의 실수에 의한 원본 파일 손상 100% 방어
using var conn = new SqliteConnection($"Data Source={_sqlitePath};Mode=ReadOnly");
conn.Open();

using var cmd = conn.CreateCommand();
cmd.CommandText = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name";
using var reader = cmd.ExecuteReader();
while (reader.Read())
    NavListView.Items.Add($"📋 {reader.GetString(0)}");

이를 통해 파일 잠금(Lock) 충돌 없이 여러 프로세스가 동시에 동일한 .db 파일을 안전하게 열람할 수 있습니다.

4. 원격 RDBMS 비동기 커넥션 풀링과 SslMode=Preferred 보안 계층

원격 MySQL 서버에 연결할 때 발생할 수 있는 네트워크 행(Hang) 현상을 차단하기 위해, ZeliSQL은 비동기 파이프라인(OpenAsync, ExecuteReaderAsync)과 5초 타임아웃을 적용했습니다:

C# (ZeliSQLWindow.xaml.cs) MySQL 보안 연결 문자열 구성 및 비동기 핸드셰이크
_mysqlConnStr = $"Server={host};Port={port};User={user};Password={pass};"
              + (string.IsNullOrEmpty(db) ? "" : $"Database={db};")
              + "SslMode=Preferred;ConnectionTimeout=5;";

await using var conn = new MySqlConnection(_mysqlConnStr);
await conn.OpenAsync(); // UI 프리징 없는 비동기 연결 수립

SslMode=Preferred를 통해 서버가 TLS 암호화를 지원할 경우 자동으로 전송 구간을 암호화하여 인트라넷 도청을 방어합니다.

5. DPAPI 하드웨어 결합 자격 증명 암호화와 서버 프로필 거버넌스

데이터베이스 관리 도구의 치명적인 보안 허점 중 하나는 저장된 접속 비밀번호가 평문(Plaintext) JSON 파일로 노출되는 것입니다.

ZeliSQL은 Windows 운영체제 수준의 하드웨어 TPM/로그인 자격 증명 기반 암호화인 DPAPI (Data Protection API)를 통해 비밀번호를 암호화하여 로컬 스토리지에 영속화합니다:

C# (ZeliSQLWindow.xaml.cs) DPAPI 기반 비밀번호 하드웨어 암호화 저장 파이프라인
// 저장 시: DPAPI로 암호화된 문자열로 직렬화
var toSave = _savedServers.ConvertAll(p => new ServerProfile
{
    Label = p.Label,
    Host = p.Host,
    Port = p.Port,
    User = p.User,
    Password = ZeliDesk.Services.SecretBox.Protect(p.Password), // DPAPI 암호화
    Database = p.Database
});
settings.Values["ZeliSQL_Servers"] = JsonSerializer.Serialize(toSave);

// 로드 시: 현재 로그인 사용자 세션에서만 복호화
foreach (var p in _savedServers)
    p.Password = ZeliDesk.Services.SecretBox.Unprotect(p.Password); // DPAPI 복호화

다른 사용자가 설정 파일을 탈취하거나 하드디스크를 떼어내어 다른 PC에 연결하더라도 비밀번호를 절대로 복호화할 수 없습니다.

6. 2단계 스키마 트리(DB ➔ Tables)와 초정밀 쿼리 실행 텔레메트리 (ms)

ZeliSQL은 직관적인 마우스 클릭만으로 데이터베이스의 내부 구조를 탐색할 수 있도록 설계되었습니다:

모든 쿼리 실행 시 System.Diagnostics.Stopwatch를 통해 밀리초(ms) 단위의 쿼리 응답 시간을 측정하여, 학생과 개발자가 쿼리 인덱스 최적화 효과를 즉시 체감할 수 있습니다.

7. 기존 DB 도구(DBeaver vs Workbench vs VS Code vs ZeliSQL) 심층 비교

비교 항목 DBeaver Community MySQL Workbench VS Code SQL Tools ZeliDesk ZeliSQL
설치 권한 (UAC) 관리자 권한 필수 관리자 권한 필수 VS Code 설치 필요 완전 무설치 (Zero-Install) 단일 구동
외부 런타임 의존 Java JRE (500MB+) VC++ Redistributable Node.js 런타임 순수 .NET 네이티브 (외부 런타임 0MB)
SQLite 안전 모드 기본 읽기/쓰기 (손상 위험) SQLite 미지원 플러그인별 상이 Mode=ReadOnly 안전망 강제
비밀번호 보안 저장 자체 키스토어 (자바 의존) Windows Credential Manager 설정 파일 평문 노출 위험 Windows DPAPI 하드웨어 결합 암호화
메모리 점유율 약 800MB ~ 1.5GB 약 400MB ~ 700MB 약 300MB ~ 600MB 약 40MB ~ 70MB (초경량)

8. 결론: "모든 학생과 군 간부를 위한 가장 가볍고 안전한 온디바이스 DB 파이프라인"

데이터베이스는 현대 디지털 행정과 AI 소프트웨어의 심장입니다. 하지만 복잡한 설치 과정과 관리자 권한 장벽은 교육과 현장 배포의 가장 큰 장애물이었습니다.

ZeliSQL은 SQLite 로컬 파일부터 원격 MySQL 서버까지 아우르는 듀얼 엔진, 원본을 지키는 ReadOnly 안전 모드, DPAPI 하드웨어 암호화를 단 50MB의 가벼운 메모리 공간 안에 완벽하게 구현했습니다.

ZeliDesk는 앞으로도 전국 초·중·고교 교실과 국방 정보화 현장의 모든 사용자가 기술적 장벽 없이 자유롭게 데이터를 탐구할 수 있는 무설치 네이티브 도구 생태계를 확장해 나갈 것입니다.

← 이전 기술 백서 #959 피싱 도메인과 중첩 난독화를 해체하는 7대 텍스트 코덱: ZeliEnc의 Punycode·Unicode Escape와 3단계 순차 일괄 디코딩 아키텍처 다음 기술 백서 → #957 스케줄 오작동과 야간 배치 사고를 방지하는 온디바이스 크론 엔진: ZeliCron의 Cronos 기반 5·6필드 정밀 파싱과 20회차 미래 예측 아키텍처
🗄️ ZeliDesk ZeliSQL 무설치 듀얼 DB 클라이언트 체험하기
SQLite 로컬 파일부터 원격 MySQL 서버까지, 관리자 권한 설치 없이 0초 만에 데이터베이스를 탐색하세요.
72종 유틸리티 전체 둘러보기 →