0

Apache Derby Bài 06: Thực hành công cụ ij: Kết nối và tạo cơ sở dữ liệu đầu tiên

1. Công cụ ij là gì?

ij là tiện ích giao diện dòng lệnh tương tác (Interactive SQL Tool) được tích hợp sẵn trong Apache Derby. Nó đóng vai trò như một client JDBC độc lập, cho phép bạn:

  • Kết nối tới cơ sở dữ liệu ở cả hai chế độ (Embedded Mode và Network Server Mode).

  • Thực thi trực tiếp các câu lệnh DDL (CREATE, ALTER, DROP) và DML (SELECT, INSERT, UPDATE, DELETE).

  • Chạy kịch bản SQL từ các tệp .sql bên ngoài.

  • Kiểm tra cấu hình kết nối, schema và quyền truy cập nhanh chóng mà không cần viết mã nguồn Java.

2. Khởi động ij

Mở Terminal (Linux/macOS) hoặc Command Prompt/PowerShell (Windows) và gõ:

Bash

ij

Lưu ý: Nếu lệnh báo lỗi không tìm thấy, hãy đảm bảo biến môi trường DERBY_HOME và đường dẫn %DERBY_HOME%\bin (hoặc $DERBY_HOME/bin) đã được thiết lập chính xác như ở Bài 04. Bạn cũng có thể chạy trực tiếp bằng lệnh Java: java -jar %DERBY_HOME%/lib/derbyrun.jar ij.

Khi khởi động thành công, màn hình sẽ hiển thị thông tin phiên bản và dấu nhắc lệnh đặc trưng:

Plaintext

ij version 10.17
ij> 

3. Tạo cơ sở dữ liệu đầu tiên (Embedded Mode)

Trong Apache Derby, cơ sở dữ liệu không cần tạo trước thông qua các dịch vụ quản trị máy chủ. Thay vào đó, bạn tạo cơ sở dữ liệu mới bằng cách thêm thuộc tính ;create=true vào cuối chuỗi JDBC URL.

Tại dấu nhắc ij>, nhập lệnh sau (kết thúc lệnh luôn có dấu chấm phẩy ;):

SQL

CONNECT 'jdbc:derby:firstdb;create=true';

+-----------------------------------------------------------------------+
|  ij> CONNECT 'jdbc:derby:firstdb;create=true';                        |
+-----------------------------------------------------------------------+
                                  |
                                  v
+-----------------------------------------------------------------------+
|  1. Derby kiểm tra thư mục 'firstdb' đã tồn tại hay chưa.            |
|  2. Do chưa có và có cờ 'create=true', Derby khởi tạo cấu trúc thư mục|
|     mới trên đĩa ngay tại vị trí đang mở Terminal.                    |
|  3. Thiết lập kết nối hoạt động (active session).                     |
+-----------------------------------------------------------------------+

Nếu không có thông báo lỗi xuất hiện và con trỏ quay lại ij>, kết nối và việc tạo database đã hoàn tất thành công.

4. Giải phẫu cấu trúc thư mục Database trên ổ đĩa

Thoát ra ngoài kiểm tra thư mục hiện hành nơi bạn vừa chạy lệnh ij, bạn sẽ thấy một thư mục mới mang tên firstdb vừa được sinh ra cùng một tệp nhật ký derby.log:

Plaintext

.
├── derby.log             # Nhật ký ghi lại các sự kiện khởi động, tắt và cảnh báo của engine
└── firstdb/              # Thư mục chứa toàn bộ dữ liệu của database
    ├── db.lck            # Tệp khóa tiến trình (ngăn chặn JVM khác ghi đè khi đang mở)
    ├── log/              # Chứa các file Write-Ahead Log (.dat) phục vụ khôi phục giao dịch
    ├── seg0/             # Chứa dữ liệu thực tế của các bảng, chỉ mục (được lưu theo định dạng trang nhị phân)
    └── service.properties # Cấu hình nội bộ của database (phiên bản schema, thuật toán mã hóa...)

Cảnh báo về db.lck: Tuyệt đối không xóa hoặc chỉnh sửa file db.lck bằng tay khi ứng dụng đang chạy. Đây là cơ chế bảo vệ cốt lõi của Derby trong chế độ Embedded.

5. Thao tác dữ liệu cơ bản ngay trong ij

Bây giờ bạn có thể thực thi các câu lệnh SQL tiêu chuẩn để kiểm tra hoạt động của firstdb:

1. Tạo bảng (CREATE TABLE)

SQL

CREATE TABLE sinh_vien (
    id INT PRIMARY KEY,
    ho_ten VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE,
    ngay_tao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. Chèn dữ liệu mẫu (INSERT)

SQL

INSERT INTO sinh_vien (id, ho_ten, email) VALUES 
(1, 'Nguyen Van A', 'nguyenvana@example.com'),
(2, 'Tran Thi B', 'tranthib@example.com');

3. Truy vấn dữ liệu (SELECT)

SQL

SELECT * FROM sinh_vien;

Kết quả trả về hiển thị dưới dạng bảng văn bản trực quan:

Plaintext

ID         |HO_TEN                                                                                          |EMAIL                                                                                           |NGAY_TAO                  
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1          |Nguyen Van A                                                                                    |nguyenvana@example.com                                                                          |2026-10-09 07:24:00.0     
2          |Tran Thi B                                                                                      |tranthib@example.com                                                                            |2026-10-09 07:24:00.0     

2 rows selected

6. Ngắt kết nối và đóng công cụ ij

Khi làm việc trong chế độ Embedded Mode, để cơ sở dữ liệu giải phóng bộ nhớ đệm và đóng file log an toàn, bạn nên ngắt kết nối trước khi đóng công cụ:

SQL

DISCONNECT;

Để đóng hoàn toàn công cụ ij và quay trở lại màn hình shell của hệ điều hành, nhập:

SQL

EXIT;

7. Tổng kết

  • Tiện ích ij là công cụ tương tác chính giúp bạn giao tiếp trực tiếp với Derby mà không cần viết mã Java.

  • Cơ sở dữ liệu Derby được tạo tự động thông qua chuỗi kết nối với tham số ;create=true.

  • Một database trong Derby bản chất là một thư mục vật lý trên ổ đĩa chứa các phân vùng quản lý dữ liệu (seg0/), nhật ký giao dịch (log/) và file khóa tiến trình (db.lck).

Bài tiếp theo sẽ đi sâu vào việc giải mã toàn diện các tham số trong chuỗi kết nối: Apache Derby Bài 07: Cú pháp kết nối JDBC URL: jdbc:derby:dbname;create=true và các tham số quan trọng.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí