Tải bản đầy đủ (.pdf) (67 trang)

Hệ quản trị cơ sở dữ liệu Sqlite trên thiết bị di động và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.32 MB, 67 trang )



1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ



NGHIÊM THỊ HƢƠNG





HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQLITE TRÊN
THIẾT BỊ DI ĐỘNG VÀ ỨNG DỤNG





LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN






Hà nội - 2014
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ





NGHIÊM THỊ HƢƠNG



HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQLITE TRÊN
THIẾT BỊ DI ĐỘNG VÀ ỨNG DỤNG


Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104


LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN


NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS Đỗ Trung Tuấn



Hà nội - 2014



2
LỜI CAM ĐOAN
Tôi xin cam đoan:

1. Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn
trực tiếp của gio viên.
2. Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng và trung
thực tên tc giả, tên công trình, thời gian, địa điểm công bố.
3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo hay gian tr, tôi xin
chịu hoàn toàn trch nhiệm.



Nghiêm Thị Hương



3
MỤC LỤC
LỜI CAM ĐOAN 1
MỤC LỤC 3
DANH MỤC CÁC TỪ VIẾT TẮT 6
DANH MỤC CÁC HÌNH VẼ, BẢNG BIỂU 7
MỞ ĐẦU 9
Chƣơng 1. Tổng quan về hệ quản trị CSDL Sqlite 12
1.1. Giới thiệu chung về hệ quản trị CSDL Sqlite 12
1.1.1. Khái niệm 12
1.1.2. Khả năng nhúng 12
1.1.3. Sqlite là CSDL của nhà phát triển 13
1.1.4. Sqlite đối với nhà quản trị 14
1.2. Mốc phát triển của hệ quản trị CSDL Sqlite 14
1.3. Các đặc trƣng của hệ quản trị CSDL Sqlite 16
1.3.1. Không cần cấu hình 16
1.3.2. Tính di động, khả chuyển 16

1.3.3. Tính nhỏ gọn 18
2.3.4. Tính đơn giản 18
1.3.5. Tính linh hoạt 19
1.3.6. Cấp phép tự do 20
1.3.7. Tính tin cậy 20
1.3.8. Tính tiện lợi 21
1.4. Hiệu suất hoạt động và hạn chế 22
1.4.1. Hiệu suất hoạt động 22
1.4.2. Hạn chế của Sqlite 25
1.5. So sánh hệ quản trị CSDL Sqlite với hệ quản trị CSDL khác 28



4
1.5.1. Cài đặt 28
1.5.2. Kiểu dữ liệu 29
1.5.3. Mô hình CSDL 30
1.5.4. Sử dụng 30
1.5.5. Ưu điểm và nhược điểm 31
1.6. Kết luận chƣơng 33
Chƣơng 2. Nhu cầu về hệ quản trị nhỏ gọn trên các thiết bị di động 34
2.1. Giới thiệu về thiết bị di động 34
2.2. Đặc điểm của các thiết bị di động 36
2.2.1. Bộ nhớ 37
2.2.2. Phần cứng 38
2.3.3. Khả năng tương tác 39
2.3.4. Hệ điều hành di động 40
2.3. Những vấn đề thực tế 40
2.4. Giải pháp của Sqlite 43
2.5. Kết luận chƣơng 46

Chƣơng 3: Xây dựng ứng dụng trên thiết bị di động iPhone với Sqlite 47
3.1. Giới thiệu bài toán 47
3.2. Giải pháp đề xuất 48
3.2.1. Mục tiêu của ứng dụng 48
3.2.2. Môi trường phát triển 49
3.2.3. Giới thiệu Bundle 51
3.3.4. Giới thiệu Sandbox 52
3.4. Quản trị CSDL trong Sqlite 54
3.4.1. Giao diện Sqlite Manager 54
3.4.2. Giao diện dòng lệnh 54
3.5. Phƣơng thức thực hiện 55



5
3.5.1. Lưu trữ dữ liệu trên thiết bị 55
3.5.2. Thiết kế CSDL 56
3.5.3. Thêm thư viện Sqlite3 57
3.5.4. Kết nối CSDL 58
3.5.5. Thao tác với CSDL 58
3.6. Phƣơng pháp lƣu trữ dữ liệu trên máy chủ 59
3.7. So sánh kết quả thực nghiệm 61
3.8. Kết luận chƣơng 62
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 65



6
DANH MỤC CÁC TỪ VIẾT TẮT


ACID
Atomicity, Consistency, Isolation, Durability
API
Application Programming Interface
BLOB
Binary Large Object
CSDL
Cơ sở dữ liệu
DBA
Database Administrator
DBMS
Database Management System
DDL
Data Description Language
DML
Data Manipulation Language
GPS
Global Positioning System
mAh
Miliampe hour
NFS
Network File System
RAM
Random Access Memory







