LOGO
Khoa Công nghệ thông tin
Môn Cơ sở dữ liệu nâng cao
Nhóm 04 – Lớp SP Tin 4
GIỚI THIỆU VỀ DB4O
GVHD: ThS. Nguyễn Đặng Kim Khánh
Thành viên nhóm
Đinh Văn Quyên – K35.103.061
Nguyễn Ngọc Nhất Linh – K35.103.031
Lê Thị Kim Nga – K35.103.037
GIỚI THIỆU VỀ DB4O
2
Nội dung chính
1
Tạo lập và kết nối DB4O
2
Cấu trúc lớp đối tượng
và lưu trữ đối tượng
3
Truy vấn đối tượng
4
Một số tính năng khác
GIỚI THIỆU VỀ DB4O
3
TỔNG QUAN VỀ DB4O
DB4O là một HQT CSDL đối tượng được phát
triển và phân phối bởi Versant Corporation.
DB4O là một sản phẩm nguồn mở dựa trên 2
giấy phép GPL và dOCL.
Phiên bản ổn định mới nhất: 8.0 (.NET & Java).
Hướng phát triển của nhóm:
Nền tảng: MS .NET 4.0
Ngôn ngữ: C# (VS2010)
GIỚI THIỆU VỀ DB4O
4
TẠO LẬP VÀ KẾT NỐI CSDL
start
Mỗi csdl DB4O Transaction
chỉ gồm 1 file
duy nhất, phần mở
rộng thường là .yap hoặc .db4o
Ở chế(IObjectContainer
độ chạy cục bộ, csdl không
using
db = cần phải
được tạo trước, và có thể được tạo ra ngay
Db4oEmbedded.OpenFile([filename]))
{ trong quá trình truy cập (accessing) tới csdl.
Khác
với chế
client/server,
độ cục bộ
//một
sốđộthao
tác vớichếdb4o
} của DB4O không cần phải kết nối tới csdl với
username, password, và việc truy cập cũng rất
đơn giản.
Transaction stop
GIỚI THIỆU VỀ DB4O
5
TẠO LẬP VÀ KẾT NỐI CSDL
Chế độ ClientServer
Khởi động máy chủ
Kết nối máy chủ
GIỚI THIỆU VỀ DB4O
6
CÁCH TẠO LỚP ĐỐI TƯỢNG
Các đối tượng trong DB4O được lưu trữ dựa trên cấu trúc
của lớp đối tượng định nghĩa trên ngôn ngữ của ứng dụng
mà không cần phải có cấu trúc lớp đối tượng riêng dành
cho csdl. Dưới đây là cú pháp tạo lớp đối tượng trong C#:
[bổ_từ_truy_xuất] class <định_danh_lớp> [:lớp_cơ_sở]
{
}
Trong đó:
+ [bổ_từ_truy_xuất] gồm private, public, protected, internal,
protected internal,
+ <định_danh_lớp> là tên của lớp
+ [:lớp_cơ_sở ] đây là lớp được kế thừa
GIỚI THIỆU VỀ DB4O
7
CÁCH TẠO LỚP ĐỐI TƯỢNG
public class Pilot
{
string _name; int _points; // các thuộc tính
public Pilot(string name, int points) // phương thức xây dựng
{
_name = name;
_points = points;
}
public string Name //phương thức khác
{
get { return _name; }
}
}
GIỚI THIỆU VỀ DB4O
8
LIÊN KẾT GIỮA CÁC ĐỐI TƯỢNG
Liên kết giữa các đối tượng được định nghĩa
trong C# hoàn toàn khác so với cách định nghĩa
của ODL. Trong C#, nó được định nghĩa rất đơn
giản: mỗi lớp có 1 thuộc tính mà thuộc tính đó là
một object reference.
Tuy nhiên, việc phải thiết lập mối liên kết ở cả 2
lớp (Inverse Relationships) là không bắt buộc.
GIỚI THIỆU VỀ DB4O
9
LƯU TRỮ CÁC ĐỐI TƯỢNG
Để lưu trữ một đối tượng, ta gọi phương thức Store()
using (IObjectContainer db =
Db4oEmbedded.OpenFile("databaseFile.db4o
"))
{
Pilot pilot = new Pilot("Joe");
db.Store(pilot);
}
GIỚI THIỆU VỀ DB4O
10
TRUY VẤN DỮ LIỆU
QBE
Native
Queries
SODA
LINQ
GIỚI THIỆU VỀ DB4O
11
TRUY VẤN DỮ LIỆU
QBE
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
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.
Đố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ì
GIỚI THIỆU VỀ DB4O
12
TRUY VẤN DỮ LIỆU
QBE
Trả về tất cả các Pilot có Name
Tạo ra đối tượng theExample kiểu Pilot, có
là “John”
trường Name là “Join” và dùng đối tượng này
để làm mẫu tìm kiếm
Truy vấn trên
nhiều trường
GIỚI THIỆU VỀ DB4O
13
TRUY VẤN DỮ LIỆU
Truy vấn các đối tượng cùng kiểu
QBE
Trả về tất cả
đối tượng
cùng kiểu
Pilot
Tạo ra đối tượng example kiểu Pilot, dùng đối
Truy vấn các đối
tượng
nhaumẫu tìm kiếm
tượng
nàylồng
để làm
Truy vấn
lồng 2 đối
tượng Car,
Pilot
GIỚI THIỆU VỀ DB4O
14
TRUY VẤN DỮ LIỆU
Native
Queries Native Queries (NQ) đượ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.
Giải pháp cho vấn đề này là phân tích, tối ưu và dịch NQ
sang truy vấn SODA để thực thi.
GIỚI THIỆU VỀ DB4O
15
TRUY VẤN DỮ LIỆU
Native
Queries
Để sử dụng NQ, cần phải thêm các thư
viện sau vào project:
Db4o-bjects.Db4o.NativeQueries.dll
Db4object.Db4o.Instrumentation.dll
Cecil.FlowAnalysis.dll
Mono.Cecil.dll
GIỚI THIỆU VỀ DB4O
16
Truy vấn dữ liệu
Native
Queries
Một số ví dụ
IList result = container.Query(
delegate(Pilot pilot) { return pilot.Name == "John"; });
IList result = container.Query(
delegate(Pilot pilot) { return pilot.Age < 18; });
IList result = container.Query(
delegate(Pilot pilot) { return pilot.Age > 18 && pilot.Age < 30; });
17
TRUY VẤN DỮ LIỆU
LINQ
Là kiểu truy vấn đơn giản, hỗ trợ .NET để truy vấn
các đối tượng trong Db4o.
Db4o 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;
Lưu ý rằng LINQ yêu cầu ít nhất là .NET 3.5
GIỚI THIỆU VỀ DB4O
18
TRUY VẤN DỮ LIỆU
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.
Truy vấn đơn giản
Truy vấn phức tạp hơn
GIỚI THIỆU VỀ DB4O
19
TRUY VẤN DỮ LIỆU
LINQ
Một số ví dụ khác
Truy vấn theo
tuổi
Truy vấn theo
tên
GIỚI THIỆU VỀ DB4O
20