2009-04-25 41 views
32

Có ai có kinh nghiệm thực tế chạy cơ sở dữ liệu Sqlite trên chia sẻ SMB trên mạng LAN (Windows hoặc Linux) không?Sqlite qua mạng chia sẻ

Rõ ràng từ documentation rằng đây không phải là cách nhanh nhất để chia sẻ cơ sở dữ liệu Sqlite.

Những lưu ý rõ ràng là nó có thể chậm, và Sqlite chỉ hỗ trợ một luồng đơn viết cho DB tại một thời điểm. Vì vậy, bạn trở nên ít hơn nhiều đồng thời gây ra cập nhật DB của bạn bây giờ sẽ chặn DB lâu hơn (DB sẽ bị khóa trong khi dữ liệu được chuyển qua mạng).

Đối với ứng dụng của tôi, lượng dữ liệu mà tôi muốn chia sẻ là khá nhỏ và viết không quá thường xuyên (một số ít nhất viết mỗi vài giây).

Tôi nên theo dõi điều gì? Cái này có hiệu quả không?

Tôi biết đây không phải là những gì Sqlite được thiết kế, tôi ít quan tâm đến giải pháp dựa trên Postgres/MySql/Sql Server vì tôi đang cố gắng giữ cho ứng dụng của mình nhẹ nhất có thể với số lượng phụ thuộc tối thiểu.

Liên kết liên quan:

Từ sqlite mailing list, vì vậy tôi đoán một câu hỏi lớn đặt ra là như thế nào không đáng tin cậy là những apis FileLock qua SMB (Windows hoặc Linux)

+1

trông giống như samba linux có oplocks kích hoạt tùy thuộc vào cấu hình của nó. Càng nhìn vào vấn đề này ít thoải mái hơn bằng cách sử dụng giải pháp này, nó có thể dễ dàng trở thành cơn ác mộng hỗ trợ –

Trả lời

23

Trải nghiệm cơ sở dữ liệu dựa trên tệp của tôi (tức là những người không có quy trình máy chủ cơ sở dữ liệu), trở lại sau hai mươi năm, là nếu bạn cố gắng chia sẻ chúng, chúng sẽ không thể tránh khỏi cuối cùng bị hỏng. Tôi rất muốn đề nghị bạn xem lại MySQL.

Và xin lưu ý, tôi không chọn trên SQLite - tôi sử dụng nó bản thân mình, chỉ cần không phải là một cơ sở dữ liệu được chia sẻ.

+0

yeah im đùa giỡn với ý tưởng chia sẻ thông tin này qua ổ cắm với mạng ngang hàng ngang hàng. Có quá nhiều thứ có thể sai với một db nhúng qua mạng chia sẻ . –

8

Vâng Tôi không phải là chuyên gia sqlite lớn nhưng tôi tin rằng Việc khóa các bản ghi/bảng có thể không hoạt động chính xác và có thể làm cho cơ sở dữ liệu bị hỏng. Bởi vì vì không có máy chủ duy nhất duy trì khóa trung tâm, hai trường hợp dll sqlite trên các máy khác nhau chia sẻ cùng một tệp trên mạng có thể không hoạt động chính xác. Nếu cơ sở dữ liệu được mở trên cùng một máy, sqlite có thể sử dụng khóa cấp tệp được cung cấp bởi hệ điều hành để duy trì tính toàn vẹn nhưng tôi nghi ngờ nếu nó hoạt động chính xác qua chia sẻ mạng.

6

"Nếu bạn có nhiều chương trình khách hàng truy cập vào một cơ sở dữ liệu phổ biến qua mạng , bạn nên xem xét sử dụng một cơ sở dữ liệu client/server thay vì SQLite. SQLite sẽ làm việc trên một hệ thống tập tin mạng, nhưng vì sự Ngoài ra, các tập tin khóa logic của nhiều mạng hệ thống tập tin thực hiện chứa lỗi (trên cả Unix và Windows) .Nếu khóa tập tin không hoạt động như nó cần, nó có thể là có thể cho hai hoặc nhiều chương trình ứng dụng khách để sửa đổi cùng một phần của cùng một cơ sở dữ liệu tại cùng một thời điểm e, dẫn đến tham nhũng cơ sở dữ liệu. Vì sự cố này xảy ra do lỗi trong hệ thống tệp cơ bản thực hiện , không có gì SQLite có thể thực hiện để ngăn chặn nó."

từ https://www.sqlite.org/whentouse.html

đó cũng áp dụng cho bất kỳ loại cơ sở dữ liệu tập tin dựa trên như Microsoft Access

Các vấn đề liên quan