Hệ quản trị cơ sở dữ liệu sqlite trên thiết bị di động và ứng dụng
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
-O1
-Os
-O2
-O3
-O0
-O1
-Os
-O2
-O3
-O0
-O1
-Os
-O2
-O3
529765
397204
333059
418161
828602
625841
455072
404201
499543
678465
806598
508500
481816
614346
661622
1.00
0.71
0.73
0.68
0.66
1.00
0.62
0.59
0.53
0.54
1.00
0.61
0.57
0.55
0.55
Ubuntu
GCC 4.5.2
Sqlite 3.7.8
X86_64 (64bit)
Max OS 10.7.1
GCC 4.2.1 +
LLVM
Sqlite 3.7.8
X86_64 (64-bit)
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 backend. 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.
- Xem thêm -