Spatialite는 동시 액세스를 어떻게 처리합니까?


9

Spatialite는 한 번에 한 명의 사용자 / 컴퓨터에서 사용해야한다는 것을 이해합니다. 그러나 데이터가 서버에 저장된 경우 다른 시스템의 누군가가 동일한 데이터베이스를 열어 사용하지 않을 것이라는 보장은 없습니다. QGIS와 공간적 공간이 다중 사용자 환경에있는 방식에 대해 어떤 경험이 있습니까? 대부분의 경우 계층은 읽기 전용 계층입니다. QGIS를 사용하면 여러 사람이 동일한 모양 파일을 읽을 수 있습니다. 이는 비슷한 상황입니다. 여러 사람이 동시에 편집 세션을 열면 어떻게됩니까?


1
우리는 몇 명의 사용자에 대해 이야기하고 있습니까?
Nathan W

사용자 수에 따라 질문의 범위를 제한 하지 말 것을 요청 합니다. 사용자 수에 따라 변경되지 않는 메커니즘을 이해하는 것이 유용합니다.
Scro

3
어떤 운영 체제입니까? 어떤 종류의 네트워크를 통해? SQLite는 여러 독자를 허용하지만 하나의 작성자 만 허용하지만 OS는 자체 잠금 수준을 시행 할 수 있습니다.
scruss

Windows 7을 사용합니다. Win XP는 회사 환경에서도 여전히 일반적이며 액세스는 LAN (Local Area Network)을 통해 이루어집니다. 어떤 사람들은 스토리지를 사용하기를 원하지만 동기화하거나 복제하는 시스템은 사용할 수 없습니다. 사용자가가는 한, 어떤 경우에는 최대 10 명의 사용자를 상상합니다. 불행히도 이것은 도우미 팀이 없으면 테스트하기 어려운 것이므로 문제입니다. @scruss SQLite는 데이터베이스 잠금을 어떻게 적용합니까?
AndrewM

4
: 이것처럼 파일 잠금과 동시성에서 SQLite는 버전 3 . 요약하면 일반적으로 여러 판독기를 가질 수 있지만 쓰기가 즉시 보류중인 경우 기록기 만 파일 / 전체 데이터베이스에 액세스 할 수 있습니다. Windows는 매우 보수적 인 IME 인 경향이 있으며 다른 사용자가 읽을 수 있도록 파일을 열면 파일에 대한 액세스를 막을 수 있습니다. QGIS가 SQLITE_BUSY를 얻기 위해 적절히 대기하고 재 시도하면 이것이 작동 할 수 있습니다. 나는 이것을 테스트 할 방법이 없다.
scruss

답변:


4

SQLite는 마지막 편집 승 모델에서 작동하므로 쓰기 블록보다 가중치가 더 큰 문제가 발생합니다. QGIS / SQLite 관계에는 편집 세션 추적이 없습니다. 따라서 단일 작성기 블록 (SQLITE_BUSY)을 얻었더라도 QGIS는 단순히 편집에 실패하고 오류를 반환 한 다음 변경 사항을 다시 제출합니다.

아래에서는 이러한 유형의 이벤트 처리 및 QGis가 다시 제출을 처리하는 방법에 대해 설명합니다.

https://github.com/qgis/QGIS/blob/a3447dd9a346f6d5e08451b7c5666a37046435bc/src/core/spatialite/headers/spatialite/sqlite3.h#L1881-L1943

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.