Spatialite eşzamanlı erişimi nasıl ele alır?


9

Spatialitin aynı anda tek bir kullanıcı / makine tarafından kullanılması gerektiğini anlıyorum. Ancak veriler sunucuda depolanırsa, başka bir makinedeki birinin aynı veritabanını açıp kullanamayacağına dair bir garanti yoktur. Herkesin QGIS ve spatialitin çok kullanıcılı bir ortamda nasıl tepki gösterdiği konusunda tecrübesi var mı? Çoğu durumda, katman salt okunur bir katman olacaktır. QGIS, benzer bir durum olan birden fazla kişinin aynı şekil dosyalarını okumasına izin verir. Birden fazla kişinin eşzamanlı düzenleme oturumları açıksa ne olur?


1
Kaç kullanıcıdan bahsediyoruz?
Nathan W

Ben isteyeceğini değil kullanıcı sayısına dayalı sorunun kapsamını sınırlandırmak. Muhtemelen kullanıcı sayısıyla değişmeyen mekaniği anlamak faydalı olacaktır.
Scro

3
Hangi işletim sistemi? Ne tür bir ağ üzerinden? SQLite birden fazla okuyucuya ancak tek bir yazara izin verirken, işletim sistemi kendi kilitleme düzeyini zorlayabilir.
scruss

Windows 7 kullanıyorum, Win XP kurumsal ortamlarda hala yaygın ve erişim bir Yerel Alan Ağı üzerinden olacak. Bazı insanlar clould depolamayı da kullanmak isteyebilir, ancak senkronize eden veya çoğaltan herhangi bir sistem kullanılamaz. Kullanıcılar kadarıyla, bazı durumlarda on kullanıcıya kadar hayal ediyorum. Ne yazık ki bu, bir takım yardımcıları olmadan test edilmesi zor bir şey, dolayısıyla soru. @scruss SQLite veritabanı kilitlemeyi nasıl zorlar?
AndrewM

4
Şunun gibi: SQLite Sürüm 3'te Dosya Kilitleme Ve Eşzamanlılık . Özet olarak, genellikle birden fazla okuyucuya sahip olabilirsiniz, ancak bir yazma işlemi derhal beklemede olduğunda, yalnızca dosyanın dosyaya / tüm veritabanına erişimi vardır. Windows çok tutucu IME olma eğilimindedir ve başka bir kullanıcı dosyayı okumak için açtığında bir dosyaya erişimi engelleyebilir. QGIS bir SQLITE_BUSY edinmeyi bekler ve uygun şekilde yeniden denerse, bu işe yarayabilir. Bunu burada test etmenin bir yolu yok.
scruss

Yanıtlar:


4

SQLite, yazma bloklarından daha fazla ağırlığa sahip sorunlara yol açan son bir düzenleme kazanma modelinde çalışır. QGIS / SQLite ilişkisinde düzenleme oturumu izleme yoktur. Bu nedenle, tek bir yazar bloğu (SQLITE_BUSY) alsanız bile QGIS basitçe düzenlemede başarısız olur ve sadece bir hata döndürür ve değişikliği tekrar gönderin.

Aşağıda bu tür bir olayın ele alınması ve QGis'in yeniden gönderme işlemini nasıl ele aldığı açıklanmaktadır.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.