1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

67 2,3K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 2,32 MB

Nội dung

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

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

DBA Database Administrator

DBMS Database Management System

DDL Data Description Language

DML Data Manipulation Language

GPS Global Positioning System

Trang 8

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

Trang 9

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

Trang 10

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

Trang 11

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

Trang 12

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

Trang 13

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

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

Trang 14

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

Trang 15

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

Trang 16

đặ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

Trang 17

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

Trang 18

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

Trang 19

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

Trang 20

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

Trang 21

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

Trang 22

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 đó

Trang 23

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

…996 lệnh

Trang 24

- 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);

…996 lệnh

- 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;

…996 lệnh

- Kiểm tra 4: Thực thi 1000 câu lệnh UPDATE có INDEX

update t2 set b = 2101 where a = 1;

…996 lệnh

- 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%';

Trang 25

- 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;

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

Trang 26

- Tốc độ thực thi chênh lệch nhau không lớn nhưng Sqlite 3.8.3.1 thường chạy nhanh hơn PostgreSQL 9.3.4

- Sqlite hoạt động tốt nếu nhóm nhiều hoạt động trong một giao dịch

Đối với những truy vấn lớn và phức tạp hơn thì đỏi hỏi hệ quản trị phải cần thời gian kết nối đến máy chủ hoặc cần các chi phí giao dịch và các chiến thuật để CSDL hoạt động tối ưu Trong trường hợp này, Sqlite chắc chắn có thể làm được các truy vấn nhưng Sqlite không có khả năng làm các truy vấn đó tối ưu và tốc độ truy vấn sẽ không nhanh

Vì vậy, nếu bạn đang chọn một hệ quản trị CSDL cho một hệ thống lớn và phức tạp thì bạn nên chọn Oracle hoặc PostgreSQL hơn là chọn Sqlite Sqlite chỉ phù hợp với các ứng dụng vừa và nhỏ, do đó nó đặc biệt phù hợp với các ứng dụng chạy trên thiết bị di động

1.4.2 Hạn chế của Sqlite

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

Trang 27

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ư

Trang 28

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

Trang 29

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

1.5 So sánh hệ quản trị CSDL Sqlite với hệ quản trị CSDL khác

So với các hệ quản trị CSDL lớn như MySql hay PosgreSql thì Sqlite có những ưu

và nhược điểm Việc đưa ra một số đặc điểm như cài đặt, mô hình hệ thống sử dụng, kiểu

dữ liệu được hỗ trợ, cách sử dụng và ưu điểm, nhược điểm của ba hệ quản trị CSDL Sqlite, MySQL, PostgreSQL để thấy được sự khác nhau giữa chúng

1.5.1 Cài đặt

Hệ quản trị CSDL Sqlite là tập tin duy nhất Sqlite không yêu cầu cấu hình nên khi

sử dụng chúng người sử dụng không cần cài đặt Trong khi, để sử dụng hệ quản trị CSDL MySQL và PostgreSQL thì cần cài đặt và cấu hình phức tạp Hai hệ quản trị CSDL này yêu cầu cấu hình, quản trị hệ thống Đặc biệt, để sử dụng được những chức năng phức tạp hơn hay những kiểu dữ liệu phức tạp hơn thì PostgreSQL còn yêu cầu cài đặt thêm những phần mềm phụ trợ như PostGIS Có thể nói, việc không cần cài đặt thì Sqlite có thể dễ dàng sử dụng hơn so với hệ quản trị CSDL MySQL và PostgreSQL

Trang 30

1.5.2 Kiểu dữ liệu

Hầu hết các CSDL như MySQL và PostgreSQL đề sử dụng kiểu dữ liệu tĩnh thì Sqlite sử dụng kiểu dữ liệu động Kiểu dữ liệu này được kết hợp với giá trị trong cột dữ liệu Một số kiểu dữ liệu tương tự sẽ được nhóm vào nhóm gọi là kiểu dữ liệu tương tự

Bảng 1.3 Kiểu dữ liệu trong hệ quản trị CSDL Sqlite

