Spatialite xử lý truy cập đồng thời như thế nào?


9

Tôi hiểu rằng Spatialite có nghĩa là được sử dụng bởi một người dùng / máy tại một thời điểm. Tuy nhiên, nếu dữ liệu được lưu trữ trên máy chủ, không có gì đảm bảo rằng ai đó trên một máy khác cũng sẽ không mở cùng một cơ sở dữ liệu và sử dụng nó. Có ai có bất kỳ kinh nghiệm nào về cách QGIS và spatialite phản ứng khi ở trong một môi trường nhiều người dùng không. Trong hầu hết các trường hợp, lớp sẽ là lớp chỉ đọc. QGIS cho phép nhiều người đọc cùng một shapefiles, đây là một tình huống tương tự. Điều gì xảy ra nếu nhiều người có phiên chỉnh sửa đồng thời mở?


1
Chúng ta đang nói về bao nhiêu người dùng?
Nathan W

Tôi sẽ yêu cầu không giới hạn phạm vi câu hỏi dựa trên số lượng người dùng. Sẽ rất hữu ích khi hiểu các cơ chế, có thể không thay đổi theo số lượng người dùng.
Scro

3
Hệ điều hành nào? Qua loại mạng nào? Mặc dù SQLite cho phép nhiều người đọc nhưng chỉ có một người viết, HĐH có thể thực thi mức khóa riêng của nó.
xem xét

Tôi sử dụng Windows 7, Win XP vẫn phổ biến trong môi trường doanh nghiệp và quyền truy cập sẽ thông qua Mạng cục bộ. Một số người cũng có thể muốn sử dụng lưu trữ clould, nhưng bất kỳ hệ thống nào đồng bộ hóa hoặc sao chép sẽ không thể được sử dụng. Theo như người dùng, tôi tưởng tượng có tới mười người dùng trong một số trường hợp. Thật không may, đây là một cái gì đó rất khó để kiểm tra mà không có một nhóm người trợ giúp, do đó câu hỏi. @scruss SQLite thực thi khóa cơ sở dữ liệu như thế nào?
AndrewM

4
Như thế này: Khóa tệp và đồng thời trong SQLite Phiên bản 3 . Tóm lại, bạn thường có thể có nhiều người đọc, nhưng khi một bản ghi đang chờ xử lý ngay lập tức, chỉ người viết mới có quyền truy cập vào tệp / toàn bộ cơ sở dữ liệu. Windows có xu hướng IME rất bảo thủ và có thể ngăn chặn mọi quyền truy cập vào tệp khi người dùng khác mở nó để đọc. Nếu QGIS chờ đợi và thử lại một cách thích hợp khi nhận SQLITE_BUSY, điều này có thể hoạt động. Tôi không có cách nào để kiểm tra điều này ở đây.
xem xét

Câu trả lời:


4

SQLite hoạt động trong một mô hình chiến thắng chỉnh sửa cuối cùng, dẫn đến các vấn đề có trọng số lớn hơn khối viết. Không có theo dõi phiên chỉnh sửa trong mối quan hệ QGIS / SQLite. Vì vậy, ngay cả khi bạn đã nhận được một khối nhà văn duy nhất (SQLITE_BUSY), QGIS sẽ không thể chỉnh sửa và chỉ trả lại lỗi sau đó gửi lại thay đổi.

Dưới đây thảo luận về việc xử lý loại sự kiện này và cách QGis xử lý việc gửi lại.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.