Truy vấn dữ liệu trong DB4O

Một phần của tài liệu TỐi ưu HÓA TRUY VẤN CƠ SỞ DỮ LIỆU Hướng ĐỐI TưỢNG (Trang 58)

Truy vấn là khả năng then chốt trong bất kỳ cơ sở dữ liệu nào, và đối với DB4O cũng vậy. Trong DB4O ta có các phƣơng thức truy vấn: QBE (Query-By-Example), NQ (Native Queries), SODA, LINQ.

QBE (Query-By-Example): Là phƣơng thức đặc biệt, tìm kiếm dựa trên các đối tƣợng mẫu. Nhƣng QBE có một số hạn chế: Không thể thực hiện các biểu thức truy vấn nâng cao. (AND, OR, NOT,…), Không thể truy vấn trên các giá trị 0, rỗng. Và đối với những truy vấn phức tạp thì khó đọc và biết đƣợc đang truy vấn cái gì

NQ (Native Queries): Đƣợc hiểu là truy vấn “bản địa” hay truy vấn theo ngôn ngữ của ứng dụng. Kiểu truy vấn này giúp ngƣời lập trình không mắc phải các lỗi nhƣ sai tên hay kiểu lớp, tên trƣờng,…bạn cũng sẽ tránh khỏi đƣợc các lỗi phát sinh khi chạy, do đó đây là cách tạo ra những câu truy vấn an toàn. Hạn chế của NQ là phải khởi tạo mọi đối tƣợng của lớp đang truy vấn lên CSDL và chạy biểu thức truy vấn lên chúng, điều này sẽ làm chậm câu truy vấn đi rất nhiều

SODA API : Là mức thấp nhất của API truy vấn, cho phép truy cập trực tiếp đến các nút của đồ thị truy vấn, là cơ chế truy vấn nền tảng trong DB4O, các kiểu truy vấn còn lại đều đƣợc dịch về SODA.

LINQ: Là kiểu truy vấn đơn giản, hỗ trợ .NET để truy vấn các đối tƣợng trong DB4O. DB4O có hỗ trợ giao diện .NET IQueryable. Điều này rất hữu ích khi xây

dựng các lớp trừu tƣợng để tích hợp DB4O với các Framework khác. Để sử dụng LINQ, bạn phải thêm LINQ-namespace vào project :

using System.Linq;

using Db4objects.Db4o.Linq;

Cú pháp của LINQ gần giống nhƣ SQL, tuy nhiên nó hỗ trợ sửa lỗi cú pháp ngay tại bƣớc phiên dịch. Ví dụ truy vấn đơn giản:

var query = fromNhanVien nv in container select nv;

Một phần của tài liệu TỐi ưu HÓA TRUY VẤN CƠ SỞ DỮ LIỆU Hướng ĐỐI TưỢNG (Trang 58)