INT INTEGER TINYINT SMALLINT MEDIUMINT UNSIGNED BIG INT

INT2 INT8

INTEGER

CHARACTER(20)

VARCHAR(255) VARYING CHARACTER(255)

NCHAR(55) NATIVE CHARACTER(70)

NVARCHAR(100)

TEXT CLOB

TEXT

REAL DOUBLE DOUBLE PRECISION

FLOAT

REAL

Trang 31

DECIMAL(10,5) BOOLEAN DATE DATETIME

Các kiểu dữ liệu trong Sqlite đều là nhưng kiểu dữ liệu trong hầu hết các CSDL Tuy nhiên, Sqlite không có những kiểu dữ liệu không gian như kiểu point, polygon, path như trong CSDL PostgreSQL Đây cũng là điều hiển nhiên vì PostgreSQL là hệ quản trị lớn, nó hỗ trợ nhiều kiểu dữ liệu để phù hợp với nhiều nhu cầu sử dụng khác nhau

1.5.3 Mô hình CSDL

Hệ quản trị CSDL Sqlite được sử dụng dưới dạng thư viện nhúng và không chạy theo kiểu server độc lập Trong khi hệ quản trị CSDL MySQL và PostgreSQL được sử dụng chủ yếu trong các hệ thống sử dụng mô hình Client-Server

Với hệ quản trị MySQL, MySQL phù hợp hệ thống phân tán, hệ thống yêu cầu tính bảo mật cao, website và ứng dụng web MySQL không được khuyến khích dùng trong trường hợp phải tuân thủ đầy đủ các tiêu chuẩn SQL, trong hệ thống đòi hỏi tính đồng thời cao và hệ thống yêu cầu một số tính năng mà MySQL vẫn còn thiếu như tìm kiếm full-text

Có thể nói, hệ quản trị PostgreSQL tốt hơn cả so với hệ quản trị Sqlite và MySQL PostgreSQL được khuyên dùng trong nhiều trường hợp mà Sqlite và MySQL khó làm được như hệ thống yêu cầu tính toàn vẹn dữ liệu, CSDL yêu cầu các thủ tục tùy chỉnh, khả năng tích hợp CSDL vào hệ thống và những hệ thống có thiết kế phức tạp Nhưng

Trang 32

cũng có một số trường hợp PostgreSQL không được khuyến khích dùng như hệ thống yêu cầu tốc độ hoạt động nhanh, và trường hợp mong muốn cài đặt đơn giản

1.5.5 Ƣu điểm và nhƣợc điểm

Mỗi một hệ quản trị CSDL đều có những ưu và nhược điểm Với Sqlite, Sqlite có những ưu điểm như dung lượng thư viện nhỏ (khoảng 250Kb), mỗi CSDL được lưu trữ trong một tập tin duy nhất, kích thước bản ghi trong CSDL có thể thay đổi và tốc độ hoạt động của chúng nhanh Bên cạnh những ưu điểm thì Sqlite còn tồn tại khá nhiều nhược điểm như không hỗ trợ ghi đồng thời, không hỗ trợ một số chuẩn SQL và đặc biệt là không hỗ trợ GRANT và REVOKE Trong khi đó MySQL và PostgreSQL lại làm rất tốt các nhược điểm của Sqlite Ngoài ra, MySQL có một số ưu điểm nữa như tính bảo mật, nhanh và có khả năng mở rộng PostgreSQL thì có một số ưu điểm là mã nguồn mở, khả năng mở rộng kiểu dữ liệu, mở rộng các hàm PostgreSQL được biết đến là một hệ quản trị CSDL mạnh, cấu hình phức tạp thì kéo theo đó là hiệu suất hoạt động không cao

Ngoài những khác biệt trên, so với hệ quản trị PostgreSQL thì Sqlite có những khác biệt đáng kể Những khác biệt này được liệt kê trong bảng 1.4

Bảng 1.4 Khác biệt giữa hệ quản trị Sqlite và PostgreSQL

- Định dạng tập tin ứng dụng

- Không có máy chủ

- Tập tin duy nhất trên ổ đĩa

