Quản lý và sử dụng SQLite 3
SQLite 3 là một hệ quản trị cơ sở dữ liệu quan hệ nhúng nhẹ, được sử dụng rộng rãi trong các ứng dụng di động, hệ thống nhúng và ứng dụng máy tính để bàn nhỏ. SQLite 3 không cần tiến trình máy chủ độc lập, dữ liệu được lưu trữ trong một tệp đơn lẻ, dễ dàng quản lý và sử dụng. Bài viết này sẽ chi tiết cách quản lý và sử dụng cơ sở dữ liệu SQLite 3 trong ServBay, bao gồm các bước cài đặt, cấu hình, sao lưu, khôi phục và tối ưu hiệu suất.
Cài đặt và cấu hình SQLite 3
SQLite 3 thường không cần cài đặt riêng vì nó đã được tích hợp trong hầu hết các hệ điều hành và môi trường lập trình. ServBay đi kèm với SQLite 3, bạn chỉ cần đảm bảo nó có sẵn.
Kiểm tra cài đặt SQLite 3
Bạn có thể kiểm tra xem SQLite 3 đã được cài đặt hay chưa bằng lệnh sau:
sqlite3 --version
Nếu thông tin phiên bản được hiển thị, điều đó có nghĩa là SQLite 3 đã được cài đặt.
Tạo và kết nối cơ sở dữ liệu SQLite 3
Cơ sở dữ liệu SQLite 3 được lưu trữ dưới dạng một tệp đơn lẻ, đường dẫn mặc định là /Applications/ServBay/db/sqlite
. Bạn có thể sử dụng công cụ dòng lệnh sqlite3
hoặc thư viện SQLite của một ngôn ngữ lập trình để tạo và kết nối cơ sở dữ liệu.
Sử dụng công cụ dòng lệnh để kết nối
Tạo hoặc kết nối cơ sở dữ liệu:
bashsqlite3 /Applications/ServBay/db/sqlite/your_database.db
1Thoát SQLite 3:
sql.exit
1
Sử dụng ngôn ngữ lập trình để kết nối
Ví dụ PHP
Sử dụng lớp SQLite3
để kết nối SQLite 3:
<?php
// Kết nối đến cơ sở dữ liệu SQLite 3
$db = new SQLite3('/Applications/ServBay/db/sqlite/your_database.db');
// Tạo bảng
$db->exec("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name TEXT)");
// Thêm dữ liệu
$db->exec("INSERT INTO mytable (name) VALUES ('Alice')");
// Truy vấn dữ liệu
$result = $db->query("SELECT * FROM mytable");
while ($row = $result->fetchArray()) {
echo "ID: " . $row['id'] . " Tên: " . $row['name'] . "\n";
}
// Đóng kết nối cơ sở dữ liệu
$db->close();
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Ví dụ Node.js
Sử dụng thư viện sqlite3
để kết nối SQLite 3:
const sqlite3 = require('sqlite3').verbose();
// Kết nối đến cơ sở dữ liệu SQLite 3
let db = new sqlite3.Database('/Applications/ServBay/db/sqlite/your_database.db', (err) => {
if (err) {
console.error(err.message);
}
console.log('Đã kết nối đến cơ sở dữ liệu SQLite.');
});
// Tạo bảng
db.run(`CREATE TABLE IF NOT EXISTS mytable (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
)`);
// Thêm dữ liệu
db.run(`INSERT INTO mytable (name) VALUES (?)`, ['Alice'], function(err) {
if (err) {
return console.error(err.message);
}
console.log(`Một dòng đã được chèn với rowid ${this.lastID}`);
});
// Truy vấn dữ liệu
db.all(`SELECT * FROM mytable`, [], (err, rows) => {
if (err) {
throw err;
}
rows.forEach((row) => {
console.log(row.id, row.name);
});
});
// Đóng kết nối cơ sở dữ liệu
db.close((err) => {
if (err) {
console.error(err.message);
}
console.log('Đã đóng kết nối cơ sở dữ liệu.');
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Quản lý cơ sở dữ liệu
Các thao tác cơ bản
Tạo bảng:
sqlCREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT);
1Thêm dữ liệu:
sqlINSERT INTO mytable (name) VALUES ('Alice');
1Truy vấn dữ liệu:
sqlSELECT * FROM mytable;
1Cập nhật dữ liệu:
sqlUPDATE mytable SET name = 'Bob' WHERE id = 1;
1Xóa dữ liệu:
sqlDELETE FROM mytable WHERE id = 1;
1
Sao lưu và khôi phục
Sao lưu cơ sở dữ liệu
Cơ sở dữ liệu SQLite 3 được lưu trữ trong một tệp đơn lẻ, việc sao lưu chỉ cần sao chép tệp này. Khuyến nghị lưu trữ tệp sao lưu trong thư mục sau:
/Applications/ServBay/backup/sqlite
Sử dụng công cụ dòng lệnh để sao chép tệp cơ sở dữ liệu cho việc sao lưu:
cp /Applications/ServBay/db/sqlite/your_database.db /Applications/ServBay/backup/sqlite/your_database_backup.db
Khôi phục cơ sở dữ liệu
Sao chép tệp sao lưu trở lại vị trí gốc để khôi phục:
cp /Applications/ServBay/backup/sqlite/your_database_backup.db /Applications/ServBay/db/sqlite/your_database.db
Tối ưu hiệu suất
SQLite 3 cung cấp nhiều tùy chọn tối ưu hiệu suất, dưới đây là một số phương pháp tối ưu thông dụng.
Tối ưu chỉ số
Đảm bảo tạo chỉ số cho các cột được truy vấn thường xuyên. Ví dụ:
CREATE INDEX idx_name ON mytable(name);
Tối ưu truy vấn
Sử dụng lệnh EXPLAIN
để phân tích hiệu suất truy vấn, và thực hiện các tối ưu tương ứng. Ví dụ:
EXPLAIN QUERY PLAN SELECT * FROM mytable WHERE name = 'Alice';
Tối ưu cấu hình
Điều chỉnh các tham số PRAGMA của SQLite 3 để nâng cao hiệu suất. Ví dụ, bật chế độ đồng bộ để cải thiện hiệu suất ghi:
PRAGMA synchronous = OFF;
Quản lý an toàn
Đảm bảo tính an toàn của cơ sở dữ liệu là rất quan trọng, dưới đây là một số khuyến nghị quản lý an toàn.
Quyền tệp
Đảm bảo quyền của tệp cơ sở dữ liệu SQLite 3 được thiết lập đúng cách để ngăn truy cập trái phép. Ví dụ:
chmod 600 /Applications/ServBay/db/sqlite/your_database.db
Mã hóa dữ liệu
SQLite 3 hỗ trợ mã hóa cơ sở dữ liệu, bạn có thể sử dụng các phần mở rộng mã hóa SQLite (như SQLCipher) để mã hóa cơ sở dữ liệu.
Các vấn đề thường gặp và giải pháp
Không thể kết nối đến cơ sở dữ liệu SQLite 3
Kiểm tra đường dẫn tệp cơ sở dữ liệu: Đảm bảo đường dẫn tệp cơ sở dữ liệu đúng và tệp tồn tại.
Kiểm tra quyền tệp: Đảm bảo quyền của tệp cơ sở dữ liệu cho phép các thao tác đọc ghi.
Cơ sở dữ liệu bị khóa
Kiểm tra truy cập đồng thời: Đảm bảo không có tiến trình khác đang truy cập cơ sở dữ liệu, SQLite 3 sẽ khóa cơ sở dữ liệu khi thực hiện thao tác ghi.
Sử dụng chế độ WAL: Bật chế độ WAL (Write-Ahead Logging) để cải thiện hiệu suất truy cập đồng thời:
sqlPRAGMA journal_mode = WAL;
1
Tổng kết
SQLite 3 là một hệ quản trị cơ sở dữ liệu nhúng mạnh mẽ và linh hoạt, ServBay đi kèm với SQLite 3, giúp việc quản lý và sử dụng cơ sở dữ liệu trở nên thuận tiện hơn. Thông qua bài viết này, bạn có thể dễ dàng thực hiện cài đặt, cấu hình, kết nối, quản lý, sao lưu, khôi phục và tối ưu hiệu suất SQLite 3, đảm bảo cơ sở dữ liệu hoạt động hiệu quả và an toàn.