Đăng ký Đăng nhập
Trang chủ Hệ quản trị cơ sở dữ liệu sqlite trên thiết bị di động và ứng dụng...

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

.PDF
67
213
97

Mô tả:

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 -

Tài liệu liên quan

Tài liệu xem nhiều nhất