- Tương thích ngược giữa phiên bản

- Dump và restore dữ liệu

- Nhiều tập tin nhị phân

Khi chọn lựa sử dụng một hệ quản trị CSDL, người dung cần quan tâm đến các đặc điểm về kiến trúc, hệ điều hành hỗ trợ… bảng 1.4 đưa ra những thông tin của từng hệ quản trị CSDL

Trang 33

Bảng 1.5 So sánh giữa hệ quản trị Sqlite, MySQL và PostgreSQL

Kiến trúc Mô hình quan hệ Mô hình quan hệ Mô hình quan hệ đối

tượng

Hệ điều hành Window, Mac OS

X, Linux, Unix, BSD, Symbian, AmigaOS

z/OS, Window, Mac

OS X, Linux, Unix, BSD, Symbian, AmigaOS

R-Bitmap, Expression, GIN, GiST, Hash, Partial, Full-text, R-/R+ Tree, Reverse Đối tượng khác External Routine,

Trigger

Cursor, Function, Procedure, External Routine, Trigger

Cursor, DataDomain, Function, Procedure, External Routine, Trigger

Chức năng ACID, toàn vẹn

tham chiếu, giao dịch và Unicode

ACID, toàn vẹn tham chiếu, giao dịch và Unicode

Sao lưu, hàm tùy chọn, khả năng mở rộng, hỗ trợ định dạng XML, ACID, toàn vẹn tham chiếu, giao dịch và

Unicode Khả năng của CSDL Except, Intersect,

Inner Joins, Inner Selects, Union

Merge Joins, Outer Joins

Merge Joins, Outer Joins, truy vấn song song, Except,

Intersect, Inner Joins, Inner Selects,

Ngày đăng: 25/03/2015, 09:41

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Phạm Thế Quế, Sở bưu chính viễn thông thành phố Hà Nội (2005), Giáo trình cơ sở dữ liệu.Tiếng Anh Sách, tạp chí
Tiêu đề: Giáo trình cơ sở dữ liệu
Tác giả: Phạm Thế Quế, Sở bưu chính viễn thông thành phố Hà Nội
Năm: 2005
[2] Apple Inc (2013), iOS App Programming Guide, pp. 34-36, pp. 147-148 Sách, tạp chí
Tiêu đề: iOS App Programming Guide
Tác giả: Apple Inc
Năm: 2013
[3] Anil K.Nori, Mobile and Embedded Database, Microsoft Corporation One Microsoft Way, Redmond, WA 98052 Sách, tạp chí
Tiêu đề: Mobile and Embedded Database
[4] Ericsson, Ericsson Mobility Report, November 2013 Sách, tạp chí
Tiêu đề: Ericsson Mobility Report
[5] F. Tavakkoli, A. Andalib, A. Shahbahrami and R.Ebrahimi Atani (2011), A Comparison of Lightweight Databases in Mobile Systems, Journal of computing, volume 3 Sách, tạp chí
Tiêu đề: A Comparison of Lightweight Databases in Mobile Systems
Tác giả: F. Tavakkoli, A. Andalib, A. Shahbahrami and R.Ebrahimi Atani
Năm: 2011
[6] Goodwill Community Foundation, Inc (1998-2013), Computer Basics Getting to know mobile devices, GCFLearnFree.org Sách, tạp chí
Tiêu đề: Computer Basics Getting to know mobile devices
[7] Grant Allent, Mike Owens, The Definitive Guide To Sqlite, Second Edition, Apress Sách, tạp chí
Tiêu đề: The Definitive Guide To Sqlite
[9] Nori, Mobile and embedded databases, SIGMOD 2007, ACM Press 2007, pp. 1175-1177 Sách, tạp chí
Tiêu đề: Mobile and embedded databases
[10] Raghu Ramakrishnan, Johannes Gehrke (2002), Database Management Systems, 3rd Edition, McGraw-Hill.Website Sách, tạp chí
Tiêu đề: Database Management Systems
Tác giả: Raghu Ramakrishnan, Johannes Gehrke
Năm: 2002

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w