데이터 마이그레이션을 실행했고 결과를 검증해야 합니다. 또는 개발 데이터베이스를 스테이징 사본과 비교하고 있습니다. 또는 동료가 공유 데이터베이스의 자신의 버전을 보내왔고 차이를 찾아야 합니다. 어느 경우든 작업은 같습니다: 두 SQLite 데이터베이스를 보고 무엇이 바뀌었는지 파악하는 것. Mac에서 대부분의 도구는 단일 데이터베이스 연결을 중심으로 설계되어 있어서 이를 놀랍도록 어렵게 만듭니다.
데이터베이스 비교가 보통 고통스러운 이유
sqlite3 CLI로 두 데이터베이스를 비교하려면 두 개의 터미널 창을 열고 각각에서 같은 쿼리를 실행한 뒤 출력을 시각적으로 훑어보며 차이를 찾아야 합니다. 작은 테이블에서는 이 방법이 통합니다. 수백 개의 행과 수십 개의 열이 있는 테이블에서는 실수하기 쉽고 느립니다. 나란히 보는 화면도, 차이를 강조하는 기능도 없이 — 그냥 두 개의 순수 텍스트 스트림뿐입니다.
일부 개발자는 한 데이터베이스를 다른 데이터베이스로 변환하는 데 필요한 SQL 문을 출력하는 커맨드라인 도구인 sqldiff를 사용합니다. 스크립트화된 비교에는 강력하지만 시각적 차이가 아닌 원시 SQL 출력을 만들어냅니다. 실제로 무엇이 바뀌었는지 이해하려면 데이터 자체를 보는 대신 INSERT, UPDATE, DELETE 문을 읽어야 합니다.
대부분의 GUI 데이터베이스 브라우저는 한 번에 하나의 데이터베이스만 지원함으로써 문제를 악화시킵니다. 데이터베이스 A를 열어 검사하고, 닫고, 데이터베이스 B를 열어, 데이터베이스 A에서 무엇을 봤는지 기억하려 애씁니다. 일부 도구는 여러 연결을 지원하지만 각각에 대해 수동 설정이 필요합니다.
Tome으로 두 데이터베이스를 나란히 열기
Tome은 문서 기반 macOS 앱으로, 각 데이터베이스가 완전한 자신만의 인터페이스를 가진 창에서 열립니다. 두 데이터베이스를 열어 macOS 스플릿 뷰를 사용하거나 창을 드래그해서 나란히 배치하세요 — 두 텍스트 파일을 비교하는 것과 같은 방식입니다.
시각적 스키마 비교
두 데이터베이스가 열린 상태에서 각 창의 사이드바를 확인하세요. 원본에는 대상에 없는 테이블이 있나요? 인덱스가 한쪽에는 있고 다른 쪽에는 없나요? 두 사이드바를 시각적으로 훑어보면 이런 질문에 즉시 답할 수 있습니다.
행 수준 비교
같은 테이블을 양쪽 창에서 열어 데이터를 스크롤하세요. 같은 열로 양쪽을 정렬해 행을 맞추세요. 두 그리드를 동시에 볼 수 있으면 행 수나 데이터 값의 차이가 눈에 보입니다.
독립적으로 쿼리하기
각 창은 자신만의 SQL 쿼리 편집기를 가집니다. 양쪽에서 같은 집계 쿼리를 실행하세요 — SELECT COUNT(*) FROM users; — 결과를 나란히 비교하세요. 더 복잡한 쿼리를 작성해 각 데이터베이스에서 독립적으로 합계, 평균, 특정 레코드 존재 여부를 확인하세요.