Trước khi tôi đặt câu hỏi, trước tiên hãy để tôi mô tả suy nghĩ của tôi về SQLite.
Tôi thích các công cụ nhỏ, nhanh và quan trọng hơn là chỉ có các chức năng thực sự cần thiết. Đó là lý do tại sao tôi thích SQLite và tôi thích MS-SQL ít hơn một chút.
Ví dụ: MS-SQL có thể có nhiều chức năng, khả năng mở rộng hơn, v.v., nhưng cũng có thể gây khó khăn khi cài đặt nếu bạn không may mắn. Tất nhiên, tôi không nói rằng việc cài đặt khó khăn là lý do để không chọn một cơ sở dữ liệu cụ thể.
Đừng hiểu tôi sai: MS-SQL là một sản phẩm chất lượng tốt. Tôi rất có kinh nghiệm với MS-SQL; Tôi hiểu sản phẩm rất tốt như một chuyên gia. Tôi chỉ thích nó ít hơn trong một số trường hợp không thực sự cần thiết (= không có nhiều người dùng, <10-15).
Bạn thực sự sử dụng bao nhiêu chức năng của cơ sở dữ liệu? Theo kinh nghiệm của tôi, nó thường chỉ là SQL bình thường (CHỌN, CHERTN và CẬP NHẬT).
Tôi thích SQLite. Hấp dẫn nhanh. Thật dễ dàng để "cài đặt". Tôi nghĩ rằng SQLite có thể làm nhiều hơn những gì nó tuyên bố nó có thể làm. Tại sao chỉ sử dụng nó cho các ứng dụng một quá trình / một người dùng? Rốt cuộc: không có nhiều ứng dụng liên tục truy cập cơ sở dữ liệu.
Ví dụ: xem xét một ứng dụng ERP với, giả sử, 15 người dùng. Tại sao SQLite không thể được sử dụng cho điều đó? Hãy đối mặt với nó: theo kinh nghiệm chuyên môn của tôi, hầu hết người dùng loại ứng dụng này sẽ truy cập cơ sở dữ liệu trong khoảng 5-10% tổng thời gian họ đang sử dụng ứng dụng. Trong 90-95% khác, họ chỉ xem thông tin trên màn hình, nhập dữ liệu theo dạng lưới / biểu mẫu và khi họ lưu dữ liệu đầu vào của họ không quá 1 giây thời gian cơ sở dữ liệu. Fe: 1,5 phút thời gian đầu vào so với 1 giây thời gian tiết kiệm.
Nếu tệp cơ sở dữ liệu SQLite bị khóa trong thời gian "tiết kiệm thời gian", những người dùng khác cần truy cập cơ sở dữ liệu chỉ chờ, nhưng họ không nhận thấy rằng vì thời gian chờ sẽ rất nhỏ (không thể nhận thấy). Trong mã, bạn chỉ cần xử lý thời gian "bận rộn" có thể của cơ sở dữ liệu, để tránh các ngoại lệ, nhưng điều đó không khó thực hiện.
Một số người, những người phải suy nghĩ giống như tôi, thậm chí đã xây dựng một giải pháp máy khách-máy chủ cho SQLite: SQLitening . Điều này khiến tôi tin chắc rằng tôi có thể không tự lừa dối mình.
Tất nhiên, có những ứng dụng chuyên sâu về cơ sở dữ liệu mà SQLite không phù hợp. Nhưng như bây giờ tôi nghĩ về nó, nhiều ứng dụng nhiều người dùng, nếu họ không vượt quá 15 người dùng hoặc hơn, thì sẽ làm tốt với SQLite.
Nhiều khách hàng của chúng tôi không chi tiêu nhiều cho phần cứng, vì vậy tôi thường gặp một máy chủ duy nhất có mọi thứ trên đó (Exchange, SQL (s), máy khách, v.v.) và vì điều đó gần như "hết hơi". Nếu tôi có thể cung cấp một sản phẩm không có yêu cầu hệ thống cao, thì khách hàng của tôi sẽ rất vui. SQLite không thêm bất kỳ trọng lượng nào (ít nhất là không nhiều), MS-SQL cũng vậy. Vì vậy, tôi sẽ không chọn SQLite vì nó miễn phí, rẻ hoặc dễ cài đặt. Tôi sẽ chọn nó vì lý do thực tế / kỹ thuật.
FYI: Trong nghề nghiệp của chúng tôi, chúng tôi bán sản phẩm (tùy chỉnh và tiêu chuẩn, chủ yếu liên quan đến ERP) cho khách hàng, trung bình, không quá 5-6 người sẽ sử dụng sản phẩm. Có một số trường hợp ngoại lệ, nhưng không quá 10-15 người dùng.
Câu hỏi là: Tôi có đúng khi nghĩ rằng tôi có thể sử dụng SQLite cho một số ứng dụng nhiều người dùng như ví dụ tôi mô tả không? Có bất kỳ nhược điểm kỹ thuật nào mà tôi nên biết không? Những kinh nghiệm của bạn (tiêu cực hay tích cực) sẽ giúp tôi lựa chọn đúng đắn là gì?
Cập nhật: Xin đừng xem đây là một đánh giá tiêu cực của các cơ sở dữ liệu khác. Họ chủ yếu là tất cả các sản phẩm tốt. Chỉ cần chia sẻ suy nghĩ của tôi ở đây và quan tâm đến ý kiến của bạn về điều này.