7
DANH MỤC CÁC HÌNH VẼ, BẢNG BIỂU
Hình 1.1. Logo của hệ quản trị CSDL Sqlite 12
Hình 1.2. Quá trình nhúng Sqlite trong máy chủ 13
Hình 1.3. Sqilte trên Window 16
Hình 1.4. Sqilte trên Ubuntu 17
Bảng 1.1. Kích thước và thời gian chạy của Sqlite trên một số hệ điều hành 17
Hình 1.5. Dung lượng tập tin CSDL Sqlite 18
Hình 1.6. Tập tin thư viện Sqlite trong công cụ lập trình Xcode 19
Hình 1.7. Danh sách API của Sqlite 20
Hình 1.8. Sqlite không yêu cầu bản quyền 20
Hình 1.9. Một đoạn mã nguồn thư viện của Sqlite 21
Bảng 1.2. Kết quả so sánh thời gian chạy của các hệ quản trị CSDL 24
Bảng 1.3. Kiểu dữ liệu trong hệ quản trị CSDL Sqlite 29
Bảng 1.4. Khác biệt giữa hệ quản trị Sqlite và PostgreSQL 31
Bảng 1.5. So sánh giữa hệ quản trị Sqlite, MySQL và PostgreSQL 32
Hình 2.1. Một số thiết bị máy tính bảng 35
Hình 2.2. Một số điện thoại thông minh 35
Hình 2.3. Một số hệ điều hành di động 36
Hình 2.4. Dung lượng của một số thiết bị di động 38
Hình 2.5. Bộ vi xử lý của một số thiết bị di động 38
Hình 2.6. Dung lượng pin của một số thiết bị di động 39
Hình 2.7. Một mô hình tương tác của các thiết bị di động 39
Hình 2.8. Số lượng thiết bị di động sử dụng hệ điều hành 40
Hình 2.9. Lưu lượng dữ liệu di động theo loại ứng dụng 41
Hình 2.10. Lưu lượng dữ liệu di động theo loại thiết bị 42
Hình 2.11. Quá trình nhúng CSDL trong ứng dụng 45




8
Hình 3.1. Độ phân giải camera trên một số thiết bị di động 48
Hình 3.2. Giao diện hệ điều hành OS X 50
Hình 3.3. Cấu trúc thư mục Bundle 51
Hình 3.4. Cấu trúc thư mục Sandbox 53
Hình 3.5. Cấu trúc thư mục Sandbox chi tiết của ứng dụng 56
Hình 3.6. Giao diện Sqlite Manager 54
Hình 3.7. Giao diện dòng lệnh trên hệ điều hành OS X 55
Hình 3.8. Thư viện sqlite3 trong Xcode 57
Hình 3.9. Mô hình iPhone App-Server 59
Hình 3.10. Bảng so sánh thời gian yêu cầu dữ liệu 61



9
MỞ ĐẦU
Ngày nay, việc phát triển không ngừng của khoa học công nghệ đã thúc đẩy ngành
công nghiệp sản xuất các thiết bị di động phát triển không ngừng. Cùng với sự phát triển
mạnh mẽ đó thì nhu cầu sử dụng các phần mềm ứng dụng trên thiết bị di động cũng tăng
kéo theo nhu cầu lưu trữ dữ liệu ngày càng lớn. Vấn đề lựa chọn hệ quản trị CSDL để tối
ưu hoá việc lưu trữ dữ liệu đã và đang là vấn đề được các nhà phát triển cân nhắc và
nghiên cứu.
Với đặc điểm chung của thiết bị di động như hạn chế về dung lượng, tốc độ xử lý
và nguồn năng lượng pin, thì yêu cầu đặt ra buộc các nhà phát triển cần phải nghĩ đến
những giải pháp để tối ưu hoá dung lượng bộ nhớ và tốc độ xử lý chương trình. Hơn nữa,
những ứng dụng được dành cho thiết bị di thường bao gồm nhiều dữ liệu, dung lượng dữ
liệu của chúng thường lớn. Một đặc điểm nữa của những ứng dụng cài trên thiết bị di
động có sử dụng hệ điều hành là cơ sở dữ liệu thường được nhúng trong ứng dụng, ứng
dụng có thể thao tác và sử dụng trực tiếp tập tin dữ liệu đó. Để giải quyết các vấn đề trên,

ngoài việc các nhà phát triển cần phát triển về mảng phần cứng như dung lượng bộ nhớ,
tốc độ xử lý của thiết bị thì các nhà phát triển hệ điều hành phải xem xét giải quyết các
vấn đề lập trình như các phương pháp tạo biến, giải phóng biến như thế nào để ứng dụng
chiếm ít bộ nhớ nhất, ngoài ra, dữ liệu cần được lưu trữ ở đâu và thao tác với dữ liệu đó
sao cho hiệu quả và dễ dàng. Vì thế việc lựa chọn một hệ quản trị cơ sở dữ liệu để đáp
ứng các yêu cầu về lưu trữ dữ liệu cần thoả mãn một số yêu cầu như: là cơ sở dữ liệu
nhúng, dung lượng nhỏ, thiết kế và cài đặt đơn giản, dễ thao tác là vấn đề mà các nhà phát
triển hướng tới.
Hệ quản trị cơ sở dữ liệu Sqlite với một số ưu điểm đã được các nhà phát triển hệ
điều hành chọn làm hệ quản trị cơ sở dữ liệu để lưu dữ liệu trong ứng dụng. Hệ quản trị
cơ sở dữ liệu Sqlite cũng tương tự như MySql, PostgreSql, nó được biết đến là một hệ
quản trị cơ sở dữ liệu quan hệ nhỏ gọn, hoàn chỉnh có thể cài đặt bên trong các ứng dụng
hay còn gọi là hệ quản trị cơ sở dữ liệu nhúng. Hệ quản trị này được Richard Hipp viết
dưới dạng thư viện bằng ngôn ngữ lập trình C. Với một số ưu điểm như tệp tin cơ sở dữ
liệu duy nhất, dung lượng chưa đến 350Kb được nhúng trong ứng dụng mà không cần cấu
hình và cài đặt. Sqlite còn thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở
dữ liệu khách / chủ khác. Ngoài ra, tốc độ thực thi của Sqlite nhanh và hiệu suất thường là
khá tốt ngay cả hoạt động trong môi trường bộ nhớ thấp. Với một số đặc điểm được nêu
ra, hệ quản trị cơ sở dữ liệu Sqlite đã khẳng định được ưu thế và được các nhà phát triển



