홈으로 돌아가기

Geoorganizer: 데이터 모델 및 동기화

개인 Geoorganizer는 아토믹 Points, Places, Routes 및 계층적 Folders를 가진 모델을 사용합니다. 더티 트래킹과 배치 요청을 통한 동기화로 반응성을 보장합니다. 중급/시니어 개발자에게 적합, 스택: PHP, Vue 3, MariaDB.

Geoorganizer 구축: 모델부터 동기화까지
Advertisement 728x90

개인 지리데이터 관리자 아키텍처: 모델과 동기화

개인 지리데이터 관리자는 명확한 엔티티 모델을 통해 개인의 공간 데이터를 구조화하는 과제를 해결합니다. 주요 구성 요소로는 원자적 지오메트리인 포인트, 메타데이터가 포함된 장소, 포인트 시퀀스인 경로, 계층 구조를 위한 폴더가 있습니다. 이 구조는 좌표 중복 없이 객체 트리를 구축할 수 있게 하여 인터페이스 반응성을 보장합니다.

포인트는 위도, 경도, 고도, UUIDv4만 저장합니다. 다른 엔티티와 독립적이며 참조 요소 역할을 합니다. 각 장소는 ID로 단일 포인트를 참조하며 이름, 설명, 사진 앨범, 링크를 추가합니다. 경로는 순서가 지정된 포인트 ID 목록을 포함하며 비선형 시나리오를 위한 반복을 지원합니다. 폴더는 장소와 경로를 부모, 컨텍스트, 정렬을 위한 srt 필드가 있는 트리로 구성합니다.

엔티티 상세 설명

포인트

컨텍스트 없는 순수 지오메트리입니다. 인덱스 최적화를 위해 MariaDB/MySQL에서 binary(16)로 저장됩니다. 프론트엔드에서의 참조는 UUIDv4 문자열입니다.

Google AdInline article slot

장소

포인트에 첨부된 메타데이터입니다. 예: "첫 만남을 위한 정자"와 같은 설명과 사진 앨범이 있는 포인트 ID입니다. 트리 내 위치는 folderid에 의해 결정됩니다.

경로

메타 설명이 있는 포인트 ID 시퀀스입니다. 단일 포인트가 반복될 수 있어 루프나 복귀에 적합합니다. 예: "저녁 산책" 경로 — 집 → 편의점 → 공원 (여러 포인트) → 도서관 → 집.

폴더

id, parent, srt (순서를 위한 분수), context (장소 또는 경로) 필드가 있는 트리 구조입니다. 트리는 평면 목록에서 반응적으로 구축됩니다.

Google AdInline article slot

기술 스택과 데이터베이스

백엔드는 PHP, 프론트엔드는 Vue 3 Composition API, TypeScript, Pinia, Axios입니다. 데이터베이스는 MariaDB/MySQL입니다. 엔티티는 points, places, routes, folders 테이블에 있습니다.

주요 기능 — 포인트의 원자성: 소비자를 인식하지 않아 중복을 최소화하고 업데이트를 단순화합니다.

변경 사항 동기화

클라이언트는 Pinia 스토어에서 추가됨, 업데이트됨, 삭제됨 플래그가 있는 객체의 더티 상태를 추적합니다. 예시 객체:

Google AdInline article slot
{
	"id": "e7c6c8c4-4e3b-4d2f-8b61-8c9eaa2c1d51",
	"title": "정자",
	"pointid": "a2c17b8f...",
	"added": false,
	"updated": true,
	"deleted": false
}

전송 전 필터링: 변경된 객체만, 동일 세션에서 추가+삭제된 것은 제외합니다.

서버로의 일괄 전송

"저장" 버튼은 일괄 처리가 포함된 단일 요청을 형성합니다:

{
	"userid": "...",
	"sessionid": "...",
	"data": {
		"points": [...],
		"places": [...],
		"routes": [...],
		"folders": [...]
	}
}

서버는 DELETE > INSERT > UPDATE 순서로 작업을 적용하며, 미니 트랜잭션으로 처리됩니다.

이 접근 방식의 장점:

  • 최소한의 요청 수 — 일련의 편집당 하나의 일괄 처리.
  • 반응형 UI: 로컬 데이터 복사본으로 작업.
  • 서버 단순성: 여러 경로 없이 하나의 엔드포인트.
  • 확장성: 프로토콜 변경 없이 새로운 엔티티를 일괄 처리에 추가.

핵심 요약

  • 원자적 포인트는 지리데이터 중복 없이 참조 무결성을 보장합니다.
  • 폴더를 통한 트리 모델은 프론트엔드에서 반응적으로 구축됩니다.
  • 더티 추적 + 일괄 동기화는 네트워크 부하를 줄입니다.
  • 스택 (PHP/Vue 3/Pinia/MariaDB)은 단순성과 성능을 균형 있게 제공합니다.
  • GitHub의 오픈소스 프로젝트에 데모가 test/test 아래 있습니다.

— Editorial Team

Advertisement 728x90

다음 읽기