Linux, macOS, Windows에서 MySQL, PostgreSQL, SQLite, SQL Server 등 다양한 DB를 지원하는 크로스 플랫폼 SQL 편집기 및 데이터베이스 관리자입니다.
maxpert/marmot
어느 노드에서나 쓰기를 처리하고 MySQL wire protocol을 지원하는 리더 없는 분산 SQLite 복제 서버입니다.
대체할 수 있는 제품:CockroachDB
Amazon Aurora
- 스타
- 2,823
- 포크
- 81
- 열린 이슈
- 39
- 마지막 커밋
- 20일 전
어떤 프로젝트인가요?
Marmot은 Go로 작성된 분산 SQLite 서버입니다. 클러스터의 모든 노드가 쓰기를 처리할 수 있어 단일 프라이머리 장애 조치가 필요하지 않습니다. 노드들은 gossip protocol로 변경 사항을 주고받고, 각 쓰기는 설정 가능한 일관성 수준(ONE, QUORUM 또는 ALL)에서 2단계 커밋으로 조정됩니다. 같은 행에서 충돌이 발생하면 hybrid logical clock 타임스탬프를 기준으로 최종 쓰기 우선(last-write-wins) 방식으로 해결합니다.
클라이언트는 MySQL protocol로 연결하므로 기존 드라이버, ORM, DBeaver나 MySQL Workbench 같은 GUI 도구를 수정 없이 사용할 수 있습니다. 프로젝트는 WordPress를 지원 애플리케이션으로 소개하며, 3노드 예제 클러스터도 제공합니다. 복제는 SQL 문 재실행이 아니라 행 수준 변경 데이터 캡처 방식이며, DDL 문은 클러스터 전체 잠금과 멱등성을 보장하는 자동 재작성 과정을 거쳐 복제됩니다. 변경 사항은 Debezium 호환 JSON 형식으로 Kafka나 NATS에 게시할 수도 있습니다.
프로젝트에는 각 노드의 SQLite 파일과 함께 저장되는 IVF/PQ 인덱스를 사용하는 벡터 검색 기능과 엣지 배포를 위한 읽기 전용 복제본 모드도 포함되어 있습니다.
핵심 기능
- 01리더 선출이나 장애 조치 절차 없이 모든 노드에서 쓰기를 처리합니다.
- 02MySQL wire protocol을 지원하므로 표준 MySQL 클라이언트와 드라이버를 사용할 수 있습니다.
- 032단계 커밋과 조정 가능한 일관성 수준을 사용해 행 수준 변경 사항을 복제합니다.
- 04클러스터 전체 잠금과 멱등성을 보장하는 자동 재작성을 통해 DDL을 복제합니다.
- 05Debezium 호환 형식으로 변경 이벤트를 Kafka나 NATS에 게시합니다.
- 06필터링된 유사도 검색을 위한 SQL 함수를 갖춘 내장 벡터 검색 기능을 제공합니다.
활용 사례
- 복제 데이터베이스를 기반으로 여러 리전에 WordPress 사이트를 운영합니다.
- 엣지 환경에서 구성 데이터나 제품 카탈로그 데이터의 리전별 읽기 복제본을 유지합니다.
- 임베딩과 일반 SQL 필터를 결합한 소규모 RAG 저장소를 구축합니다.
- 데이터베이스 변경 사항을 Kafka나 NATS로 스트리밍해 후속 파이프라인에 전달합니다.
빠른 시작
- 1
단일 노드 클러스터 시작
./marmot-v2 - 2
MySQL 클라이언트로 연결
mysql -h localhost -P 3306 -u root
사용 전 알아둘 점
- 강한 직렬 가능성이 아닌 최종 일관성을 제공합니다.
- 각 노드가 모든 데이터의 전체 사본을 보유하므로, 매우 큰 데이터 세트(100GB 초과)보다는 작은 데이터 세트에 적합합니다.
- 여러 노드에서 동일한 데이터베이스에 대해 동시에 DDL을 실행하는 것은 지원되지 않으며, ALTER TABLE은 안전하게 재실행하기 어렵습니다.
- 업로드와 같은 미디어 파일은 복제되지 않으므로 별도의 공유 스토리지가 필요합니다.
토픽
자주 묻는 질문
- marmot은(는) 무엇인가요?
- 어느 노드에서나 쓰기를 처리하고 MySQL wire protocol을 지원하는 리더 없는 분산 SQLite 복제 서버입니다. Marmot은 Go로 작성된 분산 SQLite 서버입니다. 클러스터의 모든 노드가 쓰기를 처리할 수 있어 단일 프라이머리 장애 조치가 필요하지 않습니다. 노드들은 gossip protocol로 변경 사항을 주고받고, 각 쓰기는 설정 가능한 일관성 수준(ONE, QUORUM 또는 ALL)에서 2단계 커밋으로 조정됩니다. 같은 행에서 충돌이 발생하면 hybrid logical clock 타임스탬프를 기준으로 최종 쓰기 우선(last-write-wins) 방식으로 해결합니다.
- marmot은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- marmot은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- marmot은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. marmot의 마지막 커밋은 2026년 9월 30일입니다.
- marmot은(는) 어디에 사용할 수 있나요?
- 복제 데이터베이스를 기반으로 여러 리전에 WordPress 사이트를 운영합니다. 엣지 환경에서 구성 데이터나 제품 카탈로그 데이터의 리전별 읽기 복제본을 유지합니다. 임베딩과 일반 SQL 필터를 결합한 소규모 RAG 저장소를 구축합니다. 데이터베이스 변경 사항을 Kafka나 NATS로 스트리밍해 후속 파이프라인에 전달합니다.
- marmot는 어떻게 설치하나요?
- 단일 노드 클러스터 시작: ./marmot-v2 MySQL 클라이언트로 연결: mysql -h localhost -P 3306 -u root
- marmot은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/maxpert/marmot
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
버전 관리되는 SQL 파일이나 Go 함수로 데이터베이스 스키마 변경을 관리하는 CLI 및 Go 라이브러리입니다.
Postgres, MySQL, MariaDB, SQL Server, ClickHouse, SQLite를 지원하는 데스크톱 및 웹용 AI 기반 데이터베이스 클라이언트 겸 MCP 서버입니다.
JDBC 및 ODBC 드라이버를 통해 100개 이상의 데이터베이스를 지원하는 무료 멀티플랫폼 데스크톱 SQL 클라이언트이자 데이터베이스 도구입니다.
Git처럼 테이블을 fork, clone, branch, merge, push, pull할 수 있고 MySQL처럼 연결되는 SQL 데이터베이스입니다.
팀과 환경 전반에서 일반 SQL 데이터베이스 마이그레이션을 관리하는 경량 프레임워크 독립형 CLI 도구입니다.