10
chọn để giải quyết các vấn đề dung lượng bộ nhớ và lưu trữ dữ liệu cho các ứng dụng trên
thiết bị di động thông minh.
Mục tiêu mà đề tài muốn trình bày là tổng quan về hệ quản trị cơ sở dữ liệu để từ
đó có nền tảng để tìm hiểu kỹ hơn về cơ sở dữ liệu Sqlite và vận dụng lý thuyết để xây
dựng ứng dụng nhỏ trên thiết bị iPhone. Hệ quản trị cơ sở dữ liệu Sqlite là gì? Chúng có
những đặc trưng và tình chất gì so với các hệ quản trị cơ sở dữ liệu khác. Việc tìm hiểu
đặc điểm và hạn chế của thiết bị di động giúp chúng ta thấy được nhu cầu sử dụng hệ

quản trị cơ sở dữ liệu nhỏ gọn, từ đó trả lời tại sao lại sử dụng Sqlite làm hệ hệ quản trị cơ
sở dữ liệu trong các thiết bị di động. Cuối cùng, việc xây dựng ứng dụng nhỏ sử dụng
Sqlite làm công cụ để lưu trữ dữ liệu giúp vận dụng thực tế những gì đã nghiên cứu được.
Đối tượng tìm hiểu của luận văn hướng tới là tổng quan về hệ quản trị cơ sở dữ
liệu và hệ quản trị cơ sở dữ liệu Sqlite, những đặc trưng và phương pháp sử dụng Sqlite
để lưu trữ trong ứng dụng trên thiết bị di động. Ngoài ra, để vận dụng Sqlite vào ứng dụng
thực tế thì luận văn còn tìm hiểu về môi trường, các công cụ và cách thức để thực hiện
phát triển.
Để thực hiện được mục tiêu và nhiệm vụ đặt ra của đề tài này, có hai phương pháp
nghiên cứu được áp dụng đó là phương pháp nghiên cứu lý luận và phương pháp nghiên
cứu thực tiễn. Phương pháp nghiên cứu lý luận bao gồm việc thu thập, đọc hiểu và phân
tích thông tin dữ liệu từ các tài liệu, giáo trình liên quan đến hệ quản trị CSDL nói chung
và hệ quản trị CSDL Sqlite nói riêng và cách thức sử dụng Sqlite trong ứng dụng. Phương
pháp nghiên cứu thực tiễn thì tiến hành cài đặt, thao tác kết nối CSDL và cài đặt môi
trường để phát triển ứng dụng thực tiễn. Từ đó xây dựng ứng dụng nhỏ sử dụng hệ quản
trị CSDL Sqlite để lưu trữ dữ liệu nhằm hiểu sâu hơn về hoạt động của hệ quản trị CSDL
này.
Luận văn chi tiết được chia ra làm 3 phần chính:
Phần 1: Tìm hiểu tổng quan hệ quản trị CSDL Sqlite là gì? Chúng có tính chất đặc
trưng gì? Lịch sử phát triển của chúng ra sao? Ưu và nhược điểm so với các hệ quản trị
CSDL khác? Phần tìm hiểu này sẽ được trình bày trong chương 1.
Phần 2: Để biết được lý do tại sao các thiết bị di động lại sử dụng hệ quản trị
CSDL Sqlite để lưu trữ dữ liệu, chúng ta đi vào tìm hiểu các đặc điểm chung và hạn chế
của các thiết bị di động. Từ đó chỉ ra nhu cầu tại sao lại cần một hệ quản trị CSDL nhỏ
gọn dành cho các thiết bị di động. Nội dung này sẽ được trình bày trong chương 3.



11
Phần 3: Sau khi đã có đầy đủ nền tảng kiến thức về hệ quản trị CSDL Sqlite, phần

này tập trung vào việc xây dựng một ứng dụng nhỏ cho thiết bị di động iPhone sử dụng hệ
quản trị CSDL Sqlite. Để thực hiện công việc này, chúng ta cần tìm hiểu về môi trường và
công cụ phát triển, cách thức sử dụng Sqlite trong ứng dụng thực tế. Nội dung trong phần
này sẽ được trình bày chi tiết trong chương 4 của luận văn.
Phần kết luận: tóm lược nội dung đã trình bày trong luận văn, đưa ra các ưu điểm,
nhược điểm và hướng nghiên cứu trong tương lai.



12
Chƣơng 1. Tổng quan về hệ quản trị CSDL Sqlite
Hệ quản trị CSDL Sqlite ra đời giải quyết được vấn đề lưu trữ dữ liệu trong các
ứng dụng cần hệ quản trị CSDL nhúng. Sqlite là mã nguồn mở, được phát hành vào năm
2000. Với một số đặc điểm như linh động, dễ sử dụng, nhỏ gọn, hiệu quả và tính tin cậy
cao thì Sqlite được đánh giá là một hệ quản trị CSDL tốt. Vậy hệ quản trị CSDL Sqlite là
gì? Nó đã được phát triển như thế nào? Hệ quản trị CSDL Sqlite có những ưu nhược điểm
gì và các nhà phát triển, nhà quản trị đã đánh giá về nó ra sao? Hay các đặc điểm của
Sqlite sẽ được làm rõ trong chương này.
1.1. Giới thiệu chung về hệ quản trị CSDL Sqlite
1.1.1. Khái niệm
Sqlite là mã nguồn mở, là CSDL nhúng. Sqlite được phát hành năm 2000 là thư
viện điều khiển thực thi độc lập, không cấu hình. Mã nguồn của Sqlite được công khai và
sử dụng miễn phí cho bất kỳ mục đích sử dụng nào. Nó được thiết kế để cung cấp những
phương pháp thích hợp cho ứng dụng để quản lý dữ liệu mà không cần chi phí quản lý
thường thấy ở những hệ thống quản trị CSDL quan hệ chuyên dụng.

Hình 1.1. Logo của hệ quản trị CSDL Sqlite
1.1.2. Khả năng nhúng
Sqlite là một kiểu CSDL nhúng, nó được nhúng vào ứng dụng và đảm nhiệm luôn
vai trò làm máy chủ quản lý dữ liệu. Mã của Sqlite được nhúng cùng mã của chương

trình, và mã đó sẽ được biên dịch cùng với các đoạn mã khác của chương trình. Sqlite
thực thi mà không phụ thuộc vào các yếu tố như cấu hình CSDL, kết nối mạng, yêu cầu
tên người dùng hay mật khẩu nên Sqlite rất dễ dàng được sử dụng như một chương trình
hỗ trợ lưu dữ liệu trong ứng dụng. Khi chương trình được cài lên thiết bị, nếu thiết bị
không có kết nối mạng thì việc kết nối dữ liệu cũng không bị ảnh hưởng, chương trình



13
vẫn có thể hoạt động tốt. Ngoài ra, tập tin CSDL Sqlite chỉ là một tập tin duy nhất, nhỏ
gọn được nhúng bên trong ứng dụng. Tất cả dữ liệu của ứng dụng được lưu trữ trong tập
tin này và các thao tác với dữ liệu như chèn, sửa, xoá, tìm kiếm có thể được thực hiện
thông qua các chức năng của ứng dụng. Cả ứng dụng và máy chủ đều chạy với nhau trong
cùng một quá trình nên làm giảm chi phí liên quan như kết nối mạng, đơn giản hoá việc
quản lý CSDL và dễ dàng hơn cho việc triển khai ứng dụng.
Thông thường, những ứng dụng chạy trên thiết bị di động, CSDL sẽ được nhúng
trong ứng dụng. Đầu ra của các chương trình đó là một ứng dụng bao gồm chức năng và
CSDL được nhúng trong nó. Những ứng dụng này thường được bán trên các chợ công
nghệ như App Store, Google Play, Window Store, và nhà phát triển thường có xu hướng
là bán ứng dụng mà không muốn mất nhiều chi phí bảo trì và quản lý dữ liệu. Do đó các
nhà phát triển thường chọn theo hướng đóng gói chương trình bao đã chứa CSDL.

Hình 1.2. Quá trình nhúng Sqlite trong máy chủ
1.1.3. Sqlite là CSDL của nhà phát triển
Đối với nhà phát triển ứng dụng, Sqlite là hệ quản trị CSDL linh hoạt. Sqlite được
biết đến như là một CSDL, là thư viện lập trình và là công cụ dòng lệnh rất dễ sử dụng.
Do đó, Sqlite có thể được coi là một công cụ học rất tốt cung cấp sự mở đầu tốt những
hiểu biết về CSDL. Có nhiều cách sử dụng Sqlite như: môi trường nhúng, website, dịch
vụ hoạt động hệ thống, các tập lệnh, và ứng dụng. Ngoài ra, với một số lý do như: không




14
có hệ quản trị CSDL bên ngoài hoặc không cấu hình mạng hoặc không cần tên người
dùng và mật khẩu nên Sqlite là CSDL tốt cho việc phát triển và kiểm thử.
Bên cạnh chức năng nổi trội nhất là lưu trữ dữ liệu, Sqlite còn cung cấp các công
cụ chức năng để phục vụ cho việc xử lý dữ liệu chung. Tuỳ thuộc vào kích thước và độ
phức tạp, Sqlite có thể dễ dàng biểu diễn một số cấu trúc dữ liệu ứng dụng như một bảng
hoặc nhiều bảng trong CSDL. Người dùng vẫn có thể thực hiện các truy vấn với dữ liệu
như các CSDL khác.
Với các lập trình viên lập trình ứng dụng cho điện thoại di động cài hệ điều hành
iPhone hoặc Android, việc sử dụng Sqlite cũng đơn giản trong việc tạo ra CSDL, nhúng
CSDL vào ứng dụng và việc xử lý dữ liệu chung. Để tạo ra CSDL, nhà phát triển ứng
dụng có thể dùng công cụ Sqlite Manager hoặc công cụ dòng lệnh. Những công cụ trên
rất dễ dàng cài đặt, không quá phức tạp ví dụ như Sqlite Manager được tích hợp sẵn trong
Firefox, còn công cụ dòng lệnh cũng đã được hỗ trợ trong hệ điều hành OS X.
1.1.4. Sqlite đối với nhà quản trị
Sqlite không chỉ là CSDL của nhà phát triển mà Sqlite còn là công cụ hữu ích cho
các nhà quản trị hệ thống. Sqlite nhỏ gọn, nó có dịch vụ dòng lệnh có thể sử dụng từ shell
hoặc dòng lệnh. Trong hệ điều hành OS X, người quản trị có thể dễ dàng thao tác với
CSDL Sqlite bằng công cụ Terminal đã được tích hợp sẵn trong hệ điều hành.
Sqlite cũng là một công cụ tốt cho quản trị viên tìm hiểu thêm về CSDL. Sqlite cài
đặt nhanh và dễ dàng trên bất kỳ nền tảng nào, và các tập tin CSDL chia sẻ miễn phí với
nhau mà không cần chuyển đổi định dạng. Sqlite có đầy đủ các chức năng nhưng không
quá phức tạp trong việc tìm hiểu.
Nói tóm lại, với những đặc điểm như nhỏ gọn, dễ dàng thao tác trên nhiều môi
trường công cụ hay việc chia sẻ dữ liệu thì Sqlite là công cụ tốt cho cả nhà phát triển và
nhà quản trị dữ liệu.
1.2. Mốc phát triển của hệ quản trị CSDL Sqlite
Người sáng lập ra hệ quản trị CSDL Sqlite là D.Richard Hipp, ông đang làm việc

