Hạn chế của Sqlite

Một phần của tài liệu Hệ quản trị cơ sở dữ liệu Sqlite trên thiết bị di động và ứng dụng (Trang 26)

Cũng giống như các hệ quản trị CSDL khác, Sqlite cũng có những ưu điểm và nhược điểm. Tuy nhiên, với đặc điểm là Sqlite là một CSDL nhúng, được thiết kết cho các ứng dụng vừa và nhỏ nên những hạn chế của Sqlite lại phù hợp với mục đích sử dụng của nó. Nhìn chung, Sqlite có 2 hạn chế chính:

1. Hỗ trợ ghi đồng thời: Tại cùng một thời điểm, Sqlite cho phép nhiều người

có thể đọc dữ liệu nhưng chỉ cho phép một người duy nhất có thể ghi vào CSDL Sqlite. Khi có một người đang thực hiện ghi vào CSDL Sqlite thì không ai có thể truy cập và CSDL trong thời điểm đó. Vì Sqlite không có cơ chế để giảm thiểu khoảng thời gian hạn chế chiếm dụng quyền truy cập

2. Kết nối: Mặc dù CSDL Sqlite có thể được chia sẻ qua hệ thống tập tin

mạng, nhưng độ trễ liên quan đến các hệ thống tập tin có thể là nguyên nhân dẫn đến hiệu suất bị ảnh hưởng. Tệ hơn nữa, việc xảy ra lỗi mạng trong quá trình chia sẻ có thể làm các tập tin Sqlite bị chỉnh sửa và thay đổi hoặc có thể bị lỗi. Sqlite đã có các phiên bản NFS để điều khiển việc khoá tập tin – không cho phép chỉnh sửa tập tin trong quá trình chia sẻ trên mạng. Tuy nhiên, các phiên bản NFS này đã hoạt động không hoàn toàn tốt trong mọi trường hợp.

Hầu hết các hạn chế được nêu trên là “cố ý”, là kết quả của việc thiết kế Sqlite. Ví dụ như hạn chế hỗ trợ ghi đồng thời, nếu Sqlite có khả năng ghi đồng thời thì làm cho CSDL này trở nên phức tạp và điều này đi ngược với sự đơn giản trong thiết kế của Sqlite. Tương tự, hạn chế không hỗ trợ kết nối mạng cũng là mục đích của các nhà phát triển Sqlite. Sqlite là CSDL nhúng, không hỗ trợ kết nối mạng. Với mục đích ban đầu Sqlite được thiết kế để hoạt động như một khối đơn giản, nhỏ gọn và dễ sử dụng, được nhúng vào bên trong ứng dụng. Do đó, các hạn chế của Sqlite không cản trở nhiều trong việc các mục đích sử dụng của nó.

Trong khi Sqlite làm khá tốt một số thực thi câu lệnh SQL thì có một số các thực thi mà Sqlite không thể thực thi được.

1. Hỗ trợ hoàn tất Trigger: Sqlite hỗ trợ hầu hết các tính năng chuẩn cho trigger. Tuy nhiên, đối với tất cả các kiểu trigger, thì Sqlite yêu cầu hành vi cho mỗi dòng, còn đối với kiểu trigger cho tất cả các câu lệnh thì Sqlite không hỗ trợ được.

2. Hỗ trợ hoàn tất câu lệnh ALTER TABLE: Sqlite chỉ hỗ trợ các câu lệnh RENAME TABLE và ADD COLUMN là một dạng khác của câu lệnh ALTER TABLE. Những dạng khác của câu lệnh ALTER TABLE như

DROP COLUMN, ALTER COLUMN và ADD CONSTRAINT không thực thi được.

3. Câu lệnh RIGHT và FULL OUTER JOIN: Sqlite thực thi được câu lệnh

LEFT OUTER JOIN, nhưng không thể thực thi được câu lệnh RIGHT OUTER JOIN hoặc FULL OUTER JOIN. Câu lệnh RIGHT OUTER JOIN có thể thực hiện được nếu đảo ngược thứ tự của bảng và chỉnh sửa các ràng buộc JOIN. Câu lệnh FULL OUTER JOIN có thể được thực hiện nếu kết hợp 2 câu lệnh LEFT OUTER JOIN, UNION và lọc giá trị NULL bằng mệnh đề WHERE.

4. Không thể cập nhật View: View trong Sqlite chỉ có thể đọc. Bạn không thể

thực thi câu lệnh DELETE, INSERT hay UPDATE trên View. Nhưng Sqlite cho phép tạo một trigger để thực hiện DELETE, INSERT hay UPDATE một View và làm những gì cần thiết trên thân hàm của trigger.

5. Cửa sổ hàm: Một chức năng mới được mô tả trong ANSI SQL 99 là cửa sổ

hàm. Nó cung cấp việc phân tích hàm để lấy kết quả, bảng xếp hạng, tính trung bình, độ trễ và phép toán chính. Sqlite chỉ hỗ trợ trong ANSI SQL 92, nên cửa sổ hàm không được hỗ trợ.

6. GRANT and REVOKE: Sqlite đọc và ghi trên tập tin đĩa thông thường,

quyền truy cập duy nhất có thể được áp dụng là truy cập tập tin thông thường của hệ điều hành cấp dưới. Lệnh GRANT và REVOKE thường được tìm thấy ở hệ quản trị CSDL quan hệ mô hình Client – Server, trong khi Sqlite là CSDL nhúng nên nếu có thực thi lệnh GRANT và REVOKE thì lệnh này không có ý nghĩa.

Một phần của tài liệu Hệ quản trị cơ sở dữ liệu Sqlite trên thiết bị di động và ứng dụng (Trang 26)

Tải bản đầy đủ (PDF)

(67 trang)