MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Lập phiên bản dữ liệu tự động trong máy chủ MariaDB 10.3

MariaDB Server 10.3 đi kèm với một tính năng mới, rất hữu ích sẽ giúp dễ dàng thiết kế nhiều ứng dụng. Phiên bản dữ liệu là quan trọng đối với một số quan điểm. Việc tuân thủ có thể yêu cầu bạn cần lưu trữ các thay đổi dữ liệu. Đối với các truy vấn phân tích, bạn có thể muốn xem dữ liệu tại một thời điểm cụ thể và cho mục đích kiểm toán, những thay đổi nào đã được thực hiện và khi nào là quan trọng. Ngoài ra, trong trường hợp một bảng bị xóa, nó có thể có giá trị lớn để khôi phục nó từ lịch sử. Máy chủ MariaDB hiện bao gồm một tính năng có tên là Bảng phiên bản hệ thống, dựa trên đặc điểm kỹ thuật trong tiêu chuẩn SQL:2011. Nó cung cấp phiên bản tự động của dữ liệu bảng.

Tôi sẽ giới thiệu khái niệm về Bảng được tạo phiên bản hệ thống bằng một ví dụ rất đơn giản, sẽ cho bạn thấy tất cả nội dung của nó. Hãy bắt đầu bằng cách tạo cơ sở dữ liệu và bảng.

CREATE DATABASE Company; 

CREATE TABLE Person (
  Id int(11) NOT NULL AUTO_INCREMENT,
  FirstName varchar(50) NOT NULL,
  LastName varchar(50) NOT NULL,
  Gender char(1) NOT NULL,
  DepartmentId int(11) NOT NULL,
  PRIMARY KEY (Id),
  CONSTRAINT con_gender CHECK (Gender in ('f','m')))
WITH SYSTEM VERSIONING;

Nó trông giống hệt như trước đây ngoại trừ tùy chọn bảng cuối cùng VỚI SYSTEM_VERSIONING, bật tính năng lập phiên bản tự động trên bảng. Hãy xem nó hoạt động như thế nào bằng cách chèn một hàng vào bảng.

MariaDB [Company]> INSERT INTO Person (FirstName, LastName, Gender, DepartmentId) VALUES ('Rasmus', 'Johansson', 'm', 1);
Query OK, 1 row affected (0.002 sec)

MariaDB [Company]> SELECT * FROM Person;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            1 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

Ở đó, chúng tôi có tôi như một hàng trong một bảng. Phần thú vị bắt đầu khi chúng tôi cập nhật các hàng. Tôi sẽ thay đổi phòng ban một vài lần.

MariaDB [Company]> UPDATE Person SET DepartmentId = 2 WHERE Id = 1;                                      Query OK, 1 row affected (0.002 sec)
Rows matched: 1  Changed: 1  Inserted: 1  Warnings: 0

MariaDB [Company]> SELECT * FROM Person;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            2 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

MariaDB [Company]> UPDATE Person SET DepartmentId = 3 WHERE Id = 1;
Query OK, 1 row affected (0.003 sec)
Rows matched: 1  Changed: 1  Inserted: 1  Warnings: 0

MariaDB [Company]> SELECT * FROM Person;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            3 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

Như bạn có thể thấy Máy chủ MariaDB cho biết rằng có 1 hàng được thay đổi cho mỗi bản cập nhật như bình thường, nhưng cũng có 1 hàng được chèn vào, điều này sẽ không xảy ra đối với một bảng không có phiên bản. Mỗi bản cập nhật tạo ra một phiên bản mới của hàng, phiên bản này phải được chèn vào bảng. Như bạn cũng thấy ở trên, một SELECT bình thường sẽ chỉ hiển thị phiên bản mới nhất. Để xem tất cả các phiên bản của hàng Máy chủ MariaDB cung cấp cú pháp sau.

MariaDB [Company]> SELECT * FROM Person FOR SYSTEM_TIME ALL;
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            1 |
|  1 | Rasmus    | Johansson | m      |            2 |
|  1 | Rasmus    | Johansson | m      |            3 |
+----+-----------+-----------+--------+--------------+
3 rows in set (0.001 sec)

Để có thể biết khi nào các hàng đã được cập nhật, chúng tôi muốn bao gồm hai cột ẩn được tạo bởi phiên bản tự động. Invisible Columns là một tính năng mới thú vị khác của MariaDB Server 10.3. Các cột vô hình của lập phiên bản tự động là ROW_START và ROW_END. Chúng xác định khoảng thời gian mà phiên bản của hàng là hợp lệ.

MariaDB [Company]> SELECT *, ROW_START, ROW_END FROM Person FOR SYSTEM_TIME ALL;
+----+-----------+-----------+--------+--------------+----------------------------+----------------------------+
| Id | FirstName | LastName  | Gender | DepartmentId | ROW_START                  | ROW_END                    |
+----+-----------+-----------+--------+--------------+----------------------------+----------------------------+
|  1 | Rasmus    | Johansson | m      |            1 | 2018-05-03 07:21:12.386980 | 2018-05-03 07:22:29.188266 |
|  1 | Rasmus    | Johansson | m      |            2 | 2018-05-03 07:22:29.188266 | 2018-05-03 07:22:47.596481 |
|  1 | Rasmus    | Johansson | m      |            3 | 2018-05-03 07:22:47.596481 | 2038-01-19 03:14:07.999999 |
+----+-----------+-----------+--------+--------------+----------------------------+----------------------------+
3 rows in set (0.000 sec)

Điều thú vị bây giờ là thực hiện các truy vấn thời gian để truy xuất chính xác bảng trông như thế nào vào một ngày và giờ cụ thể. Chúng tôi có thể làm điều này bằng cách sử dụng cú pháp AS OF:

MariaDB [Company]> SELECT * FROM Person FOR SYSTEM_TIME AS OF TIMESTAMP '2018-05-03 07:22:33';
+----+-----------+-----------+--------+--------------+
| Id | FirstName | LastName  | Gender | DepartmentId |
+----+-----------+-----------+--------+--------------+
|  1 | Rasmus    | Johansson | m      |            2 |
+----+-----------+-----------+--------+--------------+
1 row in set (0.001 sec)

Đây chỉ là một cái nhìn sơ lược về Bảng phiên bản hệ thống. Ngoài các ví dụ được hiển thị ở trên, bạn có thể đặt lịch sử trên các phân vùng riêng biệt vì lý do hiệu suất, loại trừ các cột khỏi lập phiên bản và hơn thế nữa.

Đọc thêm về Bảng phiên bản hệ thống trong tài liệu MariaDB. Tải xuống Máy chủ MariaDB 10.3 như một phần của bản tải xuống MariaDB TX 3.0 - hiện đã có.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách TO_BASE64 () hoạt động trong MariaDB

  2. Xử lý các giao dịch lớn với tính năng sao chép trực tuyến và MariaDB 10.4

  3. Cách hoạt động của nhà điều hành Modulo trong MariaDB

  4. Cách DAYOFYEAR () hoạt động trong MariaDB

  5. Trả lại Ngôn ngữ được sử dụng cho các Hàm Ngày &Giờ trong MariaDB