cho General Dynamic trong một chương trình cho hải quân Mỹ phát triển phần mềm để
trên sử dụng trên tàu hướng dẫn tên lửa phá huỷ. Chương trình ban đầu đó chạy trên
Hewlett-Packard Unix (HP-UX) và đã sử dụng CSDL Informix như một chương trình phụ
trợ. Informix cũng cần thiết đối với ứng dụng cụ thể. Theo đánh giá thì với các nhà quản
trị CSDL có kinh nghiệm DBA thì việc cài đặt và nâng cấp CSDL Informix sẽ mất
khoảng một ngày, còn đối với các nhà lập trình ứng dụng không thành thạo thì việc cài



15
đặt nâng cấp có thể là không bao giờ thực hiện được. Vì lý do đó, rất cần một CSDL độc
lập dễ sử dụng và có thể di chuyển với các chương trình và chạy bất cứ nơi nào bất kể các
phần mềm khác đã cài đặt hoặc chưa được cài đặt trên hệ thống.
Vào tháng 1 năm 2000, ông Hiip và đồng nghiệp [3] đã thảo luận về ý tưởng tạo ra
một CSDL nhúng đơn giản có thể sử dụng thư viện băm GNU DBM (gdbm) như một
chương trình phụ trợ, một điều nữa là CSDL này không phải cài đặt hay hỗ trợ quản lý.
Với những ý tưởng trên, ông Hipp đã bắt đầu công việc dự án trong khi ông có thời gian
rảnh và vào tháng 8 năm 2000, Sqlite 1.0 đã được phát hành.
Như kế hoạch đã đưa ra, Sqlite 1.0 sử dụng gdbm như bộ quản lý lưu trữ của nó.
Tuy nhiên, ông Hipp đã sớm thay thế gdbm bằng việc thực thi cây-B của riêng ông để hỗ
trợ các giao dịch và lưu trữ các bản ghi trong khoá sắp xếp. Với các nâng cấp lớn đầu tiên,
Sqlite bắt đầu một sự tiến hoá ổn định, ngày càng phát triển ở cả hai mặt là tính năng và
người sử dụng. Vào giữa năm 2001, có nhiều dự án – cả mã nguồn mở và thương mại bắt
đầu sử dụng Sqlite. Trong những năm tiếp theo, những thành viên khác của cộng đồng mã
nguồn mở lại bắt đầu viết phần mở rộng Sqlite cho các ngôn ngữ kịch bản họ yêu thích và
viết thư viện. Từng bước, những phần mở rộng mới cho các ngôn ngữ phổ biến và APIs
như ODBC, Perl, Python, Ruby, Java và đã được kiểm thử ứng dụng rộng rãi tiện ích của
Sqlite.
Trong năm 2004, Sqlite bắt đầu lần cập nhật lớn từ phiên bản 2.0 sang phiên bản
3.0. Mục tiêu ban đầu của lần cập nhật này là cải thiện quốc tế hoá hỗ trợ ký tự UTF-8 và

UTF-16 cũng như người dùng quy định lựa chọn ký tự chuỗi ký tự. Mặc dù phiên bản 3.0
ban đầu được dự kiến sẽ phát hành vào mùa hè năm 2005, nhưng America Online đã cung
cấp kinh phí cần thiết để phiên bản 3.0 được hoàn thành sớm vào tháng 7 năm 2004. Bên
cạnh việc quốc tế hoá, phiên bản 3.0 đã đem lại nhiều tính năng mới như sửa chữa API,
tập tin CSDL có định dạng nhỏ gọn hơn (giảm 25% kích thước ban đầu), định kiểu rõ
ràng, đối tượng nhị phân lớn (BLOB), 64-bit ROWIDs Thậm chí với nhiều tính năng
mới, dung lượng toàn bộ thư viện vẫn chỉ ít hơn 240Kb khi mà tại thời điểm đó hầu hết
các máy tính cá nhân bắt đầu có bộ nhớ chỉ trong đơn vị GB. Một cải tiến khác trong
phiên bản 3.0 là mã nguồn rõ ràng và sạch sẽ, mã nguồn được xem xét sắp xếp và viết lại
hay nói cách khác là Sqlite 3.0 đã bỏ đi những mảnh vụn đã tích luỹ trong loạt phiên bản
2.0.
Từ khi ra đời đến nay, Sqlite vẫn tiếp tục phát triển tính năng thông minh nhưng
vẫn giữ lại nhưng mục đích thiết kế ban đầu: đơn giản, linh hoạt, nhỏ gọn, tốc độ và dễ
dàng sử dụng.



16
1.3. Các đặc trƣng của hệ quản trị CSDL Sqlite
Sqlite tuy là một CSDL nhỏ, nhưng nó cung cấp đầy đủ các tính năng và khả năng
mà một hệ quản trị CSDL có. Sqlite hỗ trợ tập hợp các chức năng cơ bản như giao tác,
khung nhìn, kiểm tra ràng buộc, truy vấn con liên quan và các truy vấn kết hợp cùng với
nhiều tính năng khác trong CSDL như bộ kích hoạt, chỉ mục, tăng tự động chỉ số của cột,
các câu lệnh LIMIT/OFFSET. Nó cũng có nhiều chức năng đặc biệt như CSDL bộ nhớ
trong, gán kiểu động, và giải quyết một số xung đột. Dưới dây là một số các tính năng đặc
trưng được mở rộng trong hệ quản trị CSDL Sqlite [7].
1.3.1. Không cần cấu hình
Như đã đề cập ở các phần trên, Sqlite được thiết kế mà có thể không cần quản trị
viên của hệ thống. Việc cấu hình và quản lý Sqlite rất đơn giản, nó đã bao gồm đầy đủ các
chức năng được cấu hình trong hệ thống, người dùng không cần can thiệp vào bên trong

nó mà vẫn có thể dùng như một hệ thống hoàn chỉnh.
1.3.2. Tính di động, khả chuyển
Sqlite được thiết kế đặc biệt với khả năng di động của nó. Sqlite có thể biên dịch
và chạy trên nhiều hệ điều hành như Windows, Linux, BSD, OS X, hệ điều hành Unix
như Solaris, HPUX và AIX, cũng như nhiều nền tảng nhúng như QNX, VxWorks,
Symbian, Palm OS và Window CE. Nó còn có thể hoạt động tốt trên các kiến trúc bản 16,
32 và 64 bit với các thứ tự byte lớn nhỏ. Tính di động không chỉ dừng lại với phần mềm
mà các tập tin CSDL Sqlite cũng có khả năng di động. Các định dạng tập tin CSDL là
định dạng nhị phân, chúng tương thích trên tất cả các hệ điều hành, kiến trúc phần cứng
và thứ tự byte mà Sqlite có thể hoạt động được. Người dùng có thể tạo CSDL Sqlite trên
rất nhiều công cụ và sử dụng các hệ điều hành hay thiết bị, ngay cả trên điện thoại di động
mà không cần bất kỳ sự chuyển đổi hay sửa đổi nào. Hơn nữa, CSDL Sqlite có thể chứa
tới 2 terabyte dữ liệu và hỗ trợ 2 kiểu mã hoá UTF-8 và UTF-16.

Hình 1.3. Sqilte trên Window



17

Hình 1.4. Sqilte trên Ubuntu
Dung lượng và thời gian chạy của Sqlite trên một số hệ điều hành tiêu biểu được
liệt kê trong bảng 2.1[19].
Bảng 1.1. Kích thƣớc và thời gian chạy của Sqlite trên một số hệ điều hành
OS
Cài đặt tối ƣu
Kích thƣớc (bytes)
Thời gian chạy
Linux 10.1
GCC 4.1.0

Sqlite 3.7.8
X86 (32-bit)

-O0
529765
1.00
-O1
397204
0.71
-Os
333059
0.73
-O2
418161
0.68
-O3
828602
0.66
Ubuntu
GCC 4.5.2
Sqlite 3.7.8
X86_64 (64bit)
-O0
625841
1.00
-O1
455072
0.62
-Os
404201

0.59
-O2
499543
0.53
-O3
678465
0.54
Max OS 10.7.1
GCC 4.2.1 +
LLVM
Sqlite 3.7.8
X86_64 (64-bit)

-O0
806598
1.00
-O1
508500
0.61
-Os
481816
0.57
-O2
614346
0.55
-O3
661622
0.55





18
1.3.3. Tính nhỏ gọn
Sqlite được thiết kế nhẹ và khép kín; một tập tin tiêu đề, một thư viện và không
yêu cầu CSDL bên ngoài. Tất cả mọi đối tượng được đóng gói, dung lượng nhỏ hơn một
nửa megabyte. Ngoài ra, tập tin CSDL Sqlite cũng nhỏ gọn, chúng là những tập tin hệ
thống thông thường. Với bất kỳ hệ thống nào thì tất cả các đối tượng trong CSDL như
bảng, bộ kích hoạt, lược đồ, chỉ mục và khung nhìn đều được chứa trong một tập tin
CSDL duy nhất. Hơn nữa, Sqlite dử dụng các bản ghi có chiều dài có thể thay đổi, việc
cấp phát bộ nhớ chỉ cần một dung lượng tối hiểu để Sqlite lưu giữ các trường.

Hình 1.5. Dung lƣợng tập tin CSDL Sqlite
2.3.4. Tính đơn giản
Như một thư viện lập trình, API của Sqlite là một trong những giao diện lập trình
ứng dụng đơn giản và dễ sử dụng. API được thiết kế giúp người dùng có thể tuỳ chọn
Sqlite bằng nhiều cách, chẳng hạn như thực hiện các chức năng do người dùng mở rộng
bằng ngôn ngữ C. Hơn thế nữa, có nhiều thư viện giao diện và nhiều ngôn ngữ có thể sử
dụng được CSDL Sqlite Perl, Python, Ruby, Tcl/Tk, Java, PHP, Visual Basic, Objective
C Việc thiết kế các thư viện giao diện cho phép Sqlite có đầy đủ các chức năng và mở
rộng khi mà mã nguồn của chúng không phức tạp và vẫn đơn giản. Mỗi khối của hệ thống
chuyên xử lý một nhiệm vụ cụ thể. Những khối này giúp cho Sqlite có thể dễ dàng phát
triển và gỡ lỗi mà không phụ thuộc vào hệ thống. Kết quả của những công việc đó giúp
Sqlite có thể tách biệt rõ ràng giữa front-end (trình biên dịch SQL) và back-end (hệ thống
lưu trữ) cho phép 2 thành phần này độc lập nhau. Tóm lại, việc thiết kế API rõ ràng trong
cả tài liệu giao diện, việc phân chia các khối và thành phần riêng biệt, không có sự ràng



19

buộc giữa các khối và thành phần đó đã giúp việc sử dụng Sqlite đơn giản và dễ dàng
hơn.

Hình 1.6. Tập tin thƣ viện Sqlite trong công cụ lập trình Xcode
1.3.5. Tính linh hoạt
Sqlite là CSDL nhúng, nó cung cấp những điều kiện tốt nhất như sức mạnh và tính
linh hoạt của một CSDL có hệ thống font-end, và đơn giản, nhỏ gọn như hệ thống back-
end. Hệ thống font-end bao gồm trình biên dịch SQL bên trong hệ thống CSDL, có nhiệm
vụ thực thi và xử lý các câu lệnh truy vấn. Còn hệ thống back-end đảm nhiệm chức năng
lưu trữ dữ liệu cho Sqlite. Theo đó, không cần cấu hình máy chủ, không cần kết nối mạng
hoặc không phải lo lắng về việc kết nối CSDL, và không có giới hạn nền tảng, không phải
tìm hiểu kiến trúc API và miễn phí về bản quyền. Thay vào đó, nếu bạn muốn sử dụng
CSDL Sqlite, bạn chỉ cần đưa Sqlite vào ứng dụng.




20

Hình 1.7. Danh sách API của Sqlite
1.3.6. Cấp phép tự do
Tất cả mã nguồn của Sqlite được chia sẻ mà không cần giấy phép. Ai cũng có thể
sử dụng bất kỳ phần nào của Sqlite mà không phải bồi thường bản quyền tác giả. Sqlite
không giới hạn pháp lý về cách bạn có thể sử dụng mã nguồn dưới mọi hình thức như
chỉnh sửa, kết hợp, phân phối, bán và sử dụng cho bất kỳ mục đích thương mại mà không
có phí bản quyền hay bị hạn chế. Tóm lại Sqlite là hệ quản trị CSDL miễn phí.

Hình 1.8. Sqlite không yêu cầu bản quyền
1.3.7. Tính tin cậy
Mã nguồn của Sqlite không chỉ miễn phí mà Sqlite còn cho phép viết trong đó. Mã

nguồn của Sqlite bao gồm gần 70.000 dòng chuẩn được việc bằng ngôn ngữ C, mã nguồn



21
rõ ràng, được chú thích rất tốt. Mã nguồn còn được thiết kế giúp người sử dụng tiếp cận,
dễ dàng hiểu và dễ dàng chỉnh sửa và dễ dàng truy cập. Với lập trình viên thạo ngôn ngữ
C thì có thể theo dõi mọi phần của mã nguồn Sqlite hoặc với mã nguồn đó thì họ có thể
đủ thời gian để tìm hiểu.
Thêm nữa, mã nguồn của Sqlite cung cấp API đầy đủ tính năng đặc biệt cho việc
tuỳ chọn và mở rộng Sqlite thông qua việc bổ sung các hàm do người dùng định nghĩa,
tập hợp và đối chiếu tuần tự cùng với hỗ trợ cho các hoạt động bảo mật.

Hình 1.9. Một đoạn mã nguồn thƣ viện của Sqlite
1.3.8. Tính tiện lợi
Ngoài những tính năng giống như các hệ quản trị CSDL khác, thì Sqlite còn có
một số các chức năng duy nhất mà chỉ Sqlite mới có. Nó bao gồm các tính năng như: gán
kiểu động, giải quyết xung đột và khả năng đính kèm nhiều CSDL cho một phiên làm
việc đơn lẻ.
Tính năng gán kiểu động của Sqlite gần giống với ngôn ngữ kịch bản. Đặc biệt,
kiểu của biến được xác định bằng chính giá trị của nó, mà không phải cần định nghĩa
trước như các ngôn ngữ khác như C và Java. Hầu hết các hệ thống CSDL giới hạn giá trị
các trường khi định nghĩa một kiểu trong cột tương ứng. Nhưng trong Sqlite thì các cột có
thể có những kiểu được định nghĩa, và các trường không bị giới hạn giá trị, và biến trong
ngôn ngữ kịch bản có thể được gán giá trị với các kiểu khác nhau.
Thêm nữa, chức năng giải quyết xung đột trong Sqlite cũng là một tính năng tiện
lợi khác. Chẳng hạn khi thực thi câu lệnh UPDATE bạn có thể gặp lỗi xung đột kiểu của
biến. Sqlite có câu lệnh UPSET hoặc MERGE để giải quyết vấn đề xung đột đó.




22
Cuối cùng là tính năng đính kèm tập tin CSDL bên ngoài vào phiên bản làm việc
hiện tại. Tính năng này được dùng khi bạn đang kết nối và làm việc với một CSDL, bạn
muốn làm việc với một CSDL khác cùng một thời điểm, bạn có thể dùng câu lệnh
ATTACH để thực hiện mục đích này.
Tóm lại, với việc cung cấp một số tính năng đặc biệt thì Sqlite giúp người dùng sử
dụng và thao tác với hệ quản trị Sqlite dễ dàng và tiện lợi hơn.
1.4. Hiệu suất hoạt động và hạn chế
1.4.1. Hiệu suất hoạt động
Sqlite là CSDL có tốc độ cao. Tuy nhiên, theo đánh giá chung thì có một số chức
năng Sqlite có thể làm nhanh hơn các hệ quản trị CSDL khác, và một số chức năng khác
thì không thể làm hoặc không thể làm tốt như CSDL khác. Sqlite sử dụng cấu trúc cây-B
dùng để đánh chỉ mục và cây-B, cây+B dùng trong bảng dữ liệu, đây cũng là cách mà hầu
hết các hệ thống CSDL khác đều dùng. Đối với các câu lệnh đơn giản như SELECT,
INSERT, UPDATE, so với các CSDL khác thì Sqlite thực hiện nhanh hơn. Có 2 lý do
chính, lý do thứ nhất là các câu lệnh đó thường được thực thi hiện trên bộ nhớ RAM hoặc
ổ đĩa. Lý do thứ hai là Sqlite tốn kém ít dung lượng cho việc bắt đầu một giao dịch hoặc
tạo ra một kế hoạch truy vấn và Sqlite không phải chịu chi phí để thực hiện việc kết nối
đến máy chủ hay không phải đàm phán xác thực các quyền. Do đó, Sqlite thực hiện các
truy vấn đơn giản nhanh hơn.
Thực hiện kiểm tra các câu lệnh INSERT, SELECT, UPDATE, DELETE, DROP
TABLE trên hệ quản trị CSDL Sqlite, MySql và PostgreSQL để đưa ra tốc độ truy vấn
của Sqlite so với 2 hệ quản trị còn lại. Với Sqlite, việc kiểm tra này sẽ được thực hiện trên
phiên bản SqliteManager 0.8.1 tích hợp CSDL Sqlite 3.8.3.1 . Với PostgreSQL, việc kiểm
tra được thực hiện trên phiên bản mới nhất là 9.3.4. Các phần mềm này được cài đặt trên
Window 8 64bit với cấu hình: CPU 2.5 GHz, 2.0 GB.
- Kiểm tra 1: Thực thi 1000 câu lệnh INSERT
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
insert into t1 VALUES(1,101, 'so 101');

insert into t1 VALUES(2,102, 'so 102');
…996 lệnh
insert into t1 VALUES(999,1999, 'so 999');
insert into t1 VALUES(1000,2000, 'so 1000');



23

- Kiểm tra 2: Thực thi 1000 câu lệnh INSERT có INDEX
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
CREATE INDEX i2 ON t2(c);
insert into t2 VALUES(1,301, 'so 301');
insert into t2 VALUES(2,302, 'so 302');
…996 lệnh
insert into t2 VALUES(99,399, 'so 399');
insert into t2 VALUES(1000,400, 'so 400');

- Kiểm tra 3: Thực thi 1000 câu lệnh UPDATE không có INDEX
update t1 set b = 1101 where a = 1;
update t1 set b = 1102 where a = 2;
…996 lệnh
update t1 set b = 1199 where a = 999;
update t1 set b = 1200 where a = 1000;
- Kiểm tra 4: Thực thi 1000 câu lệnh UPDATE có INDEX
update t2 set b = 2101 where a = 1;
update t2 set b = 2102 where a = 2;
…996 lệnh
update t2 set b = 2199 where a = 999;
update t2 set b = 2200 where a = 1000;


- Kiểm tra 5: Thực thi câu lệnh INNER JOINT
SELECT t1.a from inner join t2 on t1.b = t2.b;
- Kiểm tra 6: Thực thi câu lệnh SELECT không có INDEX
Select b from t1 where c like '%2%';



24
- Kiểm tra 7: Thực thi câu lệnh SELECT có INDEX
Select b from t2 where c like '%2%';
- Kiểm tra 8: Thực thi câu lệnh DELETE không có INDEX
delete from t1 where c like '%2%';
- Kiểm tra 9: Thực thi câu lệnh DELETE có INDEX
delete from t2 where c like '%2%';
- Kiểm tra 10: Thực thi 1000 câu lệnh INSERT
BEGIN;
CREATE TABLE t3(a INTEGER, b INTEGER, c VARCHAR(100));
insert into t3 VALUES(1,301, 'so 301');
insert into t3 VALUES(2,302, 'so 302');
…996 lệnh
insert into t3 VALUES(999,3999, 'so 3999');
COMMIT;


Sau khi thực hiện các kiểm tra, kết quả thởi gian thực thi trên từng hệ quản trị
CSDL được liệt kê theo bảng 2.1:

Bảng 1.2. Kết quả so sánh thời gian chạy của các hệ quản trị CSDL
Hệ quản trị CSDL

Kiểm tra
Thời gian chạy
(giây)
PostgreSQL
1
0.181
Sqlite
0.196
PostgreSQL
2
0.416
Sqlite
0.267
PostgreSQL
3
0.668
Sqlite
0.367
PostgreSQL
4
0.933
Sqlite
